Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1615)

Unified Diff: chrome/browser/geolocation/geolocation_permission_context_unittest.cc

Issue 924043002: Revert of Update geolocation permission tests for the permission bubble (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/geolocation/geolocation_permission_context_unittest.cc
diff --git a/chrome/browser/geolocation/geolocation_permission_context_unittest.cc b/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
index fa79aa8bfdf6c33cc9a9ba8158cfcfe8b95068d4..52eb422535a06b6af50b93c8bf4975595b87aa71 100644
--- a/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
+++ b/chrome/browser/geolocation/geolocation_permission_context_unittest.cc
@@ -9,7 +9,6 @@
#include <utility>
#include "base/bind.h"
-#include "base/command_line.h"
#include "base/containers/hash_tables.h"
#include "base/id_map.h"
#include "base/memory/scoped_vector.h"
@@ -20,10 +19,6 @@
#include "chrome/browser/content_settings/tab_specific_content_settings.h"
#include "chrome/browser/geolocation/geolocation_permission_context_factory.h"
#include "chrome/browser/infobars/infobar_service.h"
-#include "chrome/browser/ui/website_settings/mock_permission_bubble_view.h"
-#include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
-#include "chrome/browser/ui/website_settings/permission_bubble_request.h"
-#include "chrome/common/chrome_switches.h"
#include "chrome/test/base/chrome_render_view_host_test_harness.h"
#include "chrome/test/base/testing_profile.h"
#include "components/content_settings/core/browser/host_content_settings_map.h"
@@ -125,8 +120,7 @@
void RequestGeolocationPermission(content::WebContents* web_contents,
const PermissionRequestID& id,
- const GURL& requesting_frame,
- bool user_gesture);
+ const GURL& requesting_frame);
void PermissionResponse(const PermissionRequestID& id,
bool allowed);
@@ -138,18 +132,10 @@
void AddNewTab(const GURL& url);
void CheckTabContentsState(const GURL& requesting_frame,
ContentSetting expected_content_setting);
- size_t GetBubblesQueueSize(PermissionBubbleManager* manager);
- void AcceptBubble(PermissionBubbleManager* manager);
- void DenyBubble(PermissionBubbleManager* manager);
- void CloseBubble(PermissionBubbleManager* manager);
- void BubbleManagerDocumentLoadCompleted();
- void BubbleManagerDocumentLoadCompleted(content::WebContents* web_contents);
- ContentSetting GetGeolocationContentSetting(GURL frame_0, GURL frame_1);
// owned by the browser context
GeolocationPermissionContext* geolocation_permission_context_;
ClosedInfoBarTracker closed_infobar_tracker_;
- MockPermissionBubbleView bubble_view_;
ScopedVector<content::WebContents> extra_tabs_;
// A map between renderer child id and a pair represending the bridge id and
@@ -179,10 +165,9 @@
void GeolocationPermissionContextTests::RequestGeolocationPermission(
content::WebContents* web_contents,
const PermissionRequestID& id,
- const GURL& requesting_frame,
- bool user_gesture) {
+ const GURL& requesting_frame) {
geolocation_permission_context_->RequestPermission(
- web_contents, id, requesting_frame, user_gesture,
+ web_contents, id, requesting_frame, false,
base::Bind(&GeolocationPermissionContextTests::PermissionResponse,
base::Unretained(this), id));
content::RunAllBlockingPoolTasksUntilIdle();
@@ -232,8 +217,6 @@
extensions::SetViewType(new_tab, extensions::VIEW_TYPE_TAB_CONTENTS);
#endif
InfoBarService::CreateForWebContents(new_tab);
- PermissionBubbleManager::CreateForWebContents(new_tab);
- PermissionBubbleManager::FromWebContents(new_tab)->SetView(&bubble_view_);
extra_tabs_.push_back(new_tab);
}
@@ -272,9 +255,6 @@
scoped_ptr<LocationSettings>(new MockLocationSettings()));
MockLocationSettings::SetLocationStatus(true, true);
#endif
- PermissionBubbleManager::CreateForWebContents(web_contents());
- PermissionBubbleManager::FromWebContents(web_contents())->SetView(
- &bubble_view_);
}
void GeolocationPermissionContextTests::TearDown() {
@@ -282,122 +262,13 @@
ChromeRenderViewHostTestHarness::TearDown();
}
-size_t GeolocationPermissionContextTests::GetBubblesQueueSize(
- PermissionBubbleManager* manager) {
- return manager->requests_.size();
-}
-
-void GeolocationPermissionContextTests::AcceptBubble(
- PermissionBubbleManager* manager) {
- manager->Accept();
-}
-
-void GeolocationPermissionContextTests::DenyBubble(
- PermissionBubbleManager* manager) {
- manager->Deny();
-}
-
-void GeolocationPermissionContextTests::CloseBubble(
- PermissionBubbleManager* manager) {
- manager->Closing();
-}
-
-void GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted() {
- GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted(
- web_contents());
-}
-
-void GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted(
- content::WebContents* web_contents) {
- PermissionBubbleManager::FromWebContents(web_contents)->
- DocumentOnLoadCompletedInMainFrame();
-}
-
-ContentSetting GeolocationPermissionContextTests::GetGeolocationContentSetting(
- GURL frame_0, GURL frame_1) {
- return profile()->GetHostContentSettingsMap()->GetContentSetting(
- frame_0, frame_1, CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string());
-}
-
-// Needed to parameterize the tests for both infobars & permission bubbles.
-class GeolocationPermissionContextParamTests :
- public GeolocationPermissionContextTests,
- public ::testing::WithParamInterface<bool> {
- protected:
- GeolocationPermissionContextParamTests() {}
- ~GeolocationPermissionContextParamTests() override {}
-
- bool BubbleEnabled() const {
-#if defined (OS_ANDROID)
- return false;
-#else
- return GetParam();
-#endif
- }
-
- void SetUp() override {
- GeolocationPermissionContextTests::SetUp();
-#if !defined(OS_ANDROID)
- if (BubbleEnabled()) {
- base::CommandLine::ForCurrentProcess()->AppendSwitch(
- switches::kEnablePermissionsBubbles);
- EXPECT_TRUE(PermissionBubbleManager::Enabled());
- } else {
- base::CommandLine::ForCurrentProcess()->AppendSwitch(
- switches::kDisablePermissionsBubbles);
- EXPECT_FALSE(PermissionBubbleManager::Enabled());
- }
-#endif
- }
-
- size_t GetNumberOfPrompts() {
- if (BubbleEnabled()) {
- PermissionBubbleManager* manager =
- PermissionBubbleManager::FromWebContents(web_contents());
- return GetBubblesQueueSize(manager);
- } else {
- return infobar_service()->infobar_count();
- }
- }
-
- void AcceptPrompt() {
- if (BubbleEnabled()) {
- PermissionBubbleManager* manager =
- PermissionBubbleManager::FromWebContents(web_contents());
- AcceptBubble(manager);
- } else {
- infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
- ConfirmInfoBarDelegate* infobar_delegate =
- infobar->delegate()->AsConfirmInfoBarDelegate();
- infobar_delegate->Accept();
- }
- }
-
- base::string16 GetPromptText() {
- if (BubbleEnabled()) {
- PermissionBubbleManager* manager =
- PermissionBubbleManager::FromWebContents(web_contents());
- return manager->requests_.front()->GetMessageText();
- }
- infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
- ConfirmInfoBarDelegate* infobar_delegate =
- infobar->delegate()->AsConfirmInfoBarDelegate();
- return infobar_delegate->GetMessageText();
- }
- private:
- DISALLOW_COPY_AND_ASSIGN(GeolocationPermissionContextParamTests);
-};
-
// Tests ----------------------------------------------------------------------
-TEST_P(GeolocationPermissionContextParamTests, SinglePermissionInfobar) {
- if (BubbleEnabled()) return;
-
+TEST_F(GeolocationPermissionContextTests, SinglePermission) {
GURL requesting_frame("http://www.example.com/geolocation");
NavigateAndCommit(requesting_frame);
EXPECT_EQ(0U, infobar_service()->infobar_count());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, true);
+ RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame);
ASSERT_EQ(1U, infobar_service()->infobar_count());
infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
ConfirmInfoBarDelegate* infobar_delegate =
@@ -409,28 +280,13 @@
EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar));
}
-TEST_P(GeolocationPermissionContextParamTests, SinglePermissionBubble) {
- if (!BubbleEnabled()) return;
-
- GURL requesting_frame("http://www.example.com/geolocation");
- NavigateAndCommit(requesting_frame);
- BubbleManagerDocumentLoadCompleted();
-
- EXPECT_EQ(0U, GetNumberOfPrompts());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, true);
- ASSERT_EQ(1U, GetNumberOfPrompts());
-}
-
#if defined(OS_ANDROID)
-// Infobar-only tests; Android doesn't support permission bubbles.
TEST_F(GeolocationPermissionContextTests, GeolocationEnabledDisabled) {
GURL requesting_frame("http://www.example.com/geolocation");
NavigateAndCommit(requesting_frame);
MockLocationSettings::SetLocationStatus(true, true);
EXPECT_EQ(0U, infobar_service()->infobar_count());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, true);
+ RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame);
EXPECT_EQ(1U, infobar_service()->infobar_count());
ConfirmInfoBarDelegate* infobar_delegate_0 =
infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate();
@@ -441,8 +297,7 @@
Reload();
MockLocationSettings::SetLocationStatus(true, false);
EXPECT_EQ(0U, infobar_service()->infobar_count());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, true);
+ RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame);
EXPECT_EQ(0U, infobar_service()->infobar_count());
}
@@ -451,8 +306,7 @@
NavigateAndCommit(requesting_frame);
MockLocationSettings::SetLocationStatus(true, true);
EXPECT_EQ(0U, infobar_service()->infobar_count());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, true);
+ RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame);
EXPECT_EQ(1U, infobar_service()->infobar_count());
ConfirmInfoBarDelegate* infobar_delegate =
infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate();
@@ -467,383 +321,339 @@
NavigateAndCommit(requesting_frame);
MockLocationSettings::SetLocationStatus(true, false);
EXPECT_EQ(0U, infobar_service()->infobar_count());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, true);
+ RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame);
EXPECT_EQ(0U, infobar_service()->infobar_count());
}
#endif
-TEST_P(GeolocationPermissionContextParamTests, QueuedPermission) {
+TEST_F(GeolocationPermissionContextTests, QueuedPermission) {
GURL requesting_frame_0("http://www.example.com/geolocation");
GURL requesting_frame_1("http://www.example-2.com/geolocation");
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- GetGeolocationContentSetting(requesting_frame_0, requesting_frame_1));
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- GetGeolocationContentSetting(requesting_frame_1, requesting_frame_1));
+ EXPECT_EQ(CONTENT_SETTING_ASK,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_0, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
+ EXPECT_EQ(CONTENT_SETTING_ASK,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_1, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
NavigateAndCommit(requesting_frame_0);
- if (BubbleEnabled()) BubbleManagerDocumentLoadCompleted();
-
- // Check that no permission requests have happened yet.
- EXPECT_EQ(0U, GetNumberOfPrompts());
-
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
// Request permission for two frames.
RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame_0, true);
- RequestGeolocationPermission(
- web_contents(), RequestID(1), requesting_frame_1, true);
+ web_contents(), RequestID(0), requesting_frame_0);
+ RequestGeolocationPermission(
+ web_contents(), RequestID(1), requesting_frame_1);
// Ensure only one infobar is created.
- ASSERT_EQ(1U, GetNumberOfPrompts());
- base::string16 text_0 = GetPromptText();
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+ infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_0 =
+ infobar_0->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate_0);
+ base::string16 text_0 = infobar_delegate_0->GetMessageText();
// Accept the first frame.
- AcceptPrompt();
+ infobar_delegate_0->Accept();
CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW);
CheckPermissionMessageSent(0, true);
- if (!BubbleEnabled()) {
- infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
- infobar_service()->RemoveInfoBar(infobar_0);
- EXPECT_EQ(1U, closed_infobar_tracker_.size());
- EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0));
- closed_infobar_tracker_.Clear();
- }
-
+ infobar_service()->RemoveInfoBar(infobar_0);
+ EXPECT_EQ(1U, closed_infobar_tracker_.size());
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0));
+ closed_infobar_tracker_.Clear();
// Now we should have a new infobar for the second frame.
- ASSERT_EQ(1U, GetNumberOfPrompts());
- base::string16 text_1 = GetPromptText();
-
- // Check that the messages differ.
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+
+ infobars::InfoBar* infobar_1 = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_1 =
+ infobar_1->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate_1);
+ base::string16 text_1 = infobar_delegate_1->GetMessageText();
EXPECT_NE(text_0, text_1);
// Cancel (block) this frame.
- if (BubbleEnabled()) {
- PermissionBubbleManager* manager =
- PermissionBubbleManager::FromWebContents(web_contents());
- DenyBubble(manager);
- } else {
- infobars::InfoBar* infobar_1 = infobar_service()->infobar_at(0);
- infobar_1->delegate()->AsConfirmInfoBarDelegate()->Cancel();
- }
+ infobar_delegate_1->Cancel();
CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_BLOCK);
CheckPermissionMessageSent(1, false);
-
+ infobar_service()->RemoveInfoBar(infobar_1);
+ EXPECT_EQ(1U, closed_infobar_tracker_.size());
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1));
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
// Ensure the persisted permissions are ok.
- EXPECT_EQ(
- CONTENT_SETTING_ALLOW,
- GetGeolocationContentSetting(requesting_frame_0, requesting_frame_0));
- EXPECT_EQ(
- CONTENT_SETTING_BLOCK,
- GetGeolocationContentSetting(requesting_frame_1, requesting_frame_0));
-}
-
-TEST_P(GeolocationPermissionContextParamTests, HashIsIgnored) {
+ EXPECT_EQ(CONTENT_SETTING_ALLOW,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_0, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
+
+ EXPECT_EQ(CONTENT_SETTING_BLOCK,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_1, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
+}
+
+TEST_F(GeolocationPermissionContextTests, HashIsIgnored) {
GURL url_a("http://www.example.com/geolocation#a");
GURL url_b("http://www.example.com/geolocation#b");
- // Navigate to the first url.
+ // Navigate to the first url and check permission is requested.
NavigateAndCommit(url_a);
- if (BubbleEnabled()) BubbleManagerDocumentLoadCompleted();
-
- // Check permission is requested.
- ASSERT_EQ(0U, GetNumberOfPrompts());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), url_a, BubbleEnabled());
- ASSERT_EQ(1U, GetNumberOfPrompts());
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
+ RequestGeolocationPermission(web_contents(), RequestID(0), url_a);
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+ infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate =
+ infobar->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate);
// Change the hash, we'll still be on the same page.
NavigateAndCommit(url_b);
- if (BubbleEnabled()) BubbleManagerDocumentLoadCompleted();
// Accept.
- AcceptPrompt();
+ infobar_delegate->Accept();
CheckTabContentsState(url_a, CONTENT_SETTING_ALLOW);
CheckTabContentsState(url_b, CONTENT_SETTING_ALLOW);
CheckPermissionMessageSent(0, true);
// Cleanup.
- if (!BubbleEnabled()) {
- infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
- infobar_service()->RemoveInfoBar(infobar);
- EXPECT_EQ(1U, closed_infobar_tracker_.size());
- EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar));
- }
-}
-
-TEST_P(GeolocationPermissionContextParamTests, PermissionForFileScheme) {
- // TODO(felt): The bubble is rejecting file:// permission requests.
- // Fix and enable this test. crbug.com/444047
- if (BubbleEnabled()) return;
-
+ infobar_service()->RemoveInfoBar(infobar);
+ EXPECT_EQ(1U, closed_infobar_tracker_.size());
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar));
+}
+
+TEST_F(GeolocationPermissionContextTests, PermissionForFileScheme) {
GURL requesting_frame("file://example/geolocation.html");
NavigateAndCommit(requesting_frame);
- if (BubbleEnabled()) BubbleManagerDocumentLoadCompleted();
-
- // Check permission is requested.
- ASSERT_EQ(0U, GetNumberOfPrompts());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, true);
- EXPECT_EQ(1U, GetNumberOfPrompts());
-
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
+ RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame);
+ EXPECT_EQ(1U, infobar_service()->infobar_count());
+ infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate =
+ infobar->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate);
// Accept the frame.
- AcceptPrompt();
+ infobar_delegate->Accept();
CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW);
CheckPermissionMessageSent(0, true);
+ infobar_service()->RemoveInfoBar(infobar);
// Make sure the setting is not stored.
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- GetGeolocationContentSetting(requesting_frame, requesting_frame));
-}
-
-TEST_P(GeolocationPermissionContextParamTests,
- CancelGeolocationPermissionRequest) {
- GURL frame_0("http://www.example.com/geolocation");
- GURL frame_1("http://www.example-2.com/geolocation");
- EXPECT_EQ(
- CONTENT_SETTING_ASK, GetGeolocationContentSetting(frame_0, frame_0));
- EXPECT_EQ(
- CONTENT_SETTING_ASK, GetGeolocationContentSetting(frame_1, frame_0));
-
- NavigateAndCommit(frame_0);
- if (BubbleEnabled()) BubbleManagerDocumentLoadCompleted();
-
- ASSERT_EQ(0U, GetNumberOfPrompts());
+ EXPECT_EQ(CONTENT_SETTING_ASK,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame,
+ requesting_frame,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION,
+ std::string()));
+}
+
+TEST_F(GeolocationPermissionContextTests, CancelGeolocationPermissionRequest) {
+ GURL requesting_frame_0("http://www.example.com/geolocation");
+ GURL requesting_frame_1("http://www.example-2.com/geolocation");
+ EXPECT_EQ(CONTENT_SETTING_ASK,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_0, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
+
+ EXPECT_EQ(CONTENT_SETTING_ASK,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_1, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
+
+ NavigateAndCommit(requesting_frame_0);
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
// Request permission for two frames.
RequestGeolocationPermission(
- web_contents(), RequestID(0), frame_0, true);
- RequestGeolocationPermission(
- web_contents(), RequestID(1), frame_1, true);
-
- // Get the first permission request text.
- ASSERT_EQ(1U, GetNumberOfPrompts());
- base::string16 text_0 = GetPromptText();
- ASSERT_FALSE(text_0.empty());
-
- // Simulate the frame going away; the request should be removed.
- if (BubbleEnabled()) {
- PermissionBubbleManager* manager =
- PermissionBubbleManager::FromWebContents(web_contents());
- CloseBubble(manager);
- } else {
- geolocation_permission_context_->CancelPermissionRequest(web_contents(),
- RequestID(0));
- }
-
- // Check that the next pending request is created correctly.
- base::string16 text_1 = GetPromptText();
+ web_contents(), RequestID(0), requesting_frame_0);
+ RequestGeolocationPermission(
+ web_contents(), RequestID(1), requesting_frame_1);
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+
+ infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_0 =
+ infobar_0->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate_0);
+ base::string16 text_0 = infobar_delegate_0->GetMessageText();
+
+ // Simulate the frame going away, ensure the infobar for this frame
+ // is removed and the next pending infobar is created.
+ geolocation_permission_context_->CancelPermissionRequest(web_contents(),
+ RequestID(0));
+ EXPECT_EQ(1U, closed_infobar_tracker_.size());
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0));
+ closed_infobar_tracker_.Clear();
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+
+ infobars::InfoBar* infobar_1 = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_1 =
+ infobar_1->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate_1);
+ base::string16 text_1 = infobar_delegate_1->GetMessageText();
EXPECT_NE(text_0, text_1);
- // Allow this frame and check that it worked.
- AcceptPrompt();
- CheckTabContentsState(frame_1, CONTENT_SETTING_ALLOW);
+ // Allow this frame.
+ infobar_delegate_1->Accept();
+ CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_ALLOW);
CheckPermissionMessageSent(1, true);
-
+ infobar_service()->RemoveInfoBar(infobar_1);
+ EXPECT_EQ(1U, closed_infobar_tracker_.size());
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1));
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
// Ensure the persisted permissions are ok.
- EXPECT_EQ(
- CONTENT_SETTING_ASK, GetGeolocationContentSetting(frame_0, frame_0));
- EXPECT_EQ(
- CONTENT_SETTING_ALLOW, GetGeolocationContentSetting(frame_1, frame_0));
-}
-
-TEST_P(GeolocationPermissionContextParamTests, InvalidURL) {
- // Navigate to the first url.
+ EXPECT_EQ(CONTENT_SETTING_ASK,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_0, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
+
+ EXPECT_EQ(CONTENT_SETTING_ALLOW,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_1, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
+}
+
+TEST_F(GeolocationPermissionContextTests, InvalidURL) {
GURL invalid_embedder("about:blank");
GURL requesting_frame;
NavigateAndCommit(invalid_embedder);
- if (BubbleEnabled()) BubbleManagerDocumentLoadCompleted();
-
- // Nothing should be displayed.
- EXPECT_EQ(0U, GetNumberOfPrompts());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, true);
- EXPECT_EQ(0U, GetNumberOfPrompts());
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
+ RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame);
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
CheckPermissionMessageSent(0, false);
}
-TEST_P(GeolocationPermissionContextParamTests, SameOriginMultipleTabs) {
+TEST_F(GeolocationPermissionContextTests, SameOriginMultipleTabs) {
GURL url_a("http://www.example.com/geolocation");
GURL url_b("http://www.example-2.com/geolocation");
- NavigateAndCommit(url_a); // Tab A0
- AddNewTab(url_b); // Tab B (extra_tabs_[0])
- AddNewTab(url_a); // Tab A1 (extra_tabs_[1])
- if (BubbleEnabled()) {
- BubbleManagerDocumentLoadCompleted();
- BubbleManagerDocumentLoadCompleted(extra_tabs_[0]);
- BubbleManagerDocumentLoadCompleted(extra_tabs_[1]);
- }
- PermissionBubbleManager* manager_a0 =
- PermissionBubbleManager::FromWebContents(web_contents());
- PermissionBubbleManager* manager_b =
- PermissionBubbleManager::FromWebContents(extra_tabs_[0]);
- PermissionBubbleManager* manager_a1 =
- PermissionBubbleManager::FromWebContents(extra_tabs_[1]);
-
- // Request permission in all three tabs.
- RequestGeolocationPermission(
- web_contents(), RequestID(0), url_a, true);
- RequestGeolocationPermission(
- extra_tabs_[0], RequestIDForTab(0, 0), url_b, true);
- RequestGeolocationPermission(
- extra_tabs_[1], RequestIDForTab(1, 0), url_a, true);
- ASSERT_EQ(1U, GetNumberOfPrompts()); // For A0.
- if (BubbleEnabled()) {
- ASSERT_EQ(1U, GetBubblesQueueSize(manager_b));
- ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1));
- } else {
- ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
- ASSERT_EQ(1U, infobar_service_for_tab(1)->infobar_count());
- }
-
- // Accept the permission in tab A0.
- if (BubbleEnabled()) {
- AcceptBubble(manager_a0);
- } else {
- infobars::InfoBar* infobar_a0 = infobar_service()->infobar_at(0);
- ConfirmInfoBarDelegate* infobar_delegate_a0 =
- infobar_a0->delegate()->AsConfirmInfoBarDelegate();
- ASSERT_TRUE(infobar_delegate_a0);
- infobar_delegate_a0->Accept();
- infobar_service()->RemoveInfoBar(infobar_a0);
- EXPECT_EQ(2U, closed_infobar_tracker_.size());
- EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_a0));
- }
+ NavigateAndCommit(url_a);
+ AddNewTab(url_b);
+ AddNewTab(url_a);
+
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
+ RequestGeolocationPermission(web_contents(), RequestID(0), url_a);
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+
+ RequestGeolocationPermission(extra_tabs_[0], RequestIDForTab(0, 0), url_b);
+ EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
+
+ RequestGeolocationPermission(extra_tabs_[1], RequestIDForTab(1, 0), url_a);
+ ASSERT_EQ(1U, infobar_service_for_tab(1)->infobar_count());
+
+ infobars::InfoBar* removed_infobar =
+ infobar_service_for_tab(1)->infobar_at(0);
+
+ // Accept the first tab.
+ infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_0 =
+ infobar_0->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate_0);
+ infobar_delegate_0->Accept();
CheckPermissionMessageSent(0, true);
- // Because they're the same origin, this will cause tab A1's infobar to
- // disappear. It does not cause the bubble to disappear: crbug.com/443013.
- // TODO(felt): Update this test when the bubble's behavior is changed.
- if (BubbleEnabled())
- ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1));
- else
- CheckPermissionMessageSentForTab(1, 0, true);
-
- // Either way, tab B should still have a pending permission request.
- if (BubbleEnabled())
- ASSERT_EQ(1U, GetBubblesQueueSize(manager_b));
- else
- ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
-}
-
-TEST_P(GeolocationPermissionContextParamTests, QueuedOriginMultipleTabs) {
+ infobar_service()->RemoveInfoBar(infobar_0);
+ EXPECT_EQ(2U, closed_infobar_tracker_.size());
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0));
+ // Now the infobar for the tab with the same origin should have gone.
+ EXPECT_EQ(0U, infobar_service_for_tab(1)->infobar_count());
+ CheckPermissionMessageSentForTab(1, 0, true);
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(removed_infobar));
+ closed_infobar_tracker_.Clear();
+
+ // But the other tab should still have the info bar...
+ ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
+ infobars::InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_1 =
+ infobar_1->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate_1);
+ infobar_delegate_1->Cancel();
+ infobar_service_for_tab(0)->RemoveInfoBar(infobar_1);
+ EXPECT_EQ(1U, closed_infobar_tracker_.size());
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1));
+}
+
+TEST_F(GeolocationPermissionContextTests, QueuedOriginMultipleTabs) {
GURL url_a("http://www.example.com/geolocation");
GURL url_b("http://www.example-2.com/geolocation");
- NavigateAndCommit(url_a); // Tab A0.
- AddNewTab(url_a); // Tab A1.
- if (BubbleEnabled()) {
- BubbleManagerDocumentLoadCompleted();
- BubbleManagerDocumentLoadCompleted(extra_tabs_[0]);
- }
- PermissionBubbleManager* manager_a0 =
- PermissionBubbleManager::FromWebContents(web_contents());
- PermissionBubbleManager* manager_a1 =
- PermissionBubbleManager::FromWebContents(extra_tabs_[0]);
-
- // Request permission in both tabs; the extra tab will have two permission
- // requests from two origins.
- RequestGeolocationPermission(
- web_contents(), RequestID(0), url_a, true);
- RequestGeolocationPermission(
- extra_tabs_[0], RequestIDForTab(0, 0), url_a, true);
- RequestGeolocationPermission(
- extra_tabs_[0], RequestIDForTab(0, 1), url_b, true);
- if (BubbleEnabled()) {
- ASSERT_EQ(1U, GetBubblesQueueSize(manager_a0));
- ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1));
- } else {
- ASSERT_EQ(1U, infobar_service()->infobar_count());
- ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
- }
-
- // Accept the first request in tab A1.
- if (BubbleEnabled()) {
- AcceptBubble(manager_a1);
- } else {
- infobars::InfoBar* infobar_a1 = infobar_service_for_tab(0)->infobar_at(0);
- ConfirmInfoBarDelegate* infobar_delegate_a1 =
- infobar_a1->delegate()->AsConfirmInfoBarDelegate();
- ASSERT_TRUE(infobar_delegate_a1);
- infobar_delegate_a1->Accept();
- infobar_service_for_tab(0)->RemoveInfoBar(infobar_a1);
- EXPECT_EQ(2U, closed_infobar_tracker_.size());
- EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_a1));
- }
+ NavigateAndCommit(url_a);
+ AddNewTab(url_a);
+
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
+ RequestGeolocationPermission(web_contents(), RequestID(0), url_a);
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+
+ RequestGeolocationPermission(extra_tabs_[0], RequestIDForTab(0, 0), url_a);
+ EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
+
+ RequestGeolocationPermission(extra_tabs_[0], RequestIDForTab(0, 1), url_b);
+ ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
+
+ infobars::InfoBar* removed_infobar = infobar_service()->infobar_at(0);
+
+ // Accept the second tab.
+ infobars::InfoBar* infobar_0 = infobar_service_for_tab(0)->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_0 =
+ infobar_0->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate_0);
+ infobar_delegate_0->Accept();
CheckPermissionMessageSentForTab(0, 0, true);
-
- // Because they're the same origin, this will cause tab A0's infobar to
- // disappear. It does not cause the bubble to disappear: crbug.com/443013.
- // TODO(felt): Update this test when the bubble's behavior is changed.
- if (BubbleEnabled()) {
- EXPECT_EQ(1U, GetBubblesQueueSize(manager_a0));
- } else {
- EXPECT_EQ(0U, infobar_service()->infobar_count());
- CheckPermissionMessageSent(0, true);
- }
-
- // The second request should now be visible in tab A1.
- if (BubbleEnabled())
- ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1));
- else
- ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
-
- // Accept the second request and check that it's gone.
- if (BubbleEnabled()) {
- AcceptBubble(manager_a1);
- EXPECT_EQ(0U, GetBubblesQueueSize(manager_a1));
- } else {
- infobars::InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0);
- ConfirmInfoBarDelegate* infobar_delegate_1 =
- infobar_1->delegate()->AsConfirmInfoBarDelegate();
- ASSERT_TRUE(infobar_delegate_1);
- infobar_delegate_1->Accept();
- }
-}
-
-TEST_P(GeolocationPermissionContextParamTests, TabDestroyed) {
+ infobar_service_for_tab(0)->RemoveInfoBar(infobar_0);
+ EXPECT_EQ(2U, closed_infobar_tracker_.size());
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0));
+ // Now the infobar for the tab with the same origin should have gone.
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
+ CheckPermissionMessageSent(0, true);
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(removed_infobar));
+ closed_infobar_tracker_.Clear();
+
+ // And we should have the queued infobar displayed now.
+ ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
+
+ // Accept the second infobar.
+ infobars::InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_1 =
+ infobar_1->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate_1);
+ infobar_delegate_1->Accept();
+ CheckPermissionMessageSentForTab(0, 1, true);
+ infobar_service_for_tab(0)->RemoveInfoBar(infobar_1);
+ EXPECT_EQ(1U, closed_infobar_tracker_.size());
+ EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1));
+}
+
+TEST_F(GeolocationPermissionContextTests, TabDestroyed) {
GURL requesting_frame_0("http://www.example.com/geolocation");
GURL requesting_frame_1("http://www.example-2.com/geolocation");
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- GetGeolocationContentSetting(requesting_frame_0, requesting_frame_0));
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- GetGeolocationContentSetting(requesting_frame_1, requesting_frame_0));
+ EXPECT_EQ(CONTENT_SETTING_ASK,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_0, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
+
+ EXPECT_EQ(CONTENT_SETTING_ASK,
+ profile()->GetHostContentSettingsMap()->GetContentSetting(
+ requesting_frame_1, requesting_frame_0,
+ CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
NavigateAndCommit(requesting_frame_0);
- if (BubbleEnabled()) BubbleManagerDocumentLoadCompleted();
-
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
// Request permission for two frames.
RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame_0, false);
- RequestGeolocationPermission(
- web_contents(), RequestID(1), requesting_frame_1, false);
-
- // Ensure only one prompt is created.
- ASSERT_EQ(1U, GetNumberOfPrompts());
+ web_contents(), RequestID(0), requesting_frame_0);
+ RequestGeolocationPermission(
+ web_contents(), RequestID(1), requesting_frame_1);
+ // Ensure only one infobar is created.
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+ infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
// Delete the tab contents.
- if (!BubbleEnabled()) {
- infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
- DeleteContents();
- ASSERT_EQ(1U, closed_infobar_tracker_.size());
- ASSERT_TRUE(closed_infobar_tracker_.Contains(infobar));
- }
-
- // The content settings should not have changed.
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- GetGeolocationContentSetting(requesting_frame_0, requesting_frame_0));
- EXPECT_EQ(
- CONTENT_SETTING_ASK,
- GetGeolocationContentSetting(requesting_frame_1, requesting_frame_0));
-}
-
-TEST_P(GeolocationPermissionContextParamTests, LastUsageAudited) {
+ DeleteContents();
+
+ // During contents destruction, the infobar will have been closed, and the
+ // pending request should have been cleared without an infobar being created.
+ ASSERT_EQ(1U, closed_infobar_tracker_.size());
+ ASSERT_TRUE(closed_infobar_tracker_.Contains(infobar));
+}
+
+TEST_F(GeolocationPermissionContextTests, LastUsageAudited) {
GURL requesting_frame("http://www.example.com/geolocation");
NavigateAndCommit(requesting_frame);
- if (BubbleEnabled()) BubbleManagerDocumentLoadCompleted();
base::SimpleTestClock* test_clock = new base::SimpleTestClock;
test_clock->SetNow(base::Time::UnixEpoch() +
@@ -857,12 +667,15 @@
requesting_frame.GetOrigin(),
CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
0);
- ASSERT_EQ(0U, GetNumberOfPrompts());
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, false);
- ASSERT_EQ(1U, GetNumberOfPrompts());
-
- AcceptPrompt();
+
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
+ RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame);
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+ infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate =
+ infobar->delegate()->AsConfirmInfoBarDelegate();
+ ASSERT_TRUE(infobar_delegate);
+ infobar_delegate->Accept();
CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW);
CheckPermissionMessageSent(0, true);
@@ -873,8 +686,7 @@
10);
test_clock->Advance(base::TimeDelta::FromSeconds(3));
- RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame, false);
+ RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame);
// Permission has been used three seconds later.
EXPECT_EQ(map->GetLastUsage(requesting_frame.GetOrigin(),
@@ -883,7 +695,7 @@
13);
}
-TEST_P(GeolocationPermissionContextParamTests, LastUsageAuditedMultipleFrames) {
+TEST_F(GeolocationPermissionContextTests, LastUsageAuditedMultipleFrames) {
base::SimpleTestClock* test_clock = new base::SimpleTestClock;
test_clock->SetNow(base::Time::UnixEpoch() +
base::TimeDelta::FromSeconds(10));
@@ -905,27 +717,27 @@
0);
NavigateAndCommit(requesting_frame_0);
- if (BubbleEnabled()) BubbleManagerDocumentLoadCompleted();
-
- EXPECT_EQ(0U, GetNumberOfPrompts());
+ EXPECT_EQ(0U, infobar_service()->infobar_count());
// Request permission for two frames.
RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame_0, false);
- RequestGeolocationPermission(
- web_contents(), RequestID(1), requesting_frame_1, false);
+ web_contents(), RequestID(0), requesting_frame_0);
+ RequestGeolocationPermission(
+ web_contents(), RequestID(1), requesting_frame_1);
// Ensure only one infobar is created.
- ASSERT_EQ(1U, GetNumberOfPrompts());
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+ infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_0 =
+ infobar_0->delegate()->AsConfirmInfoBarDelegate();
// Accept the first frame.
- AcceptPrompt();
- if (!BubbleEnabled())
- infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0));
+ infobar_delegate_0->Accept();
CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW);
CheckPermissionMessageSent(0, true);
-
- // Verify that accepting the first didn't accept because it's embedded
+ infobar_service()->RemoveInfoBar(infobar_0);
+
+ // Verify that accepting the first didn't accept because it's embedder
// in the other.
EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(),
requesting_frame_0.GetOrigin(),
@@ -936,16 +748,18 @@
CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
0);
- ASSERT_EQ(1U, GetNumberOfPrompts());
+ ASSERT_EQ(1U, infobar_service()->infobar_count());
+ infobars::InfoBar* infobar_1 = infobar_service()->infobar_at(0);
+ ConfirmInfoBarDelegate* infobar_delegate_1 =
+ infobar_1->delegate()->AsConfirmInfoBarDelegate();
test_clock->Advance(base::TimeDelta::FromSeconds(1));
// Allow the second frame.
- AcceptPrompt();
+ infobar_delegate_1->Accept();
CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_ALLOW);
CheckPermissionMessageSent(1, true);
- if (!BubbleEnabled())
- infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0));
+ infobar_service()->RemoveInfoBar(infobar_1);
// Verify that the times are different.
EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(),
@@ -959,7 +773,7 @@
test_clock->Advance(base::TimeDelta::FromSeconds(2));
RequestGeolocationPermission(
- web_contents(), RequestID(0), requesting_frame_0, false);
+ web_contents(), RequestID(0), requesting_frame_0);
// Verify that requesting permission in one frame doesn't update other where
// it is the embedder.
@@ -972,7 +786,3 @@
CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
11);
}
-
-INSTANTIATE_TEST_CASE_P(GeolocationPermissionContextTestsWithAndWithoutBubbles,
- GeolocationPermissionContextParamTests,
- ::testing::Values(false, true));

Powered by Google App Engine
This is Rietveld 408576698