OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
| 5 #include "base/command_line.h" |
5 #include "base/macros.h" | 6 #include "base/macros.h" |
6 #include "base/strings/stringprintf.h" | 7 #include "base/strings/stringprintf.h" |
7 #include "content/public/browser/web_contents_delegate.h" | 8 #include "content/public/browser/web_contents_delegate.h" |
8 #include "content/public/test/browser_test_utils.h" | 9 #include "content/public/test/browser_test_utils.h" |
9 #include "extensions/browser/guest_view/web_view/web_view_apitest.h" | 10 #include "extensions/browser/guest_view/web_view/web_view_apitest.h" |
10 #include "extensions/test/extension_test_message_listener.h" | 11 #include "extensions/test/extension_test_message_listener.h" |
| 12 #include "media/base/media_switches.h" |
11 | 13 |
12 namespace { | 14 namespace { |
13 | 15 |
14 // This class intercepts media access request from the embedder. The request | 16 // This class intercepts media access request from the embedder. The request |
15 // should be triggered only if the embedder API (from tests) allows the request | 17 // should be triggered only if the embedder API (from tests) allows the request |
16 // in Javascript. | 18 // in Javascript. |
17 // We do not issue the actual media request; the fact that the request reached | 19 // We do not issue the actual media request; the fact that the request reached |
18 // embedder's WebContents is good enough for our tests. This is also to make | 20 // embedder's WebContents is good enough for our tests. This is also to make |
19 // the test run successfully on trybots. | 21 // the test run successfully on trybots. |
20 class MockWebContentsDelegate : public content::WebContentsDelegate { | 22 class MockWebContentsDelegate : public content::WebContentsDelegate { |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
73 | 75 |
74 // Runs media_access tests. | 76 // Runs media_access tests. |
75 void RunTest(const std::string& test_name) { | 77 void RunTest(const std::string& test_name) { |
76 ExtensionTestMessageListener test_run_listener("TEST_PASSED", false); | 78 ExtensionTestMessageListener test_run_listener("TEST_PASSED", false); |
77 test_run_listener.set_failure_message("TEST_FAILED"); | 79 test_run_listener.set_failure_message("TEST_FAILED"); |
78 EXPECT_TRUE(content::ExecuteScript( | 80 EXPECT_TRUE(content::ExecuteScript( |
79 embedder_web_contents_, | 81 embedder_web_contents_, |
80 base::StringPrintf("runTest('%s');", test_name.c_str()))); | 82 base::StringPrintf("runTest('%s');", test_name.c_str()))); |
81 ASSERT_TRUE(test_run_listener.WaitUntilSatisfied()); | 83 ASSERT_TRUE(test_run_listener.WaitUntilSatisfied()); |
82 } | 84 } |
| 85 |
| 86 void SetUpCommandLine(base::CommandLine* command_line) override { |
| 87 // Enable fake devices to make sure there is at least one device in the |
| 88 // system. Otherwise, this test would fail on machines without physical |
| 89 // media devices since getUserMedia fails early in those cases. |
| 90 WebViewAPITest::SetUpCommandLine(command_line); |
| 91 command_line->AppendSwitch(switches::kUseFakeDeviceForMediaStream); |
| 92 } |
83 }; | 93 }; |
84 | 94 |
85 IN_PROC_BROWSER_TEST_F(WebViewMediaAccessAPITest, TestAllow) { | 95 IN_PROC_BROWSER_TEST_F(WebViewMediaAccessAPITest, TestAllow) { |
86 std::string app_location = "web_view/media_access/allow"; | 96 std::string app_location = "web_view/media_access/allow"; |
87 StartTestServer(app_location); | 97 StartTestServer(app_location); |
88 LaunchApp(app_location); | 98 LaunchApp(app_location); |
89 | 99 |
90 std::unique_ptr<MockWebContentsDelegate> mock(new MockWebContentsDelegate()); | 100 std::unique_ptr<MockWebContentsDelegate> mock(new MockWebContentsDelegate()); |
91 embedder_web_contents_->SetDelegate(mock.get()); | 101 embedder_web_contents_->SetDelegate(mock.get()); |
92 | 102 |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 TestNoPreventDefaultImpliesDeny) { | 202 TestNoPreventDefaultImpliesDeny) { |
193 std::string app_location = "web_view/media_access/deny"; | 203 std::string app_location = "web_view/media_access/deny"; |
194 StartTestServer(app_location); | 204 StartTestServer(app_location); |
195 LaunchApp(app_location); | 205 LaunchApp(app_location); |
196 | 206 |
197 RunTest("testNoPreventDefaultImpliesDeny"); | 207 RunTest("testNoPreventDefaultImpliesDeny"); |
198 StopTestServer(); | 208 StopTestServer(); |
199 } | 209 } |
200 | 210 |
201 } // namespace extensions | 211 } // namespace extensions |
OLD | NEW |