diff options
author | perkj@chromium.org <perkj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-31 17:08:09 +0000 |
---|---|---|
committer | perkj@chromium.org <perkj@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-10-31 17:08:09 +0000 |
commit | 66fde6594a8d0df3744ef199d966fde0e0a31221 (patch) | |
tree | 754a789aa6502541aa94b3ee7c205b0e48a0339b | |
parent | 1986b0dab1e987c0b8785274ca9738f32b9f70f9 (diff) | |
download | chromium_src-66fde6594a8d0df3744ef199d966fde0e0a31221.zip chromium_src-66fde6594a8d0df3744ef199d966fde0e0a31221.tar.gz chromium_src-66fde6594a8d0df3744ef199d966fde0e0a31221.tar.bz2 |
Fix Media stream infobar sometimes doesn't show up after page reload
BUG=158512
TEST= pyautotest webrtc_brutality_test.WebrtcBrutalityTest.testReloadsAfterGetUserMedia and the reproduction steps in 158512
Review URL: https://chromiumcodereview.appspot.com/11364005
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@165181 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r-- | content/renderer/media/media_stream_impl.cc | 6 | ||||
-rw-r--r-- | content/renderer/media/mock_media_stream_dispatcher.cc | 5 | ||||
-rw-r--r-- | content/renderer/media/mock_media_stream_dispatcher.h | 1 |
3 files changed, 10 insertions, 2 deletions
diff --git a/content/renderer/media/media_stream_impl.cc b/content/renderer/media/media_stream_impl.cc index 99660e8..fc3c42f 100644 --- a/content/renderer/media/media_stream_impl.cc +++ b/content/renderer/media/media_stream_impl.cc @@ -495,11 +495,13 @@ void MediaStreamImpl::FrameWillClose(WebKit::WebFrame* frame) { // If the request is generated, it means that the MediaStreamDispatcher // has generated a stream for us and we need to let the // MediaStreamDispatcher know that the stream is no longer wanted. - // If not, we just delete the request object and handle - // the MediaStreamDispatcher event in OnStreamGenerated. + // If not, we cancel the request and delete the request object. if ((*request_it)->generated) { media_stream_dispatcher_->StopStream( UTF16ToUTF8((*request_it)->descriptor.label())); + } else { + media_stream_dispatcher_->CancelGenerateStream( + (*request_it)->request_id); } request_it = user_media_requests_.erase(request_it); } else { diff --git a/content/renderer/media/mock_media_stream_dispatcher.cc b/content/renderer/media/mock_media_stream_dispatcher.cc index e13c92a..142cf09 100644 --- a/content/renderer/media/mock_media_stream_dispatcher.cc +++ b/content/renderer/media/mock_media_stream_dispatcher.cc @@ -6,6 +6,7 @@ #include "base/stringprintf.h" #include "content/public/common/media_stream_request.h" +#include "testing/gtest/include/gtest/gtest.h" namespace content { @@ -48,6 +49,10 @@ void MockMediaStreamDispatcher::GenerateStream( ++request_stream_counter_; } +void MockMediaStreamDispatcher::CancelGenerateStream(int request_id) { + EXPECT_EQ(request_id, request_id_); +} + void MockMediaStreamDispatcher::StopStream(const std::string& label) { ++stop_stream_counter_; } diff --git a/content/renderer/media/mock_media_stream_dispatcher.h b/content/renderer/media/mock_media_stream_dispatcher.h index ebfb9dd..39d3410 100644 --- a/content/renderer/media/mock_media_stream_dispatcher.h +++ b/content/renderer/media/mock_media_stream_dispatcher.h @@ -23,6 +23,7 @@ class MockMediaStreamDispatcher : public MediaStreamDispatcher { const base::WeakPtr<MediaStreamDispatcherEventHandler>& event_handler, const StreamOptions& components, const GURL& url) OVERRIDE; + virtual void CancelGenerateStream(int request_id) OVERRIDE; virtual void StopStream(const std::string& label) OVERRIDE; virtual bool IsStream(const std::string& label) OVERRIDE; virtual int video_session_id(const std::string& label, int index) OVERRIDE; |