Chromium Code Reviews| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/compiler_specific.h" | 9 #include "base/compiler_specific.h" |
| 10 #include "base/macros.h" | 10 #include "base/macros.h" |
| (...skipping 236 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 247 const std::string& function); | 247 const std::string& function); |
| 248 | 248 |
| 249 // Sets a new (second) position and runs all callbacks currently registered | 249 // Sets a new (second) position and runs all callbacks currently registered |
| 250 // with the Geolocation system. Returns |true| if the new position is updated | 250 // with the Geolocation system. Returns |true| if the new position is updated |
| 251 // successfully in JavaScript. | 251 // successfully in JavaScript. |
| 252 bool SetPositionAndWaitUntilUpdated(double latitude, double longitude); | 252 bool SetPositionAndWaitUntilUpdated(double latitude, double longitude); |
| 253 | 253 |
| 254 // Convenience method to look up the number of queued permission requests. | 254 // Convenience method to look up the number of queued permission requests. |
| 255 int GetRequestQueueSize(PermissionRequestManager* manager); | 255 int GetRequestQueueSize(PermissionRequestManager* manager); |
| 256 | 256 |
| 257 // Toggle whether the prompt decision should be persisted. | |
| 258 void TogglePersist(bool persist); | |
| 259 | |
| 257 private: | 260 private: |
| 258 // Calls watchPosition() in JavaScript and accepts or denies the resulting | 261 // Calls watchPosition() in JavaScript and accepts or denies the resulting |
| 259 // permission request. Returns the JavaScript response. | 262 // permission request. Returns the JavaScript response. |
| 260 std::string WatchPositionAndRespondToPermissionRequest( | 263 std::string WatchPositionAndRespondToPermissionRequest( |
| 261 PermissionRequestManager::AutoResponseType request_response); | 264 PermissionRequestManager::AutoResponseType request_response); |
| 262 | 265 |
| 263 // The current Browser as set in Initialize. May be for an incognito profile. | 266 // The current Browser as set in Initialize. May be for an incognito profile. |
| 264 Browser* current_browser_ = nullptr; | 267 Browser* current_browser_ = nullptr; |
| 265 | 268 |
| 266 // The path element of a URL referencing the html content for this test. | 269 // The path element of a URL referencing the html content for this test. |
| (...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 422 std::string result = | 425 std::string result = |
| 423 RunScript(render_frame_host_, "checkIfGeopositionUpdated()"); | 426 RunScript(render_frame_host_, "checkIfGeopositionUpdated()"); |
| 424 return result == "geoposition-updated"; | 427 return result == "geoposition-updated"; |
| 425 } | 428 } |
| 426 | 429 |
| 427 int GeolocationBrowserTest::GetRequestQueueSize( | 430 int GeolocationBrowserTest::GetRequestQueueSize( |
| 428 PermissionRequestManager* manager) { | 431 PermissionRequestManager* manager) { |
| 429 return static_cast<int>(manager->requests_.size()); | 432 return static_cast<int>(manager->requests_.size()); |
| 430 } | 433 } |
| 431 | 434 |
| 435 void GeolocationBrowserTest::TogglePersist(bool persist) { | |
| 436 content::WebContents* web_contents = | |
| 437 current_browser()->tab_strip_model()->GetActiveWebContents(); | |
| 438 PermissionRequestManager::FromWebContents(web_contents) | |
| 439 ->TogglePersist(persist); | |
| 440 } | |
| 441 | |
| 432 // Tests ---------------------------------------------------------------------- | 442 // Tests ---------------------------------------------------------------------- |
| 433 | 443 |
| 434 #if defined(OS_LINUX) | 444 #if defined(OS_LINUX) |
| 435 // http://crbug.com/527437 | 445 // http://crbug.com/527437 |
| 436 #define MAYBE_DisplaysPrompt DISABLED_DisplaysPrompt | 446 #define MAYBE_DisplaysPrompt DISABLED_DisplaysPrompt |
| 437 #else | 447 #else |
| 438 #define MAYBE_DisplaysPrompt DisplaysPrompt | 448 #define MAYBE_DisplaysPrompt DisplaysPrompt |
| 439 #endif | 449 #endif |
| 440 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, MAYBE_DisplaysPrompt) { | 450 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, MAYBE_DisplaysPrompt) { |
| 441 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); | 451 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); |
| 442 ASSERT_TRUE(WatchPositionAndGrantPermission()); | 452 ASSERT_TRUE(WatchPositionAndGrantPermission()); |
| 453 | |
| 454 EXPECT_EQ(CONTENT_SETTING_ALLOW, | |
| 455 GetHostContentSettingsMap()->GetContentSetting( | |
| 456 current_url(), current_url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
| 457 std::string())); | |
|
raymes
2016/09/15 05:16:08
Maybe we could do WatchPositionAndObservePermissio
dominickn
2016/09/15 05:40:29
Done.
| |
| 443 } | 458 } |
| 444 | 459 |
| 445 #if defined(OS_LINUX) | 460 #if defined(OS_LINUX) |
| 446 // http://crbug.com/527437 | 461 // http://crbug.com/527437 |
| 447 #define MAYBE_Geoposition DISABLED_Geoposition | 462 #define MAYBE_Geoposition DISABLED_Geoposition |
| 448 #else | 463 #else |
| 449 #define MAYBE_Geoposition Geoposition | 464 #define MAYBE_Geoposition Geoposition |
| 450 #endif | 465 #endif |
| 451 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, MAYBE_Geoposition) { | 466 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, MAYBE_Geoposition) { |
| 452 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); | 467 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); |
| 453 ASSERT_TRUE(WatchPositionAndGrantPermission()); | 468 ASSERT_TRUE(WatchPositionAndGrantPermission()); |
| 454 ExpectPosition(fake_latitude(), fake_longitude()); | 469 ExpectPosition(fake_latitude(), fake_longitude()); |
| 455 } | 470 } |
| 456 | 471 |
| 457 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, ErrorOnPermissionDenied) { | 472 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, ErrorOnPermissionDenied) { |
| 458 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); | 473 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); |
| 459 EXPECT_TRUE(WatchPositionAndDenyPermission()); | 474 EXPECT_TRUE(WatchPositionAndDenyPermission()); |
| 460 ExpectValueFromScript(GetErrorCodePermissionDenied(), "geoGetLastError()"); | 475 ExpectValueFromScript(GetErrorCodePermissionDenied(), "geoGetLastError()"); |
| 476 | |
| 477 EXPECT_EQ(CONTENT_SETTING_BLOCK, | |
| 478 GetHostContentSettingsMap()->GetContentSetting( | |
| 479 current_url(), current_url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
| 480 std::string())); | |
|
raymes
2016/09/15 05:16:08
Same with this (see below)
dominickn
2016/09/15 05:40:29
Done.
| |
| 461 } | 481 } |
| 462 | 482 |
| 463 #if defined(OS_LINUX) | 483 #if defined(OS_LINUX) |
| 464 // http://crbug.com/527437 | 484 // http://crbug.com/527437 |
| 465 #define MAYBE_NoPromptForSecondTab DISABLED_NoPromptForSecondTab | 485 #define MAYBE_NoPromptForSecondTab DISABLED_NoPromptForSecondTab |
| 466 #else | 486 #else |
| 467 #define MAYBE_NoPromptForSecondTab NoPromptForSecondTab | 487 #define MAYBE_NoPromptForSecondTab NoPromptForSecondTab |
| 468 #endif | 488 #endif |
| 469 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, MAYBE_NoPromptForSecondTab) { | 489 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, MAYBE_NoPromptForSecondTab) { |
| 470 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); | 490 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); |
| (...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 533 ASSERT_TRUE(WatchPositionAndGrantPermission()); | 553 ASSERT_TRUE(WatchPositionAndGrantPermission()); |
| 534 ExpectPosition(fake_latitude(), fake_longitude()); | 554 ExpectPosition(fake_latitude(), fake_longitude()); |
| 535 | 555 |
| 536 // The regular profile knows nothing of what happened in incognito. It is | 556 // The regular profile knows nothing of what happened in incognito. It is |
| 537 // prompted and when granted the position gets to the script. | 557 // prompted and when granted the position gets to the script. |
| 538 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); | 558 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); |
| 539 ASSERT_TRUE(WatchPositionAndGrantPermission()); | 559 ASSERT_TRUE(WatchPositionAndGrantPermission()); |
| 540 ExpectPosition(fake_latitude(), fake_longitude()); | 560 ExpectPosition(fake_latitude(), fake_longitude()); |
| 541 } | 561 } |
| 542 | 562 |
| 563 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, TogglePersistGranted) { | |
| 564 // Initialize and turn persistence off. | |
| 565 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); | |
| 566 TogglePersist(false); | |
| 567 | |
| 568 ASSERT_TRUE(WatchPositionAndGrantPermission()); | |
| 569 EXPECT_EQ(CONTENT_SETTING_ASK, | |
| 570 GetHostContentSettingsMap()->GetContentSetting( | |
| 571 current_url(), current_url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
| 572 std::string())); | |
|
raymes
2016/09/15 05:16:08
Can we do WatchPositionAndObservePermissionRequest
dominickn
2016/09/15 05:40:29
Done.
| |
| 573 } | |
| 574 | |
| 575 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, TogglePersistBlocked) { | |
| 576 // Initialize and turn persistence off. | |
| 577 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); | |
| 578 TogglePersist(false); | |
| 579 | |
| 580 ASSERT_TRUE(WatchPositionAndDenyPermission()); | |
| 581 EXPECT_EQ(CONTENT_SETTING_ASK, | |
| 582 GetHostContentSettingsMap()->GetContentSetting( | |
| 583 current_url(), current_url(), CONTENT_SETTINGS_TYPE_GEOLOCATION, | |
| 584 std::string())); | |
|
raymes
2016/09/15 05:16:08
Same here.
dominickn
2016/09/15 05:40:29
Done.
| |
| 585 } | |
| 586 | |
| 543 #if defined(OS_LINUX) | 587 #if defined(OS_LINUX) |
| 544 // http://crbug.com/527437 | 588 // http://crbug.com/527437 |
| 545 #define MAYBE_IFramesWithFreshPosition DISABLED_IFramesWithFreshPosition | 589 #define MAYBE_IFramesWithFreshPosition DISABLED_IFramesWithFreshPosition |
| 546 #else | 590 #else |
| 547 #define MAYBE_IFramesWithFreshPosition IFramesWithFreshPosition | 591 #define MAYBE_IFramesWithFreshPosition IFramesWithFreshPosition |
| 548 #endif | 592 #endif |
| 549 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, MAYBE_IFramesWithFreshPosition) { | 593 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, MAYBE_IFramesWithFreshPosition) { |
| 550 set_html_for_tests("/geolocation/two_iframes.html"); | 594 set_html_for_tests("/geolocation/two_iframes.html"); |
| 551 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); | 595 ASSERT_NO_FATAL_FAILURE(Initialize(INITIALIZATION_DEFAULT)); |
| 552 LoadIFrames(); | 596 LoadIFrames(); |
| (...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 758 // Calling watchPosition should trigger the last usage update. | 802 // Calling watchPosition should trigger the last usage update. |
| 759 WatchPositionAndObservePermissionRequest(false); | 803 WatchPositionAndObservePermissionRequest(false); |
| 760 ExpectPosition(fake_latitude(), fake_longitude()); | 804 ExpectPosition(fake_latitude(), fake_longitude()); |
| 761 | 805 |
| 762 // Last usage has been updated. | 806 // Last usage has been updated. |
| 763 EXPECT_EQ(GetHostContentSettingsMap()->GetLastUsage( | 807 EXPECT_EQ(GetHostContentSettingsMap()->GetLastUsage( |
| 764 current_url().GetOrigin(), | 808 current_url().GetOrigin(), |
| 765 current_url().GetOrigin(), | 809 current_url().GetOrigin(), |
| 766 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 13); | 810 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 13); |
| 767 } | 811 } |
| OLD | NEW |