Chromium Code Reviews

Side by Side Diff: chrome/browser/geolocation/geolocation_permission_context_unittest.cc

Issue 411503005: Change tests to prepare for turning on the permission bubble flag. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff | | Annotate | Revision Log
OLDNEW
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
11 #include "base/bind.h" 11 #include "base/bind.h"
12 #include "base/containers/hash_tables.h" 12 #include "base/containers/hash_tables.h"
13 #include "base/id_map.h" 13 #include "base/id_map.h"
14 #include "base/memory/scoped_vector.h" 14 #include "base/memory/scoped_vector.h"
15 #include "base/synchronization/waitable_event.h" 15 #include "base/synchronization/waitable_event.h"
16 #include "base/test/simple_test_clock.h" 16 #include "base/test/simple_test_clock.h"
17 #include "base/time/clock.h" 17 #include "base/time/clock.h"
18 #include "chrome/browser/chrome_notification_types.h" 18 #include "chrome/browser/chrome_notification_types.h"
19 #include "chrome/browser/content_settings/host_content_settings_map.h" 19 #include "chrome/browser/content_settings/host_content_settings_map.h"
20 #include "chrome/browser/content_settings/tab_specific_content_settings.h" 20 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
21 #include "chrome/browser/geolocation/geolocation_permission_context_factory.h" 21 #include "chrome/browser/geolocation/geolocation_permission_context_factory.h"
22 #include "chrome/browser/infobars/infobar_service.h" 22 #include "chrome/browser/infobars/infobar_service.h"
23 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h"
24 #include "chrome/browser/ui/website_settings/permission_bubble_request.h"
25 #include "chrome/browser/ui/website_settings/permission_bubble_view.h"
23 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 26 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
24 #include "chrome/test/base/testing_profile.h" 27 #include "chrome/test/base/testing_profile.h"
25 #include "components/content_settings/core/common/permission_request_id.h" 28 #include "components/content_settings/core/common/permission_request_id.h"
26 #include "components/infobars/core/confirm_infobar_delegate.h" 29 #include "components/infobars/core/confirm_infobar_delegate.h"
27 #include "components/infobars/core/infobar.h" 30 #include "components/infobars/core/infobar.h"
28 #include "content/public/browser/browser_thread.h" 31 #include "content/public/browser/browser_thread.h"
29 #include "content/public/browser/navigation_details.h" 32 #include "content/public/browser/navigation_details.h"
30 #include "content/public/browser/notification_observer.h" 33 #include "content/public/browser/notification_observer.h"
31 #include "content/public/browser/notification_registrar.h" 34 #include "content/public/browser/notification_registrar.h"
32 #include "content/public/browser/notification_service.h" 35 #include "content/public/browser/notification_service.h"
33 #include "content/public/browser/web_contents.h" 36 #include "content/public/browser/web_contents.h"
34 #include "content/public/test/mock_render_process_host.h" 37 #include "content/public/test/mock_render_process_host.h"
35 #include "content/public/test/test_renderer_host.h" 38 #include "content/public/test/test_renderer_host.h"
36 #include "content/public/test/test_utils.h" 39 #include "content/public/test/test_utils.h"
37 #include "content/public/test/web_contents_tester.h" 40 #include "content/public/test/web_contents_tester.h"
38 #include "testing/gtest/include/gtest/gtest.h" 41 #include "testing/gtest/include/gtest/gtest.h"
39 42
40 #if defined(OS_ANDROID) 43 #if defined(OS_ANDROID)
41 #include "base/prefs/pref_service.h" 44 #include "base/prefs/pref_service.h"
42 #include "chrome/browser/android/mock_google_location_settings_helper.h" 45 #include "chrome/browser/android/mock_google_location_settings_helper.h"
43 #include "chrome/common/pref_names.h" 46 #include "chrome/common/pref_names.h"
44 #endif 47 #endif
45 48
46 #if defined(ENABLE_EXTENSIONS) 49 #if defined(ENABLE_EXTENSIONS)
47 #include "extensions/browser/view_type_utils.h" 50 #include "extensions/browser/view_type_utils.h"
48 #endif 51 #endif
49 52
50 using content::MockRenderProcessHost; 53 using content::MockRenderProcessHost;
51 54
55 class MockPermissionBubbleView : public PermissionBubbleView {
56 public:
57 MockPermissionBubbleView() {}
58 virtual ~MockPermissionBubbleView() {}
59
60 virtual void SetDelegate(Delegate* delegate) OVERRIDE {
61 }
62
63 virtual void Show(
64 const std::vector<PermissionBubbleRequest*>& requests,
65 const std::vector<bool>& accept_state,
66 bool customization_mode) OVERRIDE {
67 }
68
69 virtual bool CanAcceptRequestUpdate() OVERRIDE {
70 return true;
71 }
72
73 virtual void Hide() OVERRIDE {
74 }
75
76 virtual bool IsVisible() OVERRIDE {
77 return false;
78 }
79 };
52 80
53 // ClosedInfoBarTracker ------------------------------------------------------- 81 // ClosedInfoBarTracker -------------------------------------------------------
54 82
55 // We need to track which infobars were closed. 83 // We need to track which infobars were closed.
56 class ClosedInfoBarTracker : public content::NotificationObserver { 84 class ClosedInfoBarTracker : public content::NotificationObserver {
57 public: 85 public:
58 ClosedInfoBarTracker(); 86 ClosedInfoBarTracker();
59 virtual ~ClosedInfoBarTracker(); 87 virtual ~ClosedInfoBarTracker();
60 88
61 // content::NotificationObserver: 89 // content::NotificationObserver:
(...skipping 51 matching lines...)
113 PermissionRequestID RequestIDForTab(int tab, int bridge_id); 141 PermissionRequestID RequestIDForTab(int tab, int bridge_id);
114 InfoBarService* infobar_service() { 142 InfoBarService* infobar_service() {
115 return InfoBarService::FromWebContents(web_contents()); 143 return InfoBarService::FromWebContents(web_contents());
116 } 144 }
117 InfoBarService* infobar_service_for_tab(int tab) { 145 InfoBarService* infobar_service_for_tab(int tab) {
118 return InfoBarService::FromWebContents(extra_tabs_[tab]); 146 return InfoBarService::FromWebContents(extra_tabs_[tab]);
119 } 147 }
120 148
121 void RequestGeolocationPermission(content::WebContents* web_contents, 149 void RequestGeolocationPermission(content::WebContents* web_contents,
122 const PermissionRequestID& id, 150 const PermissionRequestID& id,
123 const GURL& requesting_frame); 151 const GURL& requesting_frame,
124 152 bool user_gesture,
153 base::Closure* cancel_callback);
125 void PermissionResponse(const PermissionRequestID& id, 154 void PermissionResponse(const PermissionRequestID& id,
126 bool allowed); 155 bool allowed);
127 void CheckPermissionMessageSent(int bridge_id, bool allowed); 156 void CheckPermissionMessageSent(int bridge_id, bool allowed);
128 void CheckPermissionMessageSentForTab(int tab, int bridge_id, bool allowed); 157 void CheckPermissionMessageSentForTab(int tab, int bridge_id, bool allowed);
129 void CheckPermissionMessageSentInternal(MockRenderProcessHost* process, 158 void CheckPermissionMessageSentInternal(MockRenderProcessHost* process,
130 int bridge_id, 159 int bridge_id,
131 bool allowed); 160 bool allowed);
132 void AddNewTab(const GURL& url); 161 void AddNewTab(const GURL& url);
133 void CheckTabContentsState(const GURL& requesting_frame, 162 void CheckTabContentsState(const GURL& requesting_frame,
134 ContentSetting expected_content_setting); 163 ContentSetting expected_content_setting);
164 base::string16 GetFirstRequestText(PermissionBubbleManager* mgr);
165 int GetBubblesQueueSize(PermissionBubbleManager* mgr);
166 void AcceptBubble(PermissionBubbleManager* mgr);
167 void DenyBubble(PermissionBubbleManager* mgr);
168 void BubbleManagerDocumentLoadCompleted();
135 169
136 // owned by the browser context 170 // owned by the browser context
137 GeolocationPermissionContext* geolocation_permission_context_; 171 GeolocationPermissionContext* geolocation_permission_context_;
138 ClosedInfoBarTracker closed_infobar_tracker_; 172 ClosedInfoBarTracker closed_infobar_tracker_;
173 MockPermissionBubbleView bubble_view_;
139 ScopedVector<content::WebContents> extra_tabs_; 174 ScopedVector<content::WebContents> extra_tabs_;
140 175
141 // A map between renderer child id and a pair represending the bridge id and 176 // A map between renderer child id and a pair represending the bridge id and
142 // whether the requested permission was allowed. 177 // whether the requested permission was allowed.
143 base::hash_map<int, std::pair<int, bool> > responses_; 178 base::hash_map<int, std::pair<int, bool> > responses_;
144 }; 179 };
145 180
146 PermissionRequestID GeolocationPermissionContextTests::RequestID( 181 PermissionRequestID GeolocationPermissionContextTests::RequestID(
147 int bridge_id) { 182 int bridge_id) {
148 return PermissionRequestID( 183 return PermissionRequestID(
149 web_contents()->GetRenderProcessHost()->GetID(), 184 web_contents()->GetRenderProcessHost()->GetID(),
150 web_contents()->GetRenderViewHost()->GetRoutingID(), 185 web_contents()->GetRenderViewHost()->GetRoutingID(),
151 bridge_id, 186 bridge_id,
152 GURL()); 187 GURL());
153 } 188 }
154 189
155 PermissionRequestID GeolocationPermissionContextTests::RequestIDForTab( 190 PermissionRequestID GeolocationPermissionContextTests::RequestIDForTab(
156 int tab, 191 int tab,
157 int bridge_id) { 192 int bridge_id) {
158 return PermissionRequestID( 193 return PermissionRequestID(
159 extra_tabs_[tab]->GetRenderProcessHost()->GetID(), 194 extra_tabs_[tab]->GetRenderProcessHost()->GetID(),
160 extra_tabs_[tab]->GetRenderViewHost()->GetRoutingID(), 195 extra_tabs_[tab]->GetRenderViewHost()->GetRoutingID(),
161 bridge_id, 196 bridge_id,
162 GURL()); 197 GURL());
163 } 198 }
164 199
165 void GeolocationPermissionContextTests::RequestGeolocationPermission( 200 void GeolocationPermissionContextTests::RequestGeolocationPermission(
166 content::WebContents* web_contents, 201 content::WebContents* web_contents,
167 const PermissionRequestID& id, 202 const PermissionRequestID& id,
168 const GURL& requesting_frame) { 203 const GURL& requesting_frame,
204 bool user_gesture) {
169 geolocation_permission_context_->RequestPermission( 205 geolocation_permission_context_->RequestPermission(
170 web_contents, id, requesting_frame, false, 206 web_contents, id, requesting_frame, user_gesture, NULL);
207 }
208
209 void GeolocationPermissionContextTests::RequestGeolocationPermission(
210 content::WebContents* web_contents,
211 const PermissionRequestID& id,
212 const GURL& requesting_frame,
213 bool user_gesture,
214 base::Closure* cancel_callback) {
215 geolocation_permission_context_->RequestGeolocationPermission(
216 web_contents, id.bridge_id(), requesting_frame, user_gesture,
171 base::Bind(&GeolocationPermissionContextTests::PermissionResponse, 217 base::Bind(&GeolocationPermissionContextTests::PermissionResponse,
172 base::Unretained(this), id)); 218 base::Unretained(this), id));
173 content::RunAllBlockingPoolTasksUntilIdle(); 219 content::RunAllBlockingPoolTasksUntilIdle();
174 } 220 }
175 221
176 void GeolocationPermissionContextTests::PermissionResponse( 222 void GeolocationPermissionContextTests::PermissionResponse(
177 const PermissionRequestID& id, 223 const PermissionRequestID& id,
178 bool allowed) { 224 bool allowed) {
179 responses_[id.render_process_id()] = std::make_pair(id.bridge_id(), allowed); 225 responses_[id.render_process_id()] = std::make_pair(id.bridge_id(), allowed);
180 } 226 }
(...skipping 40 matching lines...)
221 extra_tabs_.push_back(new_tab); 267 extra_tabs_.push_back(new_tab);
222 } 268 }
223 269
224 void GeolocationPermissionContextTests::CheckTabContentsState( 270 void GeolocationPermissionContextTests::CheckTabContentsState(
225 const GURL& requesting_frame, 271 const GURL& requesting_frame,
226 ContentSetting expected_content_setting) { 272 ContentSetting expected_content_setting) {
227 TabSpecificContentSettings* content_settings = 273 TabSpecificContentSettings* content_settings =
228 TabSpecificContentSettings::FromWebContents(web_contents()); 274 TabSpecificContentSettings::FromWebContents(web_contents());
229 const ContentSettingsUsagesState::StateMap& state_map = 275 const ContentSettingsUsagesState::StateMap& state_map =
230 content_settings->geolocation_usages_state().state_map(); 276 content_settings->geolocation_usages_state().state_map();
231 EXPECT_EQ(1U, state_map.count(requesting_frame.GetOrigin())); 277 EXPECT_EQ(1U, state_map.count(requesting_frame.GetOrigin()))
232 EXPECT_EQ(0U, state_map.count(requesting_frame)); 278 << " for " << requesting_frame.spec();
279 EXPECT_EQ(0U, state_map.count(requesting_frame))
280 << " for " << requesting_frame.spec();
233 ContentSettingsUsagesState::StateMap::const_iterator settings = 281 ContentSettingsUsagesState::StateMap::const_iterator settings =
234 state_map.find(requesting_frame.GetOrigin()); 282 state_map.find(requesting_frame.GetOrigin());
235 ASSERT_FALSE(settings == state_map.end()) 283 ASSERT_FALSE(settings == state_map.end())
236 << "geolocation state not found " << requesting_frame; 284 << "geolocation state not found " << requesting_frame;
237 EXPECT_EQ(expected_content_setting, settings->second); 285 EXPECT_EQ(expected_content_setting, settings->second)
286 << " for " << requesting_frame.spec();
238 } 287 }
239 288
240 void GeolocationPermissionContextTests::SetUp() { 289 void GeolocationPermissionContextTests::SetUp() {
241 ChromeRenderViewHostTestHarness::SetUp(); 290 ChromeRenderViewHostTestHarness::SetUp();
242 291
243 // Set up required helpers, and make this be as "tabby" as the code requires. 292 // Set up required helpers, and make this be as "tabby" as the code requires.
244 #if defined(ENABLE_EXTENSIONS) 293 #if defined(ENABLE_EXTENSIONS)
245 extensions::SetViewType(web_contents(), extensions::VIEW_TYPE_TAB_CONTENTS); 294 extensions::SetViewType(web_contents(), extensions::VIEW_TYPE_TAB_CONTENTS);
246 #endif 295 #endif
247 InfoBarService::CreateForWebContents(web_contents()); 296 InfoBarService::CreateForWebContents(web_contents());
248 TabSpecificContentSettings::CreateForWebContents(web_contents()); 297 TabSpecificContentSettings::CreateForWebContents(web_contents());
249 #if defined(OS_ANDROID) 298 #if defined(OS_ANDROID)
250 MockGoogleLocationSettingsHelper::SetLocationStatus(true, true); 299 MockGoogleLocationSettingsHelper::SetLocationStatus(true, true);
251 #endif 300 #endif
252 geolocation_permission_context_ = 301 geolocation_permission_context_ =
253 GeolocationPermissionContextFactory::GetForProfile(profile()); 302 GeolocationPermissionContextFactory::GetForProfile(profile());
303
304 PermissionBubbleManager::CreateForWebContents(web_contents());
305 PermissionBubbleManager::FromWebContents(web_contents())->SetView(
306 &bubble_view_);
254 } 307 }
255 308
256 void GeolocationPermissionContextTests::TearDown() { 309 void GeolocationPermissionContextTests::TearDown() {
257 extra_tabs_.clear(); 310 extra_tabs_.clear();
258 ChromeRenderViewHostTestHarness::TearDown(); 311 ChromeRenderViewHostTestHarness::TearDown();
259 } 312 }
260 313
314 base::string16 GeolocationPermissionContextTests::GetFirstRequestText(
315 PermissionBubbleManager* mgr) {
316 return mgr->requests_.front()->GetMessageText();
317 }
318
319 int GeolocationPermissionContextTests::GetBubblesQueueSize(
320 PermissionBubbleManager* mgr) {
321 return static_cast<int>(mgr->requests_.size());
322 }
323
324 void GeolocationPermissionContextTests::AcceptBubble(
325 PermissionBubbleManager* mgr) {
326 mgr->Accept();
327 }
328
329 void GeolocationPermissionContextTests::DenyBubble(
330 PermissionBubbleManager* mgr) {
331 mgr->Deny();
332 }
333
334 void GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted() {
335 PermissionBubbleManager::FromWebContents(web_contents())->
336 DocumentOnLoadCompletedInMainFrame();
337 }
338
261 // Tests ---------------------------------------------------------------------- 339 // Tests ----------------------------------------------------------------------
262 340
263 TEST_F(GeolocationPermissionContextTests, SinglePermission) { 341 TEST_F(GeolocationPermissionContextTests, SinglePermissionInfobar) {
342 if (PermissionBubbleManager::Enabled())
343 return;
344
264 GURL requesting_frame("http://www.example.com/geolocation"); 345 GURL requesting_frame("http://www.example.com/geolocation");
265 NavigateAndCommit(requesting_frame); 346 NavigateAndCommit(requesting_frame);
266 EXPECT_EQ(0U, infobar_service()->infobar_count()); 347 EXPECT_EQ(0U, infobar_service()->infobar_count());
267 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); 348 RequestGeolocationPermission(
349 web_contents(), RequestID(0), requesting_frame, true);
268 ASSERT_EQ(1U, infobar_service()->infobar_count()); 350 ASSERT_EQ(1U, infobar_service()->infobar_count());
269 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); 351 infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
270 ConfirmInfoBarDelegate* infobar_delegate = 352 ConfirmInfoBarDelegate* infobar_delegate =
271 infobar->delegate()->AsConfirmInfoBarDelegate(); 353 infobar->delegate()->AsConfirmInfoBarDelegate();
272 ASSERT_TRUE(infobar_delegate); 354 ASSERT_TRUE(infobar_delegate);
273 infobar_delegate->Cancel(); 355 infobar_delegate->Cancel();
274 infobar_service()->RemoveInfoBar(infobar); 356 infobar_service()->RemoveInfoBar(infobar);
275 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 357 EXPECT_EQ(1U, closed_infobar_tracker_.size());
276 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar)); 358 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar));
277 } 359 }
278 360
361 TEST_F(GeolocationPermissionContextTests, SinglePermissionBubble) {
362 if (!PermissionBubbleManager::Enabled())
363 return;
364
365 GURL requesting_frame("http://www.example.com/geolocation");
366 NavigateAndCommit(requesting_frame);
367 BubbleManagerDocumentLoadCompleted();
368 EXPECT_EQ(0U, infobar_service()->infobar_count());
369 RequestGeolocationPermission(
370 web_contents(), RequestID(0), requesting_frame, true);
371 PermissionBubbleManager* mgr =
372 PermissionBubbleManager::FromWebContents(web_contents());
373 ASSERT_EQ(1, GetBubblesQueueSize(mgr));
374 }
375
279 #if defined(OS_ANDROID) 376 #if defined(OS_ANDROID)
280 TEST_F(GeolocationPermissionContextTests, GeolocationEnabledDisabled) { 377 TEST_F(GeolocationPermissionContextTests, GeolocationEnabledDisabled) {
281 GURL requesting_frame("http://www.example.com/geolocation"); 378 GURL requesting_frame("http://www.example.com/geolocation");
282 NavigateAndCommit(requesting_frame); 379 NavigateAndCommit(requesting_frame);
283 MockGoogleLocationSettingsHelper::SetLocationStatus(true, true); 380 MockGoogleLocationSettingsHelper::SetLocationStatus(true, true);
284 EXPECT_EQ(0U, infobar_service()->infobar_count()); 381 EXPECT_EQ(0U, infobar_service()->infobar_count());
285 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); 382 RequestGeolocationPermission(
383 web_contents(), RequestID(0), requesting_frame, true);
286 EXPECT_EQ(1U, infobar_service()->infobar_count()); 384 EXPECT_EQ(1U, infobar_service()->infobar_count());
287 ConfirmInfoBarDelegate* infobar_delegate_0 = 385 ConfirmInfoBarDelegate* infobar_delegate_0 =
288 infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate(); 386 infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate();
289 ASSERT_TRUE(infobar_delegate_0); 387 ASSERT_TRUE(infobar_delegate_0);
290 base::string16 text_0 = infobar_delegate_0->GetButtonLabel( 388 base::string16 text_0 = infobar_delegate_0->GetButtonLabel(
291 ConfirmInfoBarDelegate::BUTTON_OK); 389 ConfirmInfoBarDelegate::BUTTON_OK);
292 390
293 Reload(); 391 Reload();
294 MockGoogleLocationSettingsHelper::SetLocationStatus(true, false); 392 MockGoogleLocationSettingsHelper::SetLocationStatus(true, false);
295 EXPECT_EQ(0U, infobar_service()->infobar_count()); 393 EXPECT_EQ(0U, infobar_service()->infobar_count());
296 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); 394 RequestGeolocationPermission(
297 EXPECT_EQ(0U, infobar_service()->infobar_count()); 395 web_contents(), RequestID(0), requesting_frame, true);
396 RequestGeolocationPermission(
397 web_contents(), RequestID(0), requesting_frame, true);
398 EXPECT_EQ(1U, infobar_service()->infobar_count());
298 } 399 }
299 400
300 TEST_F(GeolocationPermissionContextTests, MasterEnabledGoogleAppsEnabled) { 401 TEST_F(GeolocationPermissionContextTests, MasterEnabledGoogleAppsEnabled) {
301 GURL requesting_frame("http://www.example.com/geolocation"); 402 GURL requesting_frame("http://www.example.com/geolocation");
302 NavigateAndCommit(requesting_frame); 403 NavigateAndCommit(requesting_frame);
303 MockGoogleLocationSettingsHelper::SetLocationStatus(true, true); 404 MockGoogleLocationSettingsHelper::SetLocationStatus(true, true);
304 EXPECT_EQ(0U, infobar_service()->infobar_count()); 405 EXPECT_EQ(0U, infobar_service()->infobar_count());
305 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); 406 RequestGeolocationPermission(
407 web_contents(), RequestID(0), requesting_frame, true);
306 EXPECT_EQ(1U, infobar_service()->infobar_count()); 408 EXPECT_EQ(1U, infobar_service()->infobar_count());
307 ConfirmInfoBarDelegate* infobar_delegate = 409 ConfirmInfoBarDelegate* infobar_delegate =
308 infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate(); 410 infobar_service()->infobar_at(0)->delegate()->AsConfirmInfoBarDelegate();
309 ASSERT_TRUE(infobar_delegate); 411 ASSERT_TRUE(infobar_delegate);
310 infobar_delegate->Accept(); 412 infobar_delegate->Accept();
311 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW); 413 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW);
312 CheckPermissionMessageSent(0, true); 414 CheckPermissionMessageSent(0, true);
313 } 415 }
314 416
315 TEST_F(GeolocationPermissionContextTests, MasterEnabledGoogleAppsDisabled) { 417 TEST_F(GeolocationPermissionContextTests, MasterEnabledGoogleAppsDisabled) {
316 GURL requesting_frame("http://www.example.com/geolocation"); 418 GURL requesting_frame("http://www.example.com/geolocation");
317 NavigateAndCommit(requesting_frame); 419 NavigateAndCommit(requesting_frame);
318 MockGoogleLocationSettingsHelper::SetLocationStatus(true, false); 420 MockGoogleLocationSettingsHelper::SetLocationStatus(true, false);
319 EXPECT_EQ(0U, infobar_service()->infobar_count()); 421 EXPECT_EQ(0U, infobar_service()->infobar_count());
320 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); 422 RequestGeolocationPermission(
423 web_contents(), RequestID(0), requesting_frame, true);
321 EXPECT_EQ(0U, infobar_service()->infobar_count()); 424 EXPECT_EQ(0U, infobar_service()->infobar_count());
322 } 425 }
323 #endif 426 #endif
324 427
325 TEST_F(GeolocationPermissionContextTests, QueuedPermission) { 428 TEST_F(GeolocationPermissionContextTests, QueuedPermissionInfobar) {
429 if (PermissionBubbleManager::Enabled())
430 return;
431
326 GURL requesting_frame_0("http://www.example.com/geolocation"); 432 GURL requesting_frame_0("http://www.example.com/geolocation");
327 GURL requesting_frame_1("http://www.example-2.com/geolocation"); 433 GURL requesting_frame_1("http://www.example-2.com/geolocation");
328 EXPECT_EQ(CONTENT_SETTING_ASK, 434 EXPECT_EQ(CONTENT_SETTING_ASK,
329 profile()->GetHostContentSettingsMap()->GetContentSetting( 435 profile()->GetHostContentSettingsMap()->GetContentSetting(
330 requesting_frame_0, requesting_frame_0, 436 requesting_frame_0, requesting_frame_0,
331 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 437 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
332 EXPECT_EQ(CONTENT_SETTING_ASK, 438 EXPECT_EQ(CONTENT_SETTING_ASK,
333 profile()->GetHostContentSettingsMap()->GetContentSetting( 439 profile()->GetHostContentSettingsMap()->GetContentSetting(
334 requesting_frame_1, requesting_frame_0, 440 requesting_frame_1, requesting_frame_0,
335 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 441 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
336 442
337 NavigateAndCommit(requesting_frame_0); 443 NavigateAndCommit(requesting_frame_0);
338 EXPECT_EQ(0U, infobar_service()->infobar_count()); 444 EXPECT_EQ(0U, infobar_service()->infobar_count());
339 // Request permission for two frames. 445 // Request permission for two frames.
340 RequestGeolocationPermission( 446 RequestGeolocationPermission(
341 web_contents(), RequestID(0), requesting_frame_0); 447 web_contents(), RequestID(0), requesting_frame_0, true);
342 RequestGeolocationPermission( 448 RequestGeolocationPermission(
343 web_contents(), RequestID(1), requesting_frame_1); 449 web_contents(), RequestID(1), requesting_frame_1, true);
344 // Ensure only one infobar is created. 450 // Ensure only one infobar is created.
345 ASSERT_EQ(1U, infobar_service()->infobar_count()); 451 ASSERT_EQ(1U, infobar_service()->infobar_count());
346 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0); 452 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
347 ConfirmInfoBarDelegate* infobar_delegate_0 = 453 ConfirmInfoBarDelegate* infobar_delegate_0 =
348 infobar_0->delegate()->AsConfirmInfoBarDelegate(); 454 infobar_0->delegate()->AsConfirmInfoBarDelegate();
349 ASSERT_TRUE(infobar_delegate_0); 455 ASSERT_TRUE(infobar_delegate_0);
350 base::string16 text_0 = infobar_delegate_0->GetMessageText(); 456 base::string16 text_0 = infobar_delegate_0->GetMessageText();
351 457
352 // Accept the first frame. 458 // Accept the first frame.
353 infobar_delegate_0->Accept(); 459 infobar_delegate_0->Accept();
(...skipping 27 matching lines...)
381 profile()->GetHostContentSettingsMap()->GetContentSetting( 487 profile()->GetHostContentSettingsMap()->GetContentSetting(
382 requesting_frame_0, requesting_frame_0, 488 requesting_frame_0, requesting_frame_0,
383 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 489 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
384 490
385 EXPECT_EQ(CONTENT_SETTING_BLOCK, 491 EXPECT_EQ(CONTENT_SETTING_BLOCK,
386 profile()->GetHostContentSettingsMap()->GetContentSetting( 492 profile()->GetHostContentSettingsMap()->GetContentSetting(
387 requesting_frame_1, requesting_frame_0, 493 requesting_frame_1, requesting_frame_0,
388 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 494 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
389 } 495 }
390 496
391 TEST_F(GeolocationPermissionContextTests, HashIsIgnored) { 497 TEST_F(GeolocationPermissionContextTests, QueuedPermissionBubble) {
498 if (!PermissionBubbleManager::Enabled())
499 return;
500
501 GURL requesting_frame_0("http://www.example.com/geolocation");
502 GURL requesting_frame_1("http://www.example-2.com/geolocation");
503 EXPECT_EQ(CONTENT_SETTING_ASK,
504 profile()->GetHostContentSettingsMap()->GetContentSetting(
505 requesting_frame_0, requesting_frame_0,
506 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
507 EXPECT_EQ(CONTENT_SETTING_ASK,
508 profile()->GetHostContentSettingsMap()->GetContentSetting(
509 requesting_frame_1, requesting_frame_0,
510 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
511
512 NavigateAndCommit(requesting_frame_0);
513 BubbleManagerDocumentLoadCompleted();
514
515 PermissionBubbleManager* mgr =
516 PermissionBubbleManager::FromWebContents(web_contents());
517 ASSERT_EQ(0, GetBubblesQueueSize(mgr));
518
519 // Request permission for two frames.
520 RequestGeolocationPermission(
521 web_contents(), RequestID(0), requesting_frame_0, true);
522 RequestGeolocationPermission(
523 web_contents(), RequestID(1), requesting_frame_1, true);
524 // Only main frame permission shown.
525 ASSERT_EQ(1, GetBubblesQueueSize(mgr));
526 base::string16 text_0 = GetFirstRequestText(mgr);
527
528 // Accept the first frame.
529 AcceptBubble(mgr);
530 CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW);
531 CheckPermissionMessageSent(0, true);
532
533 // Now we should have a new bubble for the second frame.
534 EXPECT_EQ(1, GetBubblesQueueSize(mgr));
535
536 base::string16 text_1 = GetFirstRequestText(mgr);
537 EXPECT_NE(text_0, text_1);
538
539 // Cancel (block) this frame.
540 DenyBubble(mgr);
541 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_BLOCK);
542 CheckPermissionMessageSent(1, false);
543
544 // Ensure the persisted permissions are ok.
545 EXPECT_EQ(CONTENT_SETTING_ALLOW,
546 profile()->GetHostContentSettingsMap()->GetContentSetting(
547 requesting_frame_0, requesting_frame_0,
548 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
549
550 EXPECT_EQ(CONTENT_SETTING_BLOCK,
551 profile()->GetHostContentSettingsMap()->GetContentSetting(
552 requesting_frame_1, requesting_frame_0,
553 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
554 }
555
556 TEST_F(GeolocationPermissionContextTests, UrlFragmentIsIgnoredInfobar) {
557 if (PermissionBubbleManager::Enabled())
558 return;
559
392 GURL url_a("http://www.example.com/geolocation#a"); 560 GURL url_a("http://www.example.com/geolocation#a");
393 GURL url_b("http://www.example.com/geolocation#b"); 561 GURL url_b("http://www.example.com/geolocation#b");
394 562
395 // Navigate to the first url and check permission is requested. 563 // Navigate to the first url and check permission is requested.
396 NavigateAndCommit(url_a); 564 NavigateAndCommit(url_a);
397 EXPECT_EQ(0U, infobar_service()->infobar_count()); 565 EXPECT_EQ(0U, infobar_service()->infobar_count());
398 RequestGeolocationPermission(web_contents(), RequestID(0), url_a); 566 RequestGeolocationPermission(web_contents(), RequestID(0), url_a, true);
399 ASSERT_EQ(1U, infobar_service()->infobar_count()); 567 ASSERT_EQ(1U, infobar_service()->infobar_count());
400 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); 568 infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
401 ConfirmInfoBarDelegate* infobar_delegate = 569 ConfirmInfoBarDelegate* infobar_delegate =
402 infobar->delegate()->AsConfirmInfoBarDelegate(); 570 infobar->delegate()->AsConfirmInfoBarDelegate();
403 ASSERT_TRUE(infobar_delegate); 571 ASSERT_TRUE(infobar_delegate);
404 572
405 // Change the hash, we'll still be on the same page. 573 // Change the hash, we'll still be on the same page.
406 NavigateAndCommit(url_b); 574 NavigateAndCommit(url_b);
407 575
408 // Accept. 576 // Accept.
409 infobar_delegate->Accept(); 577 infobar_delegate->Accept();
410 CheckTabContentsState(url_a, CONTENT_SETTING_ALLOW); 578 CheckTabContentsState(url_a, CONTENT_SETTING_ALLOW);
411 CheckTabContentsState(url_b, CONTENT_SETTING_ALLOW); 579 CheckTabContentsState(url_b, CONTENT_SETTING_ALLOW);
412 CheckPermissionMessageSent(0, true); 580 CheckPermissionMessageSent(0, true);
413 581
414 // Cleanup. 582 // Cleanup.
415 infobar_service()->RemoveInfoBar(infobar); 583 infobar_service()->RemoveInfoBar(infobar);
416 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 584 EXPECT_EQ(1U, closed_infobar_tracker_.size());
417 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar)); 585 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar));
418 } 586 }
419 587
420 TEST_F(GeolocationPermissionContextTests, PermissionForFileScheme) { 588 TEST_F(GeolocationPermissionContextTests, UrlFragmentIsIgnoredBubble) {
589 if (!PermissionBubbleManager::Enabled())
590 return;
591
592 GURL url_a("http://www.example.com/geolocation#a");
593 GURL url_b("http://www.example.com/geolocation#b");
594
595 // Navigate to the first url and check permission is requested.
596 NavigateAndCommit(url_a);
597 BubbleManagerDocumentLoadCompleted();
598
599 PermissionBubbleManager* mgr =
600 PermissionBubbleManager::FromWebContents(web_contents());
601 ASSERT_EQ(0, GetBubblesQueueSize(mgr));
602
603 RequestGeolocationPermission(web_contents(), RequestID(0), url_a, true);
604 ASSERT_EQ(1, GetBubblesQueueSize(mgr));
605
606 // Change the hash, we'll still be on the same page.
607 NavigateAndCommit(url_b);
608 BubbleManagerDocumentLoadCompleted();
609 ASSERT_EQ(1, GetBubblesQueueSize(mgr));
610
611 // Accept.
612 AcceptBubble(mgr);
613 CheckTabContentsState(url_a, CONTENT_SETTING_ALLOW);
614 CheckTabContentsState(url_b, CONTENT_SETTING_ALLOW);
615 CheckPermissionMessageSent(0, true);
616 }
617
618 TEST_F(GeolocationPermissionContextTests, PermissionForFileSchemeInfobars) {
619 if (PermissionBubbleManager::Enabled())
620 return;
621
421 GURL requesting_frame("file://example/geolocation.html"); 622 GURL requesting_frame("file://example/geolocation.html");
422 NavigateAndCommit(requesting_frame); 623 NavigateAndCommit(requesting_frame);
423 EXPECT_EQ(0U, infobar_service()->infobar_count()); 624 EXPECT_EQ(0U, infobar_service()->infobar_count());
424 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); 625 RequestGeolocationPermission(
626 web_contents(), RequestID(0), requesting_frame, true);
425 EXPECT_EQ(1U, infobar_service()->infobar_count()); 627 EXPECT_EQ(1U, infobar_service()->infobar_count());
426 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); 628 infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
427 ConfirmInfoBarDelegate* infobar_delegate = 629 ConfirmInfoBarDelegate* infobar_delegate =
428 infobar->delegate()->AsConfirmInfoBarDelegate(); 630 infobar->delegate()->AsConfirmInfoBarDelegate();
429 ASSERT_TRUE(infobar_delegate); 631 ASSERT_TRUE(infobar_delegate);
430 // Accept the frame. 632 // Accept the frame.
431 infobar_delegate->Accept(); 633 infobar_delegate->Accept();
432 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW); 634 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW);
433 CheckPermissionMessageSent(0, true); 635 CheckPermissionMessageSent(0, true);
434 infobar_service()->RemoveInfoBar(infobar); 636 infobar_service()->RemoveInfoBar(infobar);
435 637
436 // Make sure the setting is not stored. 638 // Make sure the setting is not stored.
437 EXPECT_EQ(CONTENT_SETTING_ASK, 639 EXPECT_EQ(CONTENT_SETTING_ASK,
438 profile()->GetHostContentSettingsMap()->GetContentSetting( 640 profile()->GetHostContentSettingsMap()->GetContentSetting(
439 requesting_frame, 641 requesting_frame,
440 requesting_frame, 642 requesting_frame,
441 CONTENT_SETTINGS_TYPE_GEOLOCATION, 643 CONTENT_SETTINGS_TYPE_GEOLOCATION,
442 std::string())); 644 std::string()));
443 } 645 }
444 646
445 TEST_F(GeolocationPermissionContextTests, CancelGeolocationPermissionRequest) { 647 TEST_F(GeolocationPermissionContextTests, PermissionForFileSchemeBubbles) {
648 if (!PermissionBubbleManager::Enabled())
649 return;
650
651 GURL requesting_frame("file://example/geolocation.html");
652 NavigateAndCommit(requesting_frame);
653 BubbleManagerDocumentLoadCompleted();
654
655 PermissionBubbleManager* mgr =
656 PermissionBubbleManager::FromWebContents(web_contents());
657 ASSERT_EQ(0, GetBubblesQueueSize(mgr));
658 RequestGeolocationPermission(
659 web_contents(), RequestID(0), requesting_frame, true);
660 ASSERT_EQ(1, GetBubblesQueueSize(mgr));
661
662 // Accept the frame.
663 AcceptBubble(mgr);
664 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW);
665 CheckPermissionMessageSent(0, true);
666
667 // Make sure the setting is not stored.
668 EXPECT_EQ(CONTENT_SETTING_ASK,
669 profile()->GetHostContentSettingsMap()->GetContentSetting(
670 requesting_frame,
671 requesting_frame,
672 CONTENT_SETTINGS_TYPE_GEOLOCATION,
673 std::string()));
674 }
675
676 TEST_F(GeolocationPermissionContextTests,
677 CancelGeolocationPermissionRequestInfobar) {
678 if (PermissionBubbleManager::Enabled())
679 return;
680
446 GURL requesting_frame_0("http://www.example.com/geolocation"); 681 GURL requesting_frame_0("http://www.example.com/geolocation");
447 GURL requesting_frame_1("http://www.example-2.com/geolocation"); 682 GURL requesting_frame_1("http://www.example-2.com/geolocation");
448 EXPECT_EQ(CONTENT_SETTING_ASK, 683 EXPECT_EQ(CONTENT_SETTING_ASK,
449 profile()->GetHostContentSettingsMap()->GetContentSetting( 684 profile()->GetHostContentSettingsMap()->GetContentSetting(
450 requesting_frame_0, requesting_frame_0, 685 requesting_frame_0, requesting_frame_0,
451 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 686 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
452 687
453 EXPECT_EQ(CONTENT_SETTING_ASK, 688 EXPECT_EQ(CONTENT_SETTING_ASK,
454 profile()->GetHostContentSettingsMap()->GetContentSetting( 689 profile()->GetHostContentSettingsMap()->GetContentSetting(
455 requesting_frame_1, requesting_frame_0, 690 requesting_frame_1, requesting_frame_0,
456 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 691 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
457 692
458 NavigateAndCommit(requesting_frame_0); 693 NavigateAndCommit(requesting_frame_0);
459 EXPECT_EQ(0U, infobar_service()->infobar_count()); 694 EXPECT_EQ(0U, infobar_service()->infobar_count());
460 695
461 // Request permission for two frames. 696 // Request permission for two frames.
462 RequestGeolocationPermission( 697 RequestGeolocationPermission(
463 web_contents(), RequestID(0), requesting_frame_0); 698 web_contents(), RequestID(0), requesting_frame_0, true, &cancel_callback);
464 RequestGeolocationPermission( 699 RequestGeolocationPermission(
465 web_contents(), RequestID(1), requesting_frame_1); 700 web_contents(), RequestID(1), requesting_frame_1, true);
466 ASSERT_EQ(1U, infobar_service()->infobar_count()); 701 ASSERT_EQ(1U, infobar_service()->infobar_count());
467 702
468 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0); 703 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
469 ConfirmInfoBarDelegate* infobar_delegate_0 = 704 ConfirmInfoBarDelegate* infobar_delegate_0 =
470 infobar_0->delegate()->AsConfirmInfoBarDelegate(); 705 infobar_0->delegate()->AsConfirmInfoBarDelegate();
471 ASSERT_TRUE(infobar_delegate_0); 706 ASSERT_TRUE(infobar_delegate_0);
472 base::string16 text_0 = infobar_delegate_0->GetMessageText(); 707 base::string16 text_0 = infobar_delegate_0->GetMessageText();
473 708
474 // Simulate the frame going away, ensure the infobar for this frame 709 // Simulate the frame going away, ensure the infobar for this frame
475 // is removed and the next pending infobar is created. 710 // is removed and the next pending infobar is created.
(...skipping 24 matching lines...)
500 profile()->GetHostContentSettingsMap()->GetContentSetting( 735 profile()->GetHostContentSettingsMap()->GetContentSetting(
501 requesting_frame_0, requesting_frame_0, 736 requesting_frame_0, requesting_frame_0,
502 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 737 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
503 738
504 EXPECT_EQ(CONTENT_SETTING_ALLOW, 739 EXPECT_EQ(CONTENT_SETTING_ALLOW,
505 profile()->GetHostContentSettingsMap()->GetContentSetting( 740 profile()->GetHostContentSettingsMap()->GetContentSetting(
506 requesting_frame_1, requesting_frame_0, 741 requesting_frame_1, requesting_frame_0,
507 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 742 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
508 } 743 }
509 744
745 TEST_F(GeolocationPermissionContextTests,
746 CancelGeolocationPermissionRequestBubbles) {
747 if (!PermissionBubbleManager::Enabled())
748 return;
749
750 GURL requesting_frame_0("http://www.example.com/geolocation");
751 GURL requesting_frame_1("http://www.example-2.com/geolocation");
752 EXPECT_EQ(CONTENT_SETTING_ASK,
753 profile()->GetHostContentSettingsMap()->GetContentSetting(
754 requesting_frame_0, requesting_frame_0,
755 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
756
757 EXPECT_EQ(CONTENT_SETTING_ASK,
758 profile()->GetHostContentSettingsMap()->GetContentSetting(
759 requesting_frame_1, requesting_frame_0,
760 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
761
762 NavigateAndCommit(requesting_frame_0);
763 BubbleManagerDocumentLoadCompleted();
764 EXPECT_EQ(0U, infobar_service()->infobar_count());
765 // Request permission for two frames.
766 base::Closure cancel_callback;
767 RequestGeolocationPermission(
768 web_contents(), RequestID(0), requesting_frame_0, true, &cancel_callback);
769 RequestGeolocationPermission(
770 web_contents(), RequestID(1), requesting_frame_1, true);
771
772 PermissionBubbleManager* mgr =
773 PermissionBubbleManager::FromWebContents(web_contents());
774 ASSERT_TRUE(mgr != NULL);
775 ASSERT_EQ(1, GetBubblesQueueSize(mgr));
776 base::string16 text_0 = GetFirstRequestText(mgr);
777 ASSERT_NE(base::string16(), text_0);
778
779 // Cancel the request. This will still leave the bubble showing, since
780 // the request is showing in the view. It will just be dummied.
781 cancel_callback.Run();
782 AcceptBubble(mgr); // Dummy accept
783 base::string16 text_1 = GetFirstRequestText(mgr);
784 EXPECT_NE(text_0, text_1);
785
786 // Allow this frame.
787 AcceptBubble(mgr);
788 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_ALLOW);
789 CheckPermissionMessageSent(1, true);
790 EXPECT_EQ(0, GetBubblesQueueSize(mgr));
791
792 // Ensure the persisted permissions are ok.
793 EXPECT_EQ(CONTENT_SETTING_ASK,
794 profile()->GetHostContentSettingsMap()->GetContentSetting(
795 requesting_frame_0, requesting_frame_0,
796 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
797
798 EXPECT_EQ(CONTENT_SETTING_ALLOW,
799 profile()->GetHostContentSettingsMap()->GetContentSetting(
800 requesting_frame_1, requesting_frame_0,
801 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
802 }
803
510 TEST_F(GeolocationPermissionContextTests, InvalidURL) { 804 TEST_F(GeolocationPermissionContextTests, InvalidURL) {
511 GURL invalid_embedder("about:blank"); 805 GURL invalid_embedder("about:blank");
512 GURL requesting_frame; 806 GURL requesting_frame;
513 NavigateAndCommit(invalid_embedder); 807 NavigateAndCommit(invalid_embedder);
514 EXPECT_EQ(0U, infobar_service()->infobar_count()); 808 EXPECT_EQ(0U, infobar_service()->infobar_count());
515 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); 809 RequestGeolocationPermission(
810 web_contents(), RequestID(0), requesting_frame, true);
516 EXPECT_EQ(0U, infobar_service()->infobar_count()); 811 EXPECT_EQ(0U, infobar_service()->infobar_count());
517 CheckPermissionMessageSent(0, false); 812 CheckPermissionMessageSent(0, false);
518 } 813 }
519 814
520 TEST_F(GeolocationPermissionContextTests, SameOriginMultipleTabs) { 815 TEST_F(GeolocationPermissionContextTests, SameOriginMultipleTabsInfobar) {
816 if (PermissionBubbleManager::Enabled())
817 return;
818
521 GURL url_a("http://www.example.com/geolocation"); 819 GURL url_a("http://www.example.com/geolocation");
522 GURL url_b("http://www.example-2.com/geolocation"); 820 GURL url_b("http://www.example-2.com/geolocation");
523 NavigateAndCommit(url_a); 821 NavigateAndCommit(url_a);
524 AddNewTab(url_b); 822 AddNewTab(url_b);
525 AddNewTab(url_a); 823 AddNewTab(url_a);
526 824
527 EXPECT_EQ(0U, infobar_service()->infobar_count()); 825 EXPECT_EQ(0U, infobar_service()->infobar_count());
528 RequestGeolocationPermission(web_contents(), RequestID(0), url_a); 826 RequestGeolocationPermission(web_contents(), RequestID(0), url_a, true);
529 ASSERT_EQ(1U, infobar_service()->infobar_count()); 827 ASSERT_EQ(1U, infobar_service()->infobar_count());
530 828
531 RequestGeolocationPermission(extra_tabs_[0], RequestIDForTab(0, 0), url_b); 829 RequestGeolocationPermission(
830 extra_tabs_[0], RequestIDForTab(0, 0), url_b, true);
532 EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); 831 EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
533 832
534 RequestGeolocationPermission(extra_tabs_[1], RequestIDForTab(1, 0), url_a); 833 RequestGeolocationPermission(
834 extra_tabs_[1], RequestIDForTab(1, 0), url_a, true);
535 ASSERT_EQ(1U, infobar_service_for_tab(1)->infobar_count()); 835 ASSERT_EQ(1U, infobar_service_for_tab(1)->infobar_count());
536 836
537 infobars::InfoBar* removed_infobar = 837 infobars::InfoBar* removed_infobar =
538 infobar_service_for_tab(1)->infobar_at(0); 838 infobar_service_for_tab(1)->infobar_at(0);
539 839
540 // Accept the first tab. 840 // Accept the first tab.
541 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0); 841 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
542 ConfirmInfoBarDelegate* infobar_delegate_0 = 842 ConfirmInfoBarDelegate* infobar_delegate_0 =
543 infobar_0->delegate()->AsConfirmInfoBarDelegate(); 843 infobar_0->delegate()->AsConfirmInfoBarDelegate();
544 ASSERT_TRUE(infobar_delegate_0); 844 ASSERT_TRUE(infobar_delegate_0);
(...skipping 13 matching lines...)
558 infobars::InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0); 858 infobars::InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0);
559 ConfirmInfoBarDelegate* infobar_delegate_1 = 859 ConfirmInfoBarDelegate* infobar_delegate_1 =
560 infobar_1->delegate()->AsConfirmInfoBarDelegate(); 860 infobar_1->delegate()->AsConfirmInfoBarDelegate();
561 ASSERT_TRUE(infobar_delegate_1); 861 ASSERT_TRUE(infobar_delegate_1);
562 infobar_delegate_1->Cancel(); 862 infobar_delegate_1->Cancel();
563 infobar_service_for_tab(0)->RemoveInfoBar(infobar_1); 863 infobar_service_for_tab(0)->RemoveInfoBar(infobar_1);
564 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 864 EXPECT_EQ(1U, closed_infobar_tracker_.size());
565 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1)); 865 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1));
566 } 866 }
567 867
568 TEST_F(GeolocationPermissionContextTests, QueuedOriginMultipleTabs) { 868 TEST_F(GeolocationPermissionContextTests, QueuedOriginMultipleTabsInfobar) {
869 if (PermissionBubbleManager::Enabled())
870 return;
871
569 GURL url_a("http://www.example.com/geolocation"); 872 GURL url_a("http://www.example.com/geolocation");
570 GURL url_b("http://www.example-2.com/geolocation"); 873 GURL url_b("http://www.example-2.com/geolocation");
571 NavigateAndCommit(url_a); 874 NavigateAndCommit(url_a);
572 AddNewTab(url_a); 875 AddNewTab(url_a);
573 876
574 EXPECT_EQ(0U, infobar_service()->infobar_count()); 877 EXPECT_EQ(0U, infobar_service()->infobar_count());
575 RequestGeolocationPermission(web_contents(), RequestID(0), url_a); 878 RequestGeolocationPermission(web_contents(), RequestID(0), url_a, true);
576 ASSERT_EQ(1U, infobar_service()->infobar_count()); 879 ASSERT_EQ(1U, infobar_service()->infobar_count());
577 880
578 RequestGeolocationPermission(extra_tabs_[0], RequestIDForTab(0, 0), url_a); 881 RequestGeolocationPermission(
882 extra_tabs_[0], RequestIDForTab(0, 0), url_a, true);
579 EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); 883 EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
580 884
581 RequestGeolocationPermission(extra_tabs_[0], RequestIDForTab(0, 1), url_b); 885 RequestGeolocationPermission(
886 extra_tabs_[0], RequestIDForTab(0, 1), url_b, true);
582 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); 887 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
583 888
584 infobars::InfoBar* removed_infobar = infobar_service()->infobar_at(0); 889 infobars::InfoBar* removed_infobar = infobar_service()->infobar_at(0);
585 890
586 // Accept the second tab. 891 // Accept the second tab.
587 infobars::InfoBar* infobar_0 = infobar_service_for_tab(0)->infobar_at(0); 892 infobars::InfoBar* infobar_0 = infobar_service_for_tab(0)->infobar_at(0);
588 ConfirmInfoBarDelegate* infobar_delegate_0 = 893 ConfirmInfoBarDelegate* infobar_delegate_0 =
589 infobar_0->delegate()->AsConfirmInfoBarDelegate(); 894 infobar_0->delegate()->AsConfirmInfoBarDelegate();
590 ASSERT_TRUE(infobar_delegate_0); 895 ASSERT_TRUE(infobar_delegate_0);
591 infobar_delegate_0->Accept(); 896 infobar_delegate_0->Accept();
(...skipping 15 matching lines...)
607 ConfirmInfoBarDelegate* infobar_delegate_1 = 912 ConfirmInfoBarDelegate* infobar_delegate_1 =
608 infobar_1->delegate()->AsConfirmInfoBarDelegate(); 913 infobar_1->delegate()->AsConfirmInfoBarDelegate();
609 ASSERT_TRUE(infobar_delegate_1); 914 ASSERT_TRUE(infobar_delegate_1);
610 infobar_delegate_1->Accept(); 915 infobar_delegate_1->Accept();
611 CheckPermissionMessageSentForTab(0, 1, true); 916 CheckPermissionMessageSentForTab(0, 1, true);
612 infobar_service_for_tab(0)->RemoveInfoBar(infobar_1); 917 infobar_service_for_tab(0)->RemoveInfoBar(infobar_1);
613 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 918 EXPECT_EQ(1U, closed_infobar_tracker_.size());
614 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1)); 919 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1));
615 } 920 }
616 921
617 TEST_F(GeolocationPermissionContextTests, TabDestroyed) { 922 TEST_F(GeolocationPermissionContextTests, TabDestroyedInfobar) {
923 if (PermissionBubbleManager::Enabled())
924 return;
925
618 GURL requesting_frame_0("http://www.example.com/geolocation"); 926 GURL requesting_frame_0("http://www.example.com/geolocation");
619 GURL requesting_frame_1("http://www.example-2.com/geolocation"); 927 GURL requesting_frame_1("http://www.example-2.com/geolocation");
620 EXPECT_EQ(CONTENT_SETTING_ASK, 928 EXPECT_EQ(CONTENT_SETTING_ASK,
621 profile()->GetHostContentSettingsMap()->GetContentSetting( 929 profile()->GetHostContentSettingsMap()->GetContentSetting(
622 requesting_frame_0, requesting_frame_0, 930 requesting_frame_0, requesting_frame_0,
623 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 931 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
624 932
625 EXPECT_EQ(CONTENT_SETTING_ASK, 933 EXPECT_EQ(CONTENT_SETTING_ASK,
626 profile()->GetHostContentSettingsMap()->GetContentSetting( 934 profile()->GetHostContentSettingsMap()->GetContentSetting(
627 requesting_frame_1, requesting_frame_0, 935 requesting_frame_1, requesting_frame_0,
628 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 936 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
629 937
630 NavigateAndCommit(requesting_frame_0); 938 NavigateAndCommit(requesting_frame_0);
631 EXPECT_EQ(0U, infobar_service()->infobar_count()); 939 EXPECT_EQ(0U, infobar_service()->infobar_count());
632 // Request permission for two frames. 940 // Request permission for two frames.
633 RequestGeolocationPermission( 941 RequestGeolocationPermission(
634 web_contents(), RequestID(0), requesting_frame_0); 942 web_contents(), RequestID(0), requesting_frame_0, true);
635 RequestGeolocationPermission( 943 RequestGeolocationPermission(
636 web_contents(), RequestID(1), requesting_frame_1); 944 web_contents(), RequestID(1), requesting_frame_1, true);
637 // Ensure only one infobar is created. 945 // Ensure only one infobar is created.
638 ASSERT_EQ(1U, infobar_service()->infobar_count()); 946 ASSERT_EQ(1U, infobar_service()->infobar_count());
639 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); 947 infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
640 948
641 // Delete the tab contents. 949 // Delete the tab contents.
642 DeleteContents(); 950 DeleteContents();
643 951
644 // During contents destruction, the infobar will have been closed, and the 952 // During contents destruction, the infobar will have been closed, and the
645 // pending request should have been cleared without an infobar being created. 953 // pending request should have been cleared without an infobar being created.
646 ASSERT_EQ(1U, closed_infobar_tracker_.size()); 954 ASSERT_EQ(1U, closed_infobar_tracker_.size());
647 ASSERT_TRUE(closed_infobar_tracker_.Contains(infobar)); 955 ASSERT_TRUE(closed_infobar_tracker_.Contains(infobar));
648 } 956 }
649 957
958 TEST_F(GeolocationPermissionContextTests, TabDestroyedBubbles) {
959 if (!PermissionBubbleManager::Enabled())
960 return;
961
962 GURL requesting_frame_0("http://www.example.com/geolocation");
963 GURL requesting_frame_1("http://www.example-2.com/geolocation");
964 EXPECT_EQ(CONTENT_SETTING_ASK,
965 profile()->GetHostContentSettingsMap()->GetContentSetting(
966 requesting_frame_0, requesting_frame_0,
967 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
968
969 EXPECT_EQ(CONTENT_SETTING_ASK,
970 profile()->GetHostContentSettingsMap()->GetContentSetting(
971 requesting_frame_1, requesting_frame_0,
972 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
973
974 NavigateAndCommit(requesting_frame_0);
975 BubbleManagerDocumentLoadCompleted();
976 PermissionBubbleManager* mgr =
977 PermissionBubbleManager::FromWebContents(web_contents());
978 ASSERT_TRUE(mgr != NULL);
979 ASSERT_EQ(0, GetBubblesQueueSize(mgr));
980
981 // Request permission for two frames.
982 RequestGeolocationPermission(
983 web_contents(), RequestID(0), requesting_frame_0, true);
984 RequestGeolocationPermission(
985 web_contents(), RequestID(1), requesting_frame_1, true);
986 // Ensure only one bubble request is shown.
987 ASSERT_EQ(1, GetBubblesQueueSize(mgr));
988
989 // Delete the tab contents.
990 DeleteContents();
991
992 // During contents destruction, the bubble will have been closed, and the
993 // pending request should have been cleared without a bubble being shown.
994 }
995
996 TEST_F(GeolocationPermissionContextTests, InfoBarUsesCommittedEntry) {
997 if (PermissionBubbleManager::Enabled())
998 return;
999
1000 GURL requesting_frame_0("http://www.example.com/geolocation");
1001 GURL requesting_frame_1("http://www.example-2.com/geolocation");
1002 NavigateAndCommit(requesting_frame_0);
1003 NavigateAndCommit(requesting_frame_1);
1004 EXPECT_EQ(0U, infobar_service()->infobar_count());
1005 // Go back: navigate to a pending entry before requesting geolocation
1006 // permission.
1007 web_contents()->GetController().GoBack();
1008 // Request permission for the committed frame (not the pending one).
1009 RequestGeolocationPermission(
1010 web_contents(), RequestID(0), requesting_frame_1, true);
1011 // Ensure the infobar is created.
1012 ASSERT_EQ(1U, infobar_service()->infobar_count());
1013 infobars::InfoBarDelegate* infobar_delegate =
1014 infobar_service()->infobar_at(0)->delegate();
1015 ASSERT_TRUE(infobar_delegate);
1016 // Ensure the infobar wouldn't expire for a navigation to the committed entry.
1017 content::LoadCommittedDetails details;
1018 details.entry = web_contents()->GetController().GetLastCommittedEntry();
1019 EXPECT_FALSE(infobar_delegate->ShouldExpire(
1020 InfoBarService::NavigationDetailsFromLoadCommittedDetails(details)));
1021 // Ensure the infobar will expire when we commit the pending navigation.
1022 details.entry = web_contents()->GetController().GetActiveEntry();
1023 EXPECT_TRUE(infobar_delegate->ShouldExpire(
1024 InfoBarService::NavigationDetailsFromLoadCommittedDetails(details)));
1025
1026 // Delete the tab contents.
1027 DeleteContents();
1028 }
1029
650 TEST_F(GeolocationPermissionContextTests, LastUsageAudited) { 1030 TEST_F(GeolocationPermissionContextTests, LastUsageAudited) {
651 GURL requesting_frame("http://www.example.com/geolocation"); 1031 GURL requesting_frame("http://www.example.com/geolocation");
652 NavigateAndCommit(requesting_frame); 1032 NavigateAndCommit(requesting_frame);
653 1033
654 base::SimpleTestClock* test_clock = new base::SimpleTestClock; 1034 base::SimpleTestClock* test_clock = new base::SimpleTestClock;
655 test_clock->SetNow(base::Time::UnixEpoch() + 1035 test_clock->SetNow(base::Time::UnixEpoch() +
656 base::TimeDelta::FromSeconds(10)); 1036 base::TimeDelta::FromSeconds(10));
657 1037
658 HostContentSettingsMap* map = profile()->GetHostContentSettingsMap(); 1038 HostContentSettingsMap* map = profile()->GetHostContentSettingsMap();
659 map->SetPrefClockForTesting(scoped_ptr<base::Clock>(test_clock)); 1039 map->SetPrefClockForTesting(scoped_ptr<base::Clock>(test_clock));
660 1040
661 // The permission shouldn't have been used yet. 1041 // The permission shouldn't have been used yet.
662 EXPECT_EQ(map->GetLastUsage(requesting_frame.GetOrigin(), 1042 EXPECT_EQ(map->GetLastUsage(requesting_frame.GetOrigin(),
663 requesting_frame.GetOrigin(), 1043 requesting_frame.GetOrigin(),
664 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 1044 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
665 0); 1045 0);
666 1046
667 EXPECT_EQ(0U, infobar_service()->infobar_count()); 1047 EXPECT_EQ(0U, infobar_service()->infobar_count());
668 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); 1048 RequestGeolocationPermission(
1049 web_contents(), RequestID(0), requesting_frame, true);
669 ASSERT_EQ(1U, infobar_service()->infobar_count()); 1050 ASSERT_EQ(1U, infobar_service()->infobar_count());
670 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); 1051 infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
671 ConfirmInfoBarDelegate* infobar_delegate = 1052 ConfirmInfoBarDelegate* infobar_delegate =
672 infobar->delegate()->AsConfirmInfoBarDelegate(); 1053 infobar->delegate()->AsConfirmInfoBarDelegate();
673 ASSERT_TRUE(infobar_delegate); 1054 ASSERT_TRUE(infobar_delegate);
674 infobar_delegate->Accept(); 1055 infobar_delegate->Accept();
675 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW); 1056 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW);
676 CheckPermissionMessageSent(0, true); 1057 CheckPermissionMessageSent(0, true);
677 1058
678 // Permission has been used at the starting time. 1059 // Permission has been used at the starting time.
679 EXPECT_EQ(map->GetLastUsage(requesting_frame.GetOrigin(), 1060 EXPECT_EQ(map->GetLastUsage(requesting_frame.GetOrigin(),
680 requesting_frame.GetOrigin(), 1061 requesting_frame.GetOrigin(),
681 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 1062 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
682 10); 1063 10);
683 1064
684 test_clock->Advance(base::TimeDelta::FromSeconds(3)); 1065 test_clock->Advance(base::TimeDelta::FromSeconds(3));
685 RequestGeolocationPermission(web_contents(), RequestID(0), requesting_frame); 1066 RequestGeolocationPermission(
1067 web_contents(), RequestID(0), requesting_frame, true);
686 1068
687 // Permission has been used three seconds later. 1069 // Permission has been used three seconds later.
688 EXPECT_EQ(map->GetLastUsage(requesting_frame.GetOrigin(), 1070 EXPECT_EQ(map->GetLastUsage(requesting_frame.GetOrigin(),
689 requesting_frame.GetOrigin(), 1071 requesting_frame.GetOrigin(),
690 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 1072 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
691 13); 1073 13);
692 } 1074 }
693 1075
694 TEST_F(GeolocationPermissionContextTests, LastUsageAuditedMultipleFrames) { 1076 TEST_F(GeolocationPermissionContextTests, LastUsageAuditedMultipleFrames) {
695 base::SimpleTestClock* test_clock = new base::SimpleTestClock; 1077 base::SimpleTestClock* test_clock = new base::SimpleTestClock;
(...skipping 14 matching lines...)
710 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), 1092 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(),
711 requesting_frame_0.GetOrigin(), 1093 requesting_frame_0.GetOrigin(),
712 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 1094 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
713 0); 1095 0);
714 1096
715 NavigateAndCommit(requesting_frame_0); 1097 NavigateAndCommit(requesting_frame_0);
716 EXPECT_EQ(0U, infobar_service()->infobar_count()); 1098 EXPECT_EQ(0U, infobar_service()->infobar_count());
717 1099
718 // Request permission for two frames. 1100 // Request permission for two frames.
719 RequestGeolocationPermission( 1101 RequestGeolocationPermission(
720 web_contents(), RequestID(0), requesting_frame_0); 1102 web_contents(), RequestID(0), requesting_frame_0, true);
721 RequestGeolocationPermission( 1103 RequestGeolocationPermission(
722 web_contents(), RequestID(1), requesting_frame_1); 1104 web_contents(), RequestID(1), requesting_frame_1, true);
723 1105
724 // Ensure only one infobar is created. 1106 // Ensure only one infobar is created.
725 ASSERT_EQ(1U, infobar_service()->infobar_count()); 1107 ASSERT_EQ(1U, infobar_service()->infobar_count());
726 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0); 1108 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
727 ConfirmInfoBarDelegate* infobar_delegate_0 = 1109 ConfirmInfoBarDelegate* infobar_delegate_0 =
728 infobar_0->delegate()->AsConfirmInfoBarDelegate(); 1110 infobar_0->delegate()->AsConfirmInfoBarDelegate();
729 1111
730 // Accept the first frame. 1112 // Accept the first frame.
731 infobar_delegate_0->Accept(); 1113 infobar_delegate_0->Accept();
732 CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW); 1114 CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW);
(...skipping 29 matching lines...)
762 requesting_frame_0.GetOrigin(), 1144 requesting_frame_0.GetOrigin(),
763 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 1145 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
764 10); 1146 10);
765 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), 1147 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(),
766 requesting_frame_0.GetOrigin(), 1148 requesting_frame_0.GetOrigin(),
767 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 1149 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
768 11); 1150 11);
769 1151
770 test_clock->Advance(base::TimeDelta::FromSeconds(2)); 1152 test_clock->Advance(base::TimeDelta::FromSeconds(2));
771 RequestGeolocationPermission( 1153 RequestGeolocationPermission(
772 web_contents(), RequestID(0), requesting_frame_0); 1154 web_contents(), RequestID(0), requesting_frame_0, true);
773 1155
774 // Verify that requesting permission in one frame doesn't update other where 1156 // Verify that requesting permission in one frame doesn't update other where
775 // it is the embedder. 1157 // it is the embedder.
776 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(), 1158 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(),
777 requesting_frame_0.GetOrigin(), 1159 requesting_frame_0.GetOrigin(),
778 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 1160 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
779 13); 1161 13);
780 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), 1162 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(),
781 requesting_frame_0.GetOrigin(), 1163 requesting_frame_0.GetOrigin(),
782 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), 1164 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(),
783 11); 1165 11);
784 } 1166 }
OLDNEW

Powered by Google App Engine