| 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 "chrome/browser/geolocation/geolocation_permission_context.h" | 5 #include "chrome/browser/geolocation/geolocation_permission_context.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 #include <string> | 8 #include <string> |
| 9 #include <utility> | 9 #include <utility> |
| 10 | 10 |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 #include "content/public/browser/notification_service.h" | 32 #include "content/public/browser/notification_service.h" |
| 33 #include "content/public/browser/web_contents.h" | 33 #include "content/public/browser/web_contents.h" |
| 34 #include "content/public/test/mock_render_process_host.h" | 34 #include "content/public/test/mock_render_process_host.h" |
| 35 #include "content/public/test/test_renderer_host.h" | 35 #include "content/public/test/test_renderer_host.h" |
| 36 #include "content/public/test/test_utils.h" | 36 #include "content/public/test/test_utils.h" |
| 37 #include "content/public/test/web_contents_tester.h" | 37 #include "content/public/test/web_contents_tester.h" |
| 38 #include "testing/gtest/include/gtest/gtest.h" | 38 #include "testing/gtest/include/gtest/gtest.h" |
| 39 | 39 |
| 40 #if defined(OS_ANDROID) | 40 #if defined(OS_ANDROID) |
| 41 #include "base/prefs/pref_service.h" | 41 #include "base/prefs/pref_service.h" |
| 42 #include "chrome/browser/android/mock_google_location_settings_helper.h" | 42 #include "chrome/browser/android/mock_location_settings.h" |
| 43 #include "chrome/browser/geolocation/geolocation_permission_context_android.h" | 43 #include "chrome/browser/geolocation/geolocation_permission_context_android.h" |
| 44 #endif | 44 #endif |
| 45 | 45 |
| 46 #if defined(ENABLE_EXTENSIONS) | 46 #if defined(ENABLE_EXTENSIONS) |
| 47 #include "extensions/browser/view_type_utils.h" | 47 #include "extensions/browser/view_type_utils.h" |
| 48 #endif | 48 #endif |
| 49 | 49 |
| 50 using content::MockRenderProcessHost; | 50 using content::MockRenderProcessHost; |
| 51 | 51 |
| 52 | 52 |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 242 | 242 |
| 243 // Set up required helpers, and make this be as "tabby" as the code requires. | 243 // Set up required helpers, and make this be as "tabby" as the code requires. |
| 244 #if defined(ENABLE_EXTENSIONS) | 244 #if defined(ENABLE_EXTENSIONS) |
| 245 extensions::SetViewType(web_contents(), extensions::VIEW_TYPE_TAB_CONTENTS); | 245 extensions::SetViewType(web_contents(), extensions::VIEW_TYPE_TAB_CONTENTS); |
| 246 #endif | 246 #endif |
| 247 InfoBarService::CreateForWebContents(web_contents()); | 247 InfoBarService::CreateForWebContents(web_contents()); |
| 248 TabSpecificContentSettings::CreateForWebContents(web_contents()); | 248 TabSpecificContentSettings::CreateForWebContents(web_contents()); |
| 249 geolocation_permission_context_ = | 249 geolocation_permission_context_ = |
| 250 GeolocationPermissionContextFactory::GetForProfile(profile()); | 250 GeolocationPermissionContextFactory::GetForProfile(profile()); |
| 251 #if defined(OS_ANDROID) | 251 #if defined(OS_ANDROID) |
| 252 scoped_ptr<GoogleLocationSettingsHelper> helper( | |
| 253 new MockGoogleLocationSettingsHelper()); | |
| 254 static_cast<GeolocationPermissionContextAndroid*>( | 252 static_cast<GeolocationPermissionContextAndroid*>( |
| 255 geolocation_permission_context_)-> | 253 geolocation_permission_context_) |
| 256 SetGoogleLocationSettingsHelperForTesting(helper.Pass()); | 254 ->SetLocationSettingsForTesting( |
| 257 MockGoogleLocationSettingsHelper::SetLocationStatus(true, true); | 255 scoped_ptr<LocationSettings>(new MockLocationSettings())); |
| 256 MockLocationSettings::SetLocationStatus(true, true); |
| 258 #endif | 257 #endif |
| 259 } | 258 } |
| 260 | 259 |
| 261 void GeolocationPermissionContextTests::TearDown() { | 260 void GeolocationPermissionContextTests::TearDown() { |
| 262 extra_tabs_.clear(); | 261 extra_tabs_.clear(); |
| 263 ChromeRenderViewHostTestHarness::TearDown(); | 262 ChromeRenderViewHostTestHarness::TearDown(); |
| 264 } | 263 } |
| 265 | 264 |
| 266 // Tests ---------------------------------------------------------------------- | 265 // Tests ---------------------------------------------------------------------- |
| 267 | 266 |
| (...skipping 10 matching lines...) Expand all Loading... |
| 278 infobar_delegate->Cancel(); | 277 infobar_delegate->Cancel(); |
| 279 infobar_service()->RemoveInfoBar(infobar); | 278 infobar_service()->RemoveInfoBar(infobar); |
| 280 EXPECT_EQ(1U, closed_infobar_tracker_.size()); | 279 EXPECT_EQ(1U, closed_infobar_tracker_.size()); |
| 281 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar)); | 280 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar)); |
| 282 } | 281 } |
| 283 | 282 |
| 284 #if defined(OS_ANDROID) | 283 #if defined(OS_ANDROID) |
| 285 TEST_F(GeolocationPermissionContextTests, GeolocationEnabledDisabled) { | 284 TEST_F(GeolocationPermissionContextTests, GeolocationEnabledDisabled) { |
| 286 GURL requesting_frame("http://www.example.com/geolocation"); | 285 GURL requesting_frame("http://www.example.com/geolocation"); |
| 287 NavigateAndCommit(requesting_frame); | 286 NavigateAndCommit(requesting_frame); |
| 288 MockGoogleLocationSettingsHelper::SetLocationStatus(true, true); | 287 MockLocationSettings::SetLocationStatus(true, true); |
| 289 EXPECT_EQ(0U, infobar_service()->infobar_count()); | 288 EXPECT_EQ(0U, infobar_service()->infobar_count()); |
| 290 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); | 289 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); |
| 291 EXPECT_EQ(1U, infobar_service()->infobar_count()); | 290 EXPECT_EQ(1U, infobar_service()->infobar_count()); |
| 292 ConfirmInfoBarDelegate* infobar_delegate_0 = | 291 ConfirmInfoBarDelegate* infobar_delegate_0 = |
| 293 infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate(); | 292 infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate(); |
| 294 ASSERT_TRUE(infobar_delegate_0); | 293 ASSERT_TRUE(infobar_delegate_0); |
| 295 base::string16 text_0 = infobar_delegate_0->GetButtonLabel( | 294 base::string16 text_0 = infobar_delegate_0->GetButtonLabel( |
| 296 ConfirmInfoBarDelegate::BUTTON_OK); | 295 ConfirmInfoBarDelegate::BUTTON_OK); |
| 297 | 296 |
| 298 Reload(); | 297 Reload(); |
| 299 MockGoogleLocationSettingsHelper::SetLocationStatus(true, false); | 298 MockLocationSettings::SetLocationStatus(true, false); |
| 300 EXPECT_EQ(0U, infobar_service()->infobar_count()); | 299 EXPECT_EQ(0U, infobar_service()->infobar_count()); |
| 301 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); | 300 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); |
| 302 EXPECT_EQ(0U, infobar_service()->infobar_count()); | 301 EXPECT_EQ(0U, infobar_service()->infobar_count()); |
| 303 } | 302 } |
| 304 | 303 |
| 305 TEST_F(GeolocationPermissionContextTests, MasterEnabledGoogleAppsEnabled) { | 304 TEST_F(GeolocationPermissionContextTests, MasterEnabledGoogleAppsEnabled) { |
| 306 GURL requesting_frame("http://www.example.com/geolocation"); | 305 GURL requesting_frame("http://www.example.com/geolocation"); |
| 307 NavigateAndCommit(requesting_frame); | 306 NavigateAndCommit(requesting_frame); |
| 308 MockGoogleLocationSettingsHelper::SetLocationStatus(true, true); | 307 MockLocationSettings::SetLocationStatus(true, true); |
| 309 EXPECT_EQ(0U, infobar_service()->infobar_count()); | 308 EXPECT_EQ(0U, infobar_service()->infobar_count()); |
| 310 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); | 309 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); |
| 311 EXPECT_EQ(1U, infobar_service()->infobar_count()); | 310 EXPECT_EQ(1U, infobar_service()->infobar_count()); |
| 312 ConfirmInfoBarDelegate* infobar_delegate = | 311 ConfirmInfoBarDelegate* infobar_delegate = |
| 313 infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate(); | 312 infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate(); |
| 314 ASSERT_TRUE(infobar_delegate); | 313 ASSERT_TRUE(infobar_delegate); |
| 315 infobar_delegate->Accept(); | 314 infobar_delegate->Accept(); |
| 316 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW); | 315 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW); |
| 317 CheckPermissionMessageSent(0, true); | 316 CheckPermissionMessageSent(0, true); |
| 318 } | 317 } |
| 319 | 318 |
| 320 TEST_F(GeolocationPermissionContextTests, MasterEnabledGoogleAppsDisabled) { | 319 TEST_F(GeolocationPermissionContextTests, MasterEnabledGoogleAppsDisabled) { |
| 321 GURL requesting_frame("http://www.example.com/geolocation"); | 320 GURL requesting_frame("http://www.example.com/geolocation"); |
| 322 NavigateAndCommit(requesting_frame); | 321 NavigateAndCommit(requesting_frame); |
| 323 MockGoogleLocationSettingsHelper::SetLocationStatus(true, false); | 322 MockLocationSettings::SetLocationStatus(true, false); |
| 324 EXPECT_EQ(0U, infobar_service()->infobar_count()); | 323 EXPECT_EQ(0U, infobar_service()->infobar_count()); |
| 325 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); | 324 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); |
| 326 EXPECT_EQ(0U, infobar_service()->infobar_count()); | 325 EXPECT_EQ(0U, infobar_service()->infobar_count()); |
| 327 } | 326 } |
| 328 #endif | 327 #endif |
| 329 | 328 |
| 330 TEST_F(GeolocationPermissionContextTests, QueuedPermission) { | 329 TEST_F(GeolocationPermissionContextTests, QueuedPermission) { |
| 331 GURL requesting_frame_0("http://www.example.com/geolocation"); | 330 GURL requesting_frame_0("http://www.example.com/geolocation"); |
| 332 GURL requesting_frame_1("http://www.example-2.com/geolocation"); | 331 GURL requesting_frame_1("http://www.example-2.com/geolocation"); |
| 333 EXPECT_EQ(CONTENT_SETTING_ASK, | 332 EXPECT_EQ(CONTENT_SETTING_ASK, |
| (...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 780 // it is the embedder. | 779 // it is the embedder. |
| 781 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(), | 780 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(), |
| 782 requesting_frame_0.GetOrigin(), | 781 requesting_frame_0.GetOrigin(), |
| 783 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), | 782 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), |
| 784 13); | 783 13); |
| 785 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), | 784 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), |
| 786 requesting_frame_0.GetOrigin(), | 785 requesting_frame_0.GetOrigin(), |
| 787 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), | 786 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), |
| 788 11); | 787 11); |
| 789 } | 788 } |
| OLD | NEW |