OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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/command_line.h" |
6 #include "base/macros.h" | 6 #include "base/macros.h" |
7 #include "chrome/browser/extensions/extension_apitest.h" | 7 #include "chrome/browser/extensions/extension_apitest.h" |
8 #include "chrome/browser/permissions/permission_request_manager.h" | 8 #include "chrome/browser/permissions/permission_request_manager.h" |
9 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 9 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
10 #include "chrome/test/base/ui_test_utils.h" | 10 #include "chrome/test/base/ui_test_utils.h" |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
53 WebRtcFromWebAccessibleResourceTest() {} | 53 WebRtcFromWebAccessibleResourceTest() {} |
54 ~WebRtcFromWebAccessibleResourceTest() override {} | 54 ~WebRtcFromWebAccessibleResourceTest() override {} |
55 | 55 |
56 // InProcessBrowserTest: | 56 // InProcessBrowserTest: |
57 void SetUpCommandLine(base::CommandLine* command_line) override { | 57 void SetUpCommandLine(base::CommandLine* command_line) override { |
58 ExtensionApiTest::SetUpCommandLine(command_line); | 58 ExtensionApiTest::SetUpCommandLine(command_line); |
59 | 59 |
60 command_line->AppendSwitch(switches::kUseFakeDeviceForMediaStream); | 60 command_line->AppendSwitch(switches::kUseFakeDeviceForMediaStream); |
61 } | 61 } |
62 | 62 |
| 63 void SetUpOnMainThread() override { |
| 64 ExtensionApiTest::SetUpOnMainThread(); |
| 65 host_resolver()->AddRule("a.com", "127.0.0.1"); |
| 66 } |
| 67 |
63 protected: | 68 protected: |
64 GURL GetTestServerInsecureUrl(const std::string& path) { | 69 GURL GetTestServerInsecureUrl(const std::string& path) { |
65 GURL url = embedded_test_server()->GetURL(path); | 70 GURL url = embedded_test_server()->GetURL(path); |
66 | 71 |
67 GURL::Replacements replace_host_and_scheme; | 72 GURL::Replacements replace_host_and_scheme; |
68 replace_host_and_scheme.SetHostStr("a.com"); | 73 replace_host_and_scheme.SetHostStr("a.com"); |
69 replace_host_and_scheme.SetSchemeStr("http"); | 74 replace_host_and_scheme.SetSchemeStr("http"); |
70 url = url.ReplaceComponents(replace_host_and_scheme); | 75 url = url.ReplaceComponents(replace_host_and_scheme); |
71 | 76 |
72 return url; | 77 return url; |
73 } | 78 } |
74 | 79 |
75 void LoadTestExtension() { | 80 void LoadTestExtension() { |
76 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII( | 81 ASSERT_TRUE(LoadExtension(test_data_dir_.AppendASCII( |
77 "webrtc_from_web_accessible_resource"))); | 82 "webrtc_from_web_accessible_resource"))); |
78 } | 83 } |
79 | 84 |
80 private: | 85 private: |
81 DISALLOW_COPY_AND_ASSIGN(WebRtcFromWebAccessibleResourceTest); | 86 DISALLOW_COPY_AND_ASSIGN(WebRtcFromWebAccessibleResourceTest); |
82 }; | 87 }; |
83 | 88 |
84 // Verify that a chrome-extension:// web accessible URL can successfully access | 89 // Verify that a chrome-extension:// web accessible URL can successfully access |
85 // getUserMedia(), even if it is embedded in an insecure context. | 90 // getUserMedia(), even if it is embedded in an insecure context. |
86 IN_PROC_BROWSER_TEST_F(WebRtcFromWebAccessibleResourceTest, | 91 IN_PROC_BROWSER_TEST_F(WebRtcFromWebAccessibleResourceTest, |
87 GetUserMediaInWebAccessibleResourceSuccess) { | 92 GetUserMediaInWebAccessibleResourceSuccess) { |
88 host_resolver()->AddRule("a.com", "127.0.0.1"); | |
89 ASSERT_TRUE(StartEmbeddedTestServer()); | 93 ASSERT_TRUE(StartEmbeddedTestServer()); |
90 | 94 |
91 LoadTestExtension(); | 95 LoadTestExtension(); |
92 GURL url = GetTestServerInsecureUrl("/extensions/test_file.html?succeed"); | 96 GURL url = GetTestServerInsecureUrl("/extensions/test_file.html?succeed"); |
93 content::WebContents* web_contents = | 97 content::WebContents* web_contents = |
94 browser()->tab_strip_model()->GetActiveWebContents(); | 98 browser()->tab_strip_model()->GetActiveWebContents(); |
95 PermissionRequestManager* request_manager = | 99 PermissionRequestManager* request_manager = |
96 PermissionRequestManager::FromWebContents(web_contents); | 100 PermissionRequestManager::FromWebContents(web_contents); |
97 request_manager->set_auto_response_for_test( | 101 request_manager->set_auto_response_for_test( |
98 PermissionRequestManager::ACCEPT_ALL); | 102 PermissionRequestManager::ACCEPT_ALL); |
99 PermissionRequestObserver permission_request_observer(web_contents); | 103 PermissionRequestObserver permission_request_observer(web_contents); |
100 extensions::ResultCatcher catcher; | 104 extensions::ResultCatcher catcher; |
101 ui_test_utils::NavigateToURL(browser(), url); | 105 ui_test_utils::NavigateToURL(browser(), url); |
102 | 106 |
103 ASSERT_TRUE(catcher.GetNextResult()); | 107 ASSERT_TRUE(catcher.GetNextResult()); |
104 EXPECT_TRUE(permission_request_observer.request_shown()); | 108 EXPECT_TRUE(permission_request_observer.request_shown()); |
105 } | 109 } |
106 | 110 |
107 // Verify that a chrome-extension:// web accessible URL will fail to access | 111 // Verify that a chrome-extension:// web accessible URL will fail to access |
108 // getUserMedia() if it is denied by the permission request, even if it is | 112 // getUserMedia() if it is denied by the permission request, even if it is |
109 // embedded in an insecure context. | 113 // embedded in an insecure context. |
110 IN_PROC_BROWSER_TEST_F(WebRtcFromWebAccessibleResourceTest, | 114 IN_PROC_BROWSER_TEST_F(WebRtcFromWebAccessibleResourceTest, |
111 GetUserMediaInWebAccessibleResourceFail) { | 115 GetUserMediaInWebAccessibleResourceFail) { |
112 host_resolver()->AddRule("a.com", "127.0.0.1"); | |
113 ASSERT_TRUE(StartEmbeddedTestServer()); | 116 ASSERT_TRUE(StartEmbeddedTestServer()); |
114 | 117 |
115 LoadTestExtension(); | 118 LoadTestExtension(); |
116 GURL url = GetTestServerInsecureUrl("/extensions/test_file.html?fail"); | 119 GURL url = GetTestServerInsecureUrl("/extensions/test_file.html?fail"); |
117 content::WebContents* web_contents = | 120 content::WebContents* web_contents = |
118 browser()->tab_strip_model()->GetActiveWebContents(); | 121 browser()->tab_strip_model()->GetActiveWebContents(); |
119 PermissionRequestManager* request_manager = | 122 PermissionRequestManager* request_manager = |
120 PermissionRequestManager::FromWebContents(web_contents); | 123 PermissionRequestManager::FromWebContents(web_contents); |
121 request_manager->set_auto_response_for_test( | 124 request_manager->set_auto_response_for_test( |
122 PermissionRequestManager::DENY_ALL); | 125 PermissionRequestManager::DENY_ALL); |
123 PermissionRequestObserver permission_request_observer(web_contents); | 126 PermissionRequestObserver permission_request_observer(web_contents); |
124 extensions::ResultCatcher catcher; | 127 extensions::ResultCatcher catcher; |
125 ui_test_utils::NavigateToURL(browser(), url); | 128 ui_test_utils::NavigateToURL(browser(), url); |
126 | 129 |
127 ASSERT_TRUE(catcher.GetNextResult()); | 130 ASSERT_TRUE(catcher.GetNextResult()); |
128 EXPECT_TRUE(permission_request_observer.request_shown()); | 131 EXPECT_TRUE(permission_request_observer.request_shown()); |
129 } | 132 } |
130 | 133 |
131 } // namespace extensions | 134 } // namespace extensions |
OLD | NEW |