Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(414)

Unified Diff: content/browser/renderer_host/media/audio_renderer_host_unittest.cc

Issue 2396463002: Remove dangerous CHECK. Add unit test. (Closed)
Patch Set: Fix. Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « content/browser/renderer_host/media/audio_renderer_host.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/renderer_host/media/audio_renderer_host_unittest.cc
diff --git a/content/browser/renderer_host/media/audio_renderer_host_unittest.cc b/content/browser/renderer_host/media/audio_renderer_host_unittest.cc
index a8ab77f9bdd0cf3185b52883b4a1885ae1c872c7..5267e72eac21403adf044dc86c8db77f21d0048b 100644
--- a/content/browser/renderer_host/media/audio_renderer_host_unittest.cc
+++ b/content/browser/renderer_host/media/audio_renderer_host_unittest.cc
@@ -40,7 +40,10 @@ const int kRenderProcessId = 1;
const int kRenderFrameId = 5;
const int kStreamId = 50;
const char kSecurityOrigin[] = "http://localhost";
+const char kBadSecurityOrigin[] = "about:about";
const char kDefaultDeviceId[] = "";
+const char kNondefaultDeviceId[] =
+ "deadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef";
const char kBadDeviceId[] =
"badbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbadbad1";
const char kInvalidDeviceId[] = "invalid-device-id";
@@ -92,6 +95,7 @@ class MockAudioRendererHost : public AudioRendererHost {
}
// A list of mock methods.
+ MOCK_METHOD0(ShutdownForBadMessage, void());
MOCK_METHOD4(OnDeviceAuthorized,
void(int stream_id,
media::OutputDeviceStatus device_status,
@@ -203,6 +207,8 @@ class AudioRendererHostTest : public testing::Test {
MediaInternals::GetInstance(), media_stream_manager_.get(),
std::string());
+ EXPECT_CALL(*host_, ShutdownForBadMessage()).Times(0);
+
// Simulate IPC channel connected.
host_->set_peer_process_for_testing(base::Process::Current());
}
@@ -220,12 +226,13 @@ class AudioRendererHostTest : public testing::Test {
protected:
void Create() {
- Create(false, kDefaultDeviceId, url::Origin(GURL(kSecurityOrigin)));
+ Create(false, kDefaultDeviceId, url::Origin(GURL(kSecurityOrigin)), true);
}
void Create(bool unified_stream,
const std::string& device_id,
- const url::Origin& security_origin) {
+ const url::Origin& security_origin,
+ bool wait_for_auth) {
media::OutputDeviceStatus expected_device_status =
device_id == kDefaultDeviceId
? media::OUTPUT_DEVICE_STATUS_OK
@@ -257,18 +264,33 @@ class AudioRendererHostTest : public testing::Test {
}
host_->OnRequestDeviceAuthorization(kStreamId, kRenderFrameId, session_id,
device_id, security_origin);
- auth_run_loop_.Run();
- if (expected_device_status == media::OUTPUT_DEVICE_STATUS_OK) {
+ if (wait_for_auth)
+ auth_run_loop_.Run();
+
+ if (!wait_for_auth ||
+ expected_device_status == media::OUTPUT_DEVICE_STATUS_OK)
host_->OnCreateStream(kStreamId, kRenderFrameId, params);
+ if (expected_device_status == media::OUTPUT_DEVICE_STATUS_OK)
// At some point in the future, a corresponding RemoveDiverter() call must
// be made.
EXPECT_CALL(mirroring_manager_, RemoveDiverter(NotNull()))
.RetiresOnSaturation();
- }
SyncWithAudioThread();
}
+ void RequestDeviceAuthorizationWithBadOrigin(const std::string& device_id) {
+ int session_id = 0;
+ host_->OnRequestDeviceAuthorization(kStreamId, kRenderFrameId, session_id,
+ device_id,
+ url::Origin(GURL(kBadSecurityOrigin)));
+ SyncWithAudioThread();
+ }
+
+ void CreateWithoutWaitingForAuth(const std::string& device_id) {
+ Create(false, device_id, url::Origin(GURL(kSecurityOrigin)), false);
+ }
+
void CreateWithInvalidRenderFrameId() {
// When creating a stream with an invalid render frame ID, the host will
// reply with a stream error message.
@@ -343,6 +365,10 @@ class AudioRendererHostTest : public testing::Test {
run_loop.Run();
}
+ void ExpectShutdown() {
+ EXPECT_CALL(*host_, ShutdownForBadMessage()).Times(1);
+ }
+
private:
// MediaStreamManager uses a DestructionObserver, so it must outlive the
// TestBrowserThreadBundle.
@@ -417,17 +443,29 @@ TEST_F(AudioRendererHostTest, SimulateErrorAndClose) {
}
TEST_F(AudioRendererHostTest, CreateUnifiedStreamAndClose) {
- Create(true, kDefaultDeviceId, url::Origin(GURL(kSecurityOrigin)));
+ Create(true, kDefaultDeviceId, url::Origin(GURL(kSecurityOrigin)), true);
Close();
}
TEST_F(AudioRendererHostTest, CreateUnauthorizedDevice) {
- Create(false, kBadDeviceId, url::Origin(GURL(kSecurityOrigin)));
+ Create(false, kBadDeviceId, url::Origin(GURL(kSecurityOrigin)), true);
+ Close();
+}
+
+TEST_F(AudioRendererHostTest, CreateDeviceWithAuthorizationPendingIsError) {
+ ExpectShutdown();
+ CreateWithoutWaitingForAuth(kBadDeviceId);
+ Close();
+}
+
+TEST_F(AudioRendererHostTest, CreateDeviceWithBadSecurityOrigin) {
+ ExpectShutdown();
+ RequestDeviceAuthorizationWithBadOrigin(kNondefaultDeviceId);
Close();
}
TEST_F(AudioRendererHostTest, CreateInvalidDevice) {
- Create(false, kInvalidDeviceId, url::Origin(GURL(kSecurityOrigin)));
+ Create(false, kInvalidDeviceId, url::Origin(GURL(kSecurityOrigin)), true);
Close();
}
« no previous file with comments | « content/browser/renderer_host/media/audio_renderer_host.cc ('k') | tools/metrics/histograms/histograms.xml » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698