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

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

Issue 11269002: Introduce GeolocationPermissionRequestID, a wrapper struct to contain the (render process ID, rende… (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 2 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/chrome_geolocation_permission_context_unittest.cc
===================================================================
--- chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc (revision 163741)
+++ chrome/browser/geolocation/chrome_geolocation_permission_context_unittest.cc (working copy)
@@ -42,6 +42,7 @@
using content::WebContents;
using content::WebContentsTester;
+
// ClosedDelegateTracker ------------------------------------------------------
// We need to track which infobars were closed.
@@ -93,6 +94,7 @@
removed_infobar_delegates_.clear();
}
+
// GeolocationPermissionContextTests ------------------------------------------
// This class sets up GeolocationArbitrator.
@@ -104,19 +106,9 @@
protected:
virtual ~GeolocationPermissionContextTests();
- int process_id() {
- return web_contents()->GetRenderProcessHost()->GetID();
- }
- int process_id_for_tab(int tab) {
- return extra_tabs_[tab]->GetRenderProcessHost()->GetID();
- }
- int render_id() {
- return web_contents()->GetRenderViewHost()->GetRoutingID();
- }
- int render_id_for_tab(int tab) {
- return extra_tabs_[tab]->GetRenderViewHost()->GetRoutingID();
- }
- int bridge_id() const { return 42; } // Not relevant at this level.
+ content::GeolocationPermissionRequestID RequestID(int bridge_id);
+ content::GeolocationPermissionRequestID RequestIDForTab(int tab,
+ int bridge_id);
InfoBarTabHelper* infobar_tab_helper() {
return InfoBarTabHelper::FromWebContents(web_contents());
}
@@ -124,13 +116,10 @@
return InfoBarTabHelper::FromWebContents(extra_tabs_[tab]);
}
- void RequestGeolocationPermission(int render_process_id,
- int render_view_id,
- int bridge_id,
- const GURL& requesting_frame);
- void PermissionResponse(int render_process_id,
- int render_view_id,
- int bridge_id,
+ void RequestGeolocationPermission(
+ const content::GeolocationPermissionRequestID& id,
+ const GURL& requesting_frame);
+ void PermissionResponse(const content::GeolocationPermissionRequestID& id,
bool allowed);
void CheckPermissionMessageSent(int bridge_id, bool allowed);
void CheckPermissionMessageSentForTab(int tab, int bridge_id, bool allowed);
@@ -168,26 +157,35 @@
GeolocationPermissionContextTests::~GeolocationPermissionContextTests() {
}
+content::GeolocationPermissionRequestID
+ GeolocationPermissionContextTests::RequestID(int bridge_id) {
+ return content::GeolocationPermissionRequestID(
+ web_contents()->GetRenderProcessHost()->GetID(),
+ web_contents()->GetRenderViewHost()->GetRoutingID(),
+ bridge_id);
+}
+
+content::GeolocationPermissionRequestID
+ GeolocationPermissionContextTests::RequestIDForTab(int tab, int bridge_id) {
+ return content::GeolocationPermissionRequestID(
+ extra_tabs_[tab]->GetRenderProcessHost()->GetID(),
+ extra_tabs_[tab]->GetRenderViewHost()->GetRoutingID(),
+ bridge_id);
+}
+
void GeolocationPermissionContextTests::RequestGeolocationPermission(
- int render_process_id,
- int render_view_id,
- int bridge_id,
+ const content::GeolocationPermissionRequestID& id,
const GURL& requesting_frame) {
geolocation_permission_context_->RequestGeolocationPermission(
- render_process_id, render_view_id, bridge_id, requesting_frame,
- base::Bind(&GeolocationPermissionContextTests::PermissionResponse,
- base::Unretained(this),
- render_process_id,
- render_view_id,
- bridge_id));
+ id, requesting_frame, base::Bind(
+ &GeolocationPermissionContextTests::PermissionResponse,
+ base::Unretained(this), id));
}
void GeolocationPermissionContextTests::PermissionResponse(
- int render_process_id,
- int render_view_id,
- int bridge_id,
+ const content::GeolocationPermissionRequestID& id,
bool allowed) {
- responses_[render_process_id] = std::make_pair(bridge_id, allowed);
+ responses_[id.render_process_id] = std::make_pair(id.bridge_id, allowed);
}
void GeolocationPermissionContextTests::CheckPermissionMessageSent(
@@ -278,11 +276,10 @@
GURL requesting_frame("http://www.example.com/geolocation");
NavigateAndCommit(requesting_frame);
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame);
+ RequestGeolocationPermission(RequestID(0), requesting_frame);
ASSERT_EQ(1U, infobar_tab_helper()->GetInfoBarCount());
- ConfirmInfoBarDelegate* infobar_0 = infobar_tab_helper()->
- GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
+ ConfirmInfoBarDelegate* infobar_0 =
+ infobar_tab_helper()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
infobar_0->Cancel();
infobar_tab_helper()->RemoveInfoBar(infobar_0);
EXPECT_EQ(1U, closed_delegate_tracker_.size());
@@ -302,17 +299,15 @@
NavigateAndCommit(requesting_frame);
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
profile()->GetPrefs()->SetBoolean(prefs::kGeolocationEnabled, false);
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame);
+ RequestGeolocationPermission(RequestID(0), requesting_frame);
ASSERT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
- CheckPermissionMessageSent(bridge_id(), false);
+ CheckPermissionMessageSent(0, false);
// Reenable the preference and check that the request now goes though.
profile()->GetPrefs()->SetBoolean(prefs::kGeolocationEnabled, true);
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id() + 1, requesting_frame);
+ RequestGeolocationPermission(RequestID(1), requesting_frame);
ASSERT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
- CheckPermissionMessageSent(bridge_id() + 1, true);
+ CheckPermissionMessageSent(1, true);
}
#endif
@@ -336,21 +331,19 @@
NavigateAndCommit(requesting_frame_0);
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
// Request permission for two frames.
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame_0);
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id() + 1, requesting_frame_1);
+ RequestGeolocationPermission(RequestID(0), requesting_frame_0);
+ RequestGeolocationPermission(RequestID(1), requesting_frame_1);
// Ensure only one infobar is created.
ASSERT_EQ(1U, infobar_tab_helper()->GetInfoBarCount());
- ConfirmInfoBarDelegate* infobar_0 = infobar_tab_helper()->
- GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
+ ConfirmInfoBarDelegate* infobar_0 =
+ infobar_tab_helper()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
ASSERT_TRUE(infobar_0);
string16 text_0 = infobar_0->GetMessageText();
// Accept the first frame.
infobar_0->Accept();
CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW);
- CheckPermissionMessageSent(bridge_id(), true);
+ CheckPermissionMessageSent(0, true);
infobar_tab_helper()->RemoveInfoBar(infobar_0);
EXPECT_EQ(1U, closed_delegate_tracker_.size());
@@ -360,8 +353,8 @@
// Now we should have a new infobar for the second frame.
ASSERT_EQ(1U, infobar_tab_helper()->GetInfoBarCount());
- ConfirmInfoBarDelegate* infobar_1 = infobar_tab_helper()->
- GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
+ ConfirmInfoBarDelegate* infobar_1 =
+ infobar_tab_helper()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
ASSERT_TRUE(infobar_1);
string16 text_1 = infobar_1->GetMessageText();
EXPECT_NE(text_0, text_1);
@@ -369,7 +362,7 @@
// Cancel (block) this frame.
infobar_1->Cancel();
CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_BLOCK);
- CheckPermissionMessageSent(bridge_id() + 1, false);
+ CheckPermissionMessageSent(1, false);
infobar_tab_helper()->RemoveInfoBar(infobar_1);
EXPECT_EQ(1U, closed_delegate_tracker_.size());
EXPECT_TRUE(closed_delegate_tracker_.Contains(infobar_1));
@@ -412,29 +405,27 @@
NavigateAndCommit(requesting_frame_0);
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
// Request permission for two frames.
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame_0);
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id() + 1, requesting_frame_1);
+ RequestGeolocationPermission(RequestID(0), requesting_frame_0);
+ RequestGeolocationPermission(RequestID(1), requesting_frame_1);
ASSERT_EQ(1U, infobar_tab_helper()->GetInfoBarCount());
- ConfirmInfoBarDelegate* infobar_0 = infobar_tab_helper()->
- GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
+ ConfirmInfoBarDelegate* infobar_0 =
+ infobar_tab_helper()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
ASSERT_TRUE(infobar_0);
string16 text_0 = infobar_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_->CancelGeolocationPermissionRequest(
- process_id(), render_id(), bridge_id(), requesting_frame_0);
+ RequestID(0), requesting_frame_0);
EXPECT_EQ(1U, closed_delegate_tracker_.size());
EXPECT_TRUE(closed_delegate_tracker_.Contains(infobar_0));
closed_delegate_tracker_.Clear();
infobar_0->InfoBarClosed();
ASSERT_EQ(1U, infobar_tab_helper()->GetInfoBarCount());
- ConfirmInfoBarDelegate* infobar_1 = infobar_tab_helper()->
- GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
+ ConfirmInfoBarDelegate* infobar_1 =
+ infobar_tab_helper()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
ASSERT_TRUE(infobar_1);
string16 text_1 = infobar_1->GetMessageText();
EXPECT_NE(text_0, text_1);
@@ -442,7 +433,7 @@
// Allow this frame.
infobar_1->Accept();
CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_ALLOW);
- CheckPermissionMessageSent(bridge_id() + 1, true);
+ CheckPermissionMessageSent(1, true);
infobar_tab_helper()->RemoveInfoBar(infobar_1);
EXPECT_EQ(1U, closed_delegate_tracker_.size());
EXPECT_TRUE(closed_delegate_tracker_.Contains(infobar_1));
@@ -469,10 +460,9 @@
GURL requesting_frame;
NavigateAndCommit(invalid_embedder);
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame);
+ RequestGeolocationPermission(RequestID(0), requesting_frame);
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
- CheckPermissionMessageSent(bridge_id(), false);
+ CheckPermissionMessageSent(0, false);
}
TEST_F(GeolocationPermissionContextTests, SameOriginMultipleTabs) {
@@ -483,34 +473,31 @@
AddNewTab(url_a);
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), url_a);
+ RequestGeolocationPermission(RequestID(0), url_a);
ASSERT_EQ(1U, infobar_tab_helper()->GetInfoBarCount());
- RequestGeolocationPermission(
- process_id_for_tab(0), render_id_for_tab(0), bridge_id(), url_b);
+ RequestGeolocationPermission(RequestIDForTab(0, 0), url_b);
EXPECT_EQ(1U, infobar_tab_helper_for_tab(0)->GetInfoBarCount());
- RequestGeolocationPermission(
- process_id_for_tab(1), render_id_for_tab(1), bridge_id(), url_a);
+ RequestGeolocationPermission(RequestIDForTab(1, 0), url_a);
ASSERT_EQ(1U, infobar_tab_helper_for_tab(1)->GetInfoBarCount());
ConfirmInfoBarDelegate* removed_infobar = infobar_tab_helper_for_tab(1)->
GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
// Accept the first tab.
- ConfirmInfoBarDelegate* infobar_0 = infobar_tab_helper()->
- GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
+ ConfirmInfoBarDelegate* infobar_0 =
+ infobar_tab_helper()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
ASSERT_TRUE(infobar_0);
infobar_0->Accept();
- CheckPermissionMessageSent(bridge_id(), true);
+ CheckPermissionMessageSent(0, true);
infobar_tab_helper()->RemoveInfoBar(infobar_0);
EXPECT_EQ(2U, closed_delegate_tracker_.size());
EXPECT_TRUE(closed_delegate_tracker_.Contains(infobar_0));
infobar_0->InfoBarClosed();
// Now the infobar for the tab with the same origin should have gone.
EXPECT_EQ(0U, infobar_tab_helper_for_tab(1)->GetInfoBarCount());
- CheckPermissionMessageSentForTab(1, bridge_id(), true);
+ CheckPermissionMessageSentForTab(1, 0, true);
EXPECT_TRUE(closed_delegate_tracker_.Contains(removed_infobar));
closed_delegate_tracker_.Clear();
// Destroy the infobar that has just been removed.
@@ -534,16 +521,13 @@
AddNewTab(url_a);
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), url_a);
+ RequestGeolocationPermission(RequestID(0), url_a);
ASSERT_EQ(1U, infobar_tab_helper()->GetInfoBarCount());
- RequestGeolocationPermission(
- process_id_for_tab(0), render_id_for_tab(0), bridge_id(), url_a);
+ RequestGeolocationPermission(RequestIDForTab(0, 0), url_a);
EXPECT_EQ(1U, infobar_tab_helper_for_tab(0)->GetInfoBarCount());
- RequestGeolocationPermission(
- process_id_for_tab(0), render_id_for_tab(0), bridge_id() + 1, url_b);
+ RequestGeolocationPermission(RequestIDForTab(0, 1), url_b);
ASSERT_EQ(1U, infobar_tab_helper_for_tab(0)->GetInfoBarCount());
ConfirmInfoBarDelegate* removed_infobar =
@@ -554,14 +538,14 @@
GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
ASSERT_TRUE(infobar_0);
infobar_0->Accept();
- CheckPermissionMessageSentForTab(0, bridge_id(), true);
+ CheckPermissionMessageSentForTab(0, 0, true);
infobar_tab_helper_for_tab(0)->RemoveInfoBar(infobar_0);
EXPECT_EQ(2U, closed_delegate_tracker_.size());
EXPECT_TRUE(closed_delegate_tracker_.Contains(infobar_0));
infobar_0->InfoBarClosed();
// Now the infobar for the tab with the same origin should have gone.
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
- CheckPermissionMessageSent(bridge_id(), true);
+ CheckPermissionMessageSent(0, true);
EXPECT_TRUE(closed_delegate_tracker_.Contains(removed_infobar));
closed_delegate_tracker_.Clear();
// Destroy the infobar that has just been removed.
@@ -575,7 +559,7 @@
GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
ASSERT_TRUE(infobar_1);
infobar_1->Accept();
- CheckPermissionMessageSentForTab(0, bridge_id() + 1, true);
+ CheckPermissionMessageSentForTab(0, 1, true);
infobar_tab_helper_for_tab(0)->RemoveInfoBar(infobar_1);
EXPECT_EQ(1U, closed_delegate_tracker_.size());
EXPECT_TRUE(closed_delegate_tracker_.Contains(infobar_1));
@@ -604,14 +588,12 @@
NavigateAndCommit(requesting_frame_0);
EXPECT_EQ(0U, infobar_tab_helper()->GetInfoBarCount());
// Request permission for two frames.
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame_0);
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id() + 1, requesting_frame_1);
+ RequestGeolocationPermission(RequestID(0), requesting_frame_0);
+ RequestGeolocationPermission(RequestID(1), requesting_frame_1);
// Ensure only one infobar is created.
ASSERT_EQ(1U, infobar_tab_helper()->GetInfoBarCount());
- ConfirmInfoBarDelegate* infobar_0 = infobar_tab_helper()->
- GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
+ ConfirmInfoBarDelegate* infobar_0 =
+ infobar_tab_helper()->GetInfoBarDelegateAt(0)->AsConfirmInfoBarDelegate();
ASSERT_TRUE(infobar_0);
// Delete the tab contents.
@@ -639,8 +621,7 @@
// permission.
web_contents()->GetController().GoBack();
// Request permission for the committed frame (not the pending one).
- RequestGeolocationPermission(
- process_id(), render_id(), bridge_id(), requesting_frame_1);
+ RequestGeolocationPermission(RequestID(0), requesting_frame_1);
// Ensure the infobar is created.
ASSERT_EQ(1U, infobar_tab_helper()->GetInfoBarCount());
InfoBarDelegate* infobar_0 = infobar_tab_helper()->GetInfoBarDelegateAt(0);

Powered by Google App Engine
This is Rietveld 408576698