OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/auto_reset.h" | 5 #include "base/auto_reset.h" |
6 #include "base/command_line.h" | 6 #include "base/command_line.h" |
7 #include "base/strings/utf_string_conversions.h" | 7 #include "base/strings/utf_string_conversions.h" |
8 #include "chrome/browser/content_settings/host_content_settings_map.h" | 8 #include "chrome/browser/content_settings/host_content_settings_map.h" |
9 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 9 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
10 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" | 10 #include "chrome/browser/custom_handlers/protocol_handler_registry.h" |
11 #include "chrome/browser/infobars/infobar_delegate.h" | 11 #include "chrome/browser/infobars/infobar_delegate.h" |
12 #include "chrome/browser/infobars/infobar_service.h" | 12 #include "chrome/browser/infobars/infobar_service.h" |
13 #include "chrome/browser/media/media_capture_devices_dispatcher.h" | |
14 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
15 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" | 14 #include "chrome/browser/ui/content_settings/content_setting_bubble_model.h" |
16 #include "chrome/common/chrome_switches.h" | 15 #include "chrome/common/chrome_switches.h" |
17 #include "chrome/common/content_settings.h" | 16 #include "chrome/common/content_settings.h" |
18 #include "chrome/test/base/chrome_render_view_host_test_harness.h" | 17 #include "chrome/test/base/chrome_render_view_host_test_harness.h" |
19 #include "chrome/test/base/testing_profile.h" | 18 #include "chrome/test/base/testing_profile.h" |
| 19 #include "content/public/browser/media_capture_devices.h" |
20 #include "content/public/browser/web_contents.h" | 20 #include "content/public/browser/web_contents.h" |
21 #include "content/public/test/web_contents_tester.h" | 21 #include "content/public/test/web_contents_tester.h" |
22 #include "grit/generated_resources.h" | 22 #include "grit/generated_resources.h" |
23 #include "testing/gtest/include/gtest/gtest.h" | 23 #include "testing/gtest/include/gtest/gtest.h" |
24 #include "ui/base/l10n/l10n_util.h" | 24 #include "ui/base/l10n/l10n_util.h" |
25 | 25 |
26 using content::WebContentsTester; | 26 using content::WebContentsTester; |
27 | 27 |
28 class ContentSettingBubbleModelTest : public ChromeRenderViewHostTestHarness { | 28 class ContentSettingBubbleModelTest : public ChromeRenderViewHostTestHarness { |
29 protected: | 29 protected: |
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
103 ASSERT_EQ(2U, bubble_content_2.radio_group.radio_items.size()); | 103 ASSERT_EQ(2U, bubble_content_2.radio_group.radio_items.size()); |
104 // TODO(bauerb): Update this once the strings have been updated. | 104 // TODO(bauerb): Update this once the strings have been updated. |
105 EXPECT_EQ(radio1, bubble_content_2.radio_group.radio_items[0]); | 105 EXPECT_EQ(radio1, bubble_content_2.radio_group.radio_items[0]); |
106 EXPECT_EQ(radio2, bubble_content_2.radio_group.radio_items[1]); | 106 EXPECT_EQ(radio2, bubble_content_2.radio_group.radio_items[1]); |
107 EXPECT_FALSE(bubble_content_2.custom_link.empty()); | 107 EXPECT_FALSE(bubble_content_2.custom_link.empty()); |
108 EXPECT_TRUE(bubble_content_2.custom_link_enabled); | 108 EXPECT_TRUE(bubble_content_2.custom_link_enabled); |
109 EXPECT_FALSE(bubble_content_2.manage_link.empty()); | 109 EXPECT_FALSE(bubble_content_2.manage_link.empty()); |
110 } | 110 } |
111 | 111 |
112 TEST_F(ContentSettingBubbleModelTest, MediastreamMicAndCamera) { | 112 TEST_F(ContentSettingBubbleModelTest, MediastreamMicAndCamera) { |
113 // Required to break dependency on BrowserMainLoop. | 113 content::MediaCaptureDevices::GetInstance()-> |
114 MediaCaptureDevicesDispatcher::GetInstance()-> | |
115 DisableDeviceEnumerationForTesting(); | 114 DisableDeviceEnumerationForTesting(); |
116 | 115 |
117 TabSpecificContentSettings* content_settings = | 116 TabSpecificContentSettings* content_settings = |
118 TabSpecificContentSettings::FromWebContents(web_contents()); | 117 TabSpecificContentSettings::FromWebContents(web_contents()); |
119 std::string request_host = "google.com"; | 118 std::string request_host = "google.com"; |
120 GURL security_origin("http://" + request_host); | 119 GURL security_origin("http://" + request_host); |
121 MediaStreamDevicesController::MediaStreamTypeSettingsMap | 120 MediaStreamDevicesController::MediaStreamTypeSettingsMap |
122 request_permissions; | 121 request_permissions; |
123 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | 122 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = |
124 MediaStreamDevicesController::MEDIA_ALLOWED; | 123 MediaStreamDevicesController::MEDIA_ALLOWED; |
(...skipping 19 matching lines...) Expand all Loading... |
144 l10n_util::GetStringUTF8( | 143 l10n_util::GetStringUTF8( |
145 IDS_ALLOWED_MEDIASTREAM_MIC_AND_CAMERA_BLOCK)); | 144 IDS_ALLOWED_MEDIASTREAM_MIC_AND_CAMERA_BLOCK)); |
146 EXPECT_EQ(0, bubble_content.radio_group.default_item); | 145 EXPECT_EQ(0, bubble_content.radio_group.default_item); |
147 EXPECT_TRUE(bubble_content.custom_link.empty()); | 146 EXPECT_TRUE(bubble_content.custom_link.empty()); |
148 EXPECT_FALSE(bubble_content.custom_link_enabled); | 147 EXPECT_FALSE(bubble_content.custom_link_enabled); |
149 EXPECT_FALSE(bubble_content.manage_link.empty()); | 148 EXPECT_FALSE(bubble_content.manage_link.empty()); |
150 EXPECT_EQ(2U, bubble_content.media_menus.size()); | 149 EXPECT_EQ(2U, bubble_content.media_menus.size()); |
151 } | 150 } |
152 | 151 |
153 TEST_F(ContentSettingBubbleModelTest, BlockedMediastreamMicAndCamera) { | 152 TEST_F(ContentSettingBubbleModelTest, BlockedMediastreamMicAndCamera) { |
154 // Required to break dependency on BrowserMainLoop. | 153 content::MediaCaptureDevices::GetInstance()-> |
155 MediaCaptureDevicesDispatcher::GetInstance()-> | |
156 DisableDeviceEnumerationForTesting(); | 154 DisableDeviceEnumerationForTesting(); |
157 | 155 |
158 WebContentsTester::For(web_contents())-> | 156 WebContentsTester::For(web_contents())-> |
159 NavigateAndCommit(GURL("https://www.example.com")); | 157 NavigateAndCommit(GURL("https://www.example.com")); |
160 GURL url = web_contents()->GetURL(); | 158 GURL url = web_contents()->GetURL(); |
161 | 159 |
162 HostContentSettingsMap* host_content_settings_map = | 160 HostContentSettingsMap* host_content_settings_map = |
163 profile()->GetHostContentSettingsMap(); | 161 profile()->GetHostContentSettingsMap(); |
164 ContentSettingsPattern primary_pattern = | 162 ContentSettingsPattern primary_pattern = |
165 ContentSettingsPattern::FromURL(url); | 163 ContentSettingsPattern::FromURL(url); |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
233 url, | 231 url, |
234 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, | 232 CONTENT_SETTINGS_TYPE_MEDIASTREAM_CAMERA, |
235 std::string())); | 233 std::string())); |
236 | 234 |
237 InfoBarService* infobar_service = | 235 InfoBarService* infobar_service = |
238 InfoBarService::FromWebContents(web_contents()); | 236 InfoBarService::FromWebContents(web_contents()); |
239 infobar_service->RemoveInfoBar(infobar_service->infobar_at(0)); | 237 infobar_service->RemoveInfoBar(infobar_service->infobar_at(0)); |
240 } | 238 } |
241 | 239 |
242 TEST_F(ContentSettingBubbleModelTest, MediastreamMic) { | 240 TEST_F(ContentSettingBubbleModelTest, MediastreamMic) { |
243 // Required to break dependency on BrowserMainLoop. | 241 content::MediaCaptureDevices::GetInstance()-> |
244 MediaCaptureDevicesDispatcher::GetInstance()-> | |
245 DisableDeviceEnumerationForTesting(); | 242 DisableDeviceEnumerationForTesting(); |
246 | 243 |
247 TabSpecificContentSettings* content_settings = | 244 TabSpecificContentSettings* content_settings = |
248 TabSpecificContentSettings::FromWebContents(web_contents()); | 245 TabSpecificContentSettings::FromWebContents(web_contents()); |
249 std::string request_host = "google.com"; | 246 std::string request_host = "google.com"; |
250 GURL security_origin("http://" + request_host); | 247 GURL security_origin("http://" + request_host); |
251 MediaStreamDevicesController::MediaStreamTypeSettingsMap | 248 MediaStreamDevicesController::MediaStreamTypeSettingsMap |
252 request_permissions; | 249 request_permissions; |
253 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = | 250 request_permissions[content::MEDIA_DEVICE_AUDIO_CAPTURE].permission = |
254 MediaStreamDevicesController::MEDIA_ALLOWED; | 251 MediaStreamDevicesController::MEDIA_ALLOWED; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
303 EXPECT_EQ(1, new_bubble_content.radio_group.default_item); | 300 EXPECT_EQ(1, new_bubble_content.radio_group.default_item); |
304 EXPECT_TRUE(new_bubble_content.custom_link.empty()); | 301 EXPECT_TRUE(new_bubble_content.custom_link.empty()); |
305 EXPECT_FALSE(new_bubble_content.custom_link_enabled); | 302 EXPECT_FALSE(new_bubble_content.custom_link_enabled); |
306 EXPECT_FALSE(new_bubble_content.manage_link.empty()); | 303 EXPECT_FALSE(new_bubble_content.manage_link.empty()); |
307 EXPECT_EQ(1U, new_bubble_content.media_menus.size()); | 304 EXPECT_EQ(1U, new_bubble_content.media_menus.size()); |
308 EXPECT_EQ(content::MEDIA_DEVICE_AUDIO_CAPTURE, | 305 EXPECT_EQ(content::MEDIA_DEVICE_AUDIO_CAPTURE, |
309 new_bubble_content.media_menus.begin()->first); | 306 new_bubble_content.media_menus.begin()->first); |
310 } | 307 } |
311 | 308 |
312 TEST_F(ContentSettingBubbleModelTest, MediastreamCamera) { | 309 TEST_F(ContentSettingBubbleModelTest, MediastreamCamera) { |
313 // Required to break dependency on BrowserMainLoop. | 310 content::MediaCaptureDevices::GetInstance()-> |
314 MediaCaptureDevicesDispatcher::GetInstance()-> | |
315 DisableDeviceEnumerationForTesting(); | 311 DisableDeviceEnumerationForTesting(); |
316 | 312 |
317 TabSpecificContentSettings* content_settings = | 313 TabSpecificContentSettings* content_settings = |
318 TabSpecificContentSettings::FromWebContents(web_contents()); | 314 TabSpecificContentSettings::FromWebContents(web_contents()); |
319 std::string request_host = "google.com"; | 315 std::string request_host = "google.com"; |
320 GURL security_origin("http://" + request_host); | 316 GURL security_origin("http://" + request_host); |
321 MediaStreamDevicesController::MediaStreamTypeSettingsMap | 317 MediaStreamDevicesController::MediaStreamTypeSettingsMap |
322 request_permissions; | 318 request_permissions; |
323 request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = | 319 request_permissions[content::MEDIA_DEVICE_VIDEO_CAPTURE].permission = |
324 MediaStreamDevicesController::MEDIA_ALLOWED; | 320 MediaStreamDevicesController::MEDIA_ALLOWED; |
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
373 EXPECT_EQ(1, new_bubble_content.radio_group.default_item); | 369 EXPECT_EQ(1, new_bubble_content.radio_group.default_item); |
374 EXPECT_TRUE(new_bubble_content.custom_link.empty()); | 370 EXPECT_TRUE(new_bubble_content.custom_link.empty()); |
375 EXPECT_FALSE(new_bubble_content.custom_link_enabled); | 371 EXPECT_FALSE(new_bubble_content.custom_link_enabled); |
376 EXPECT_FALSE(new_bubble_content.manage_link.empty()); | 372 EXPECT_FALSE(new_bubble_content.manage_link.empty()); |
377 EXPECT_EQ(1U, new_bubble_content.media_menus.size()); | 373 EXPECT_EQ(1U, new_bubble_content.media_menus.size()); |
378 EXPECT_EQ(content::MEDIA_DEVICE_VIDEO_CAPTURE, | 374 EXPECT_EQ(content::MEDIA_DEVICE_VIDEO_CAPTURE, |
379 new_bubble_content.media_menus.begin()->first); | 375 new_bubble_content.media_menus.begin()->first); |
380 } | 376 } |
381 | 377 |
382 TEST_F(ContentSettingBubbleModelTest, AccumulateMediastreamMicAndCamera) { | 378 TEST_F(ContentSettingBubbleModelTest, AccumulateMediastreamMicAndCamera) { |
383 // Required to break dependency on BrowserMainLoop. | 379 content::MediaCaptureDevices::GetInstance()-> |
384 MediaCaptureDevicesDispatcher::GetInstance()-> | |
385 DisableDeviceEnumerationForTesting(); | 380 DisableDeviceEnumerationForTesting(); |
386 | 381 |
387 TabSpecificContentSettings* content_settings = | 382 TabSpecificContentSettings* content_settings = |
388 TabSpecificContentSettings::FromWebContents(web_contents()); | 383 TabSpecificContentSettings::FromWebContents(web_contents()); |
389 std::string request_host = "google.com"; | 384 std::string request_host = "google.com"; |
390 GURL security_origin("http://" + request_host); | 385 GURL security_origin("http://" + request_host); |
391 | 386 |
392 // Firstly, add microphone access. | 387 // Firstly, add microphone access. |
393 MediaStreamDevicesController::MediaStreamTypeSettingsMap | 388 MediaStreamDevicesController::MediaStreamTypeSettingsMap |
394 request_permissions; | 389 request_permissions; |
(...skipping 268 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
663 ProtocolHandler handler = registry.GetHandlerFor("mailto"); | 658 ProtocolHandler handler = registry.GetHandlerFor("mailto"); |
664 ASSERT_FALSE(handler.IsEmpty()); | 659 ASSERT_FALSE(handler.IsEmpty()); |
665 EXPECT_EQ(base::ASCIIToUTF16("Handler"), handler.title()); | 660 EXPECT_EQ(base::ASCIIToUTF16("Handler"), handler.title()); |
666 EXPECT_EQ(CONTENT_SETTING_ALLOW, | 661 EXPECT_EQ(CONTENT_SETTING_ALLOW, |
667 content_settings->pending_protocol_handler_setting()); | 662 content_settings->pending_protocol_handler_setting()); |
668 EXPECT_FALSE(registry.IsIgnored(test_handler)); | 663 EXPECT_FALSE(registry.IsIgnored(test_handler)); |
669 } | 664 } |
670 | 665 |
671 registry.Shutdown(); | 666 registry.Shutdown(); |
672 } | 667 } |
OLD | NEW |