WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
133298
Add mock DTMFSender support
https://bugs.webkit.org/show_bug.cgi?id=133298
Summary
Add mock DTMFSender support
Kiran
Reported
2014-05-26 23:19:06 PDT
We are not able to test DTMFSender because of the lack of both actual implementation and MOCK implementation. This bug is to implement a mock implementation for DTMF sender for testing the default basic behavior.
Attachments
Implemented mock RTCDTMFSender
(12.20 KB, patch)
2014-05-28 23:26 PDT
,
Kiran
eric.carlson
: review-
Details
Formatted Diff
Diff
Implemented mock RTCDTMFSender
(12.59 KB, patch)
2014-05-29 23:58 PDT
,
Kiran
eric.carlson
: review+
Details
Formatted Diff
Diff
Implemented mock RTCDTMFSender
(12.56 KB, patch)
2014-06-01 21:29 PDT
,
Kiran
no flags
Details
Formatted Diff
Diff
Implemented mock RTCDTMFSender
(12.56 KB, patch)
2014-06-01 21:34 PDT
,
Kiran
no flags
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Kiran
Comment 1
2014-05-28 23:26:38 PDT
Created
attachment 232235
[details]
Implemented mock RTCDTMFSender Implemented mock RTCDTMFSender
Eric Carlson
Comment 2
2014-05-29 08:50:55 PDT
Comment on
attachment 232235
[details]
Implemented mock RTCDTMFSender View in context:
https://bugs.webkit.org/attachment.cgi?id=232235&action=review
> Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:36 > + : m_toneBuffer("")
This is unnecessary, the String default constructor will initialize this.
> Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:39 > + , m_insertDTMF(true)
Nit: this is never changed, why not just hard code canInsertDTMF() to return true?
> Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:48 > + if (!client) > + return; > + > + m_client = client;
This will leave m_client set to a bogus pointer when called from RTCDTMFSender::stop!
> Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:61 > +bool RTCDTMFSenderHandlerMock::insertDTMF(const String& tones, long duration, long interToneGap) > +{ > + m_duration = duration; > + m_interToneGap = interToneGap; > + m_toneBuffer.append(tones); > + m_client->didPlayTone(m_toneBuffer); > + m_toneBuffer.remove(0, 1); > + if (m_toneBuffer.isEmpty()) > + m_client->didPlayTone(""); > + return true; > +}
Two problems: this should be asynchronous, and it should process each character in tones.
> Source/WebCore/platform/mock/RTCPeerConnectionHandlerMock.cpp:173 > // Requires a mock implementation of RTCDTMFSenderHandler. > // This must be implemented once the mock implementation of RTCDataChannelHandler is ready. > notImplemented();
Are these still necessary?
> LayoutTests/fast/mediastream/RTCPeerConnection-dtmf.html:58 > dtmfsender.insertDTMF("1", "6000");
You should also test a multi-character dtmf string.
> LayoutTests/fast/mediastream/RTCPeerConnection-dtmf.html:65 > +//finishJSTest();
Oops :-O
Eric Carlson
Comment 3
2014-05-29 13:55:18 PDT
Comment on
attachment 232235
[details]
Implemented mock RTCDTMFSender View in context:
https://bugs.webkit.org/attachment.cgi?id=232235&action=review
>> Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:61 >> +} > > Two problems: this should be asynchronous, and it should process each character in tones.
Actually you don't need to make this asynchronous because RTCDTMFSender::didPlayTone will post each RTCDTMFToneChangeEvent asynchronously, but you should call m_client->didPlayTone() for each character in "tones". See
http://dev.w3.org/2011/webrtc/editor/webrtc.html#methods-4
.
Kiran
Comment 4
2014-05-29 23:58:12 PDT
Created
attachment 232282
[details]
Implemented mock RTCDTMFSender Modified as per the review comments :).
Eric Carlson
Comment 5
2014-05-30 11:59:15 PDT
Comment on
attachment 232282
[details]
Implemented mock RTCDTMFSender View in context:
https://bugs.webkit.org/attachment.cgi?id=232282&action=review
> Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:55 > + while (m_toneBuffer.length() > 0) { > + m_client->didPlayTone(m_toneBuffer.substring(0, 1)); > + m_toneBuffer.remove(0, 1); > + }
This is an extremely inefficient way to do this. If this processing was done asynchronously it would be necessary to modify m_toneBuffer each time through the loop, but nothing can access m_toneBuffer while this runs so something like this would be better: for (size_t i = 0; i < m_toneBuffer.length(); ++i) m_client->didPlayTone(m_toneBuffer[i]); m_toneBuffer = emptyString(); m_client->didPlayTone(emptyString());
> Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:56 > + if (m_toneBuffer.isEmpty())
Why this test, m_toneBuffer is empty because you just emptied it.
Kiran
Comment 6
2014-06-01 21:29:33 PDT
Created
attachment 232364
[details]
Implemented mock RTCDTMFSender Modified loop and now ready for landing.
WebKit Commit Bot
Comment 7
2014-06-01 21:32:11 PDT
Attachment 232364
[details]
did not pass style-queue: ERROR: Source/WebCore/platform/mock/RTCDTMFSenderHandlerMock.cpp:53: Missing space after , [whitespace/comma] [3] Total errors found: 1 in 8 files If any of these errors are false positives, please file a bug against check-webkit-style.
Kiran
Comment 8
2014-06-01 21:34:41 PDT
Created
attachment 232365
[details]
Implemented mock RTCDTMFSender Updated the loop. Now ready for landing.
WebKit Commit Bot
Comment 9
2014-06-02 03:56:07 PDT
Comment on
attachment 232365
[details]
Implemented mock RTCDTMFSender Clearing flags on attachment: 232365 Committed
r169528
: <
http://trac.webkit.org/changeset/169528
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug