OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/browser/geolocation/geolocation_permission_context.h" | 5 #include "chrome/browser/geolocation/geolocation_permission_context.h" |
6 | 6 |
7 #include <set> | 7 #include <set> |
8 #include <string> | 8 #include <string> |
9 #include <utility> | 9 #include <utility> |
10 | 10 |
(...skipping 26 matching lines...) Expand all Loading... |
37 #include "content/public/browser/notification_registrar.h" | 37 #include "content/public/browser/notification_registrar.h" |
38 #include "content/public/browser/notification_service.h" | 38 #include "content/public/browser/notification_service.h" |
39 #include "content/public/browser/render_frame_host.h" | 39 #include "content/public/browser/render_frame_host.h" |
40 #include "content/public/browser/web_contents.h" | 40 #include "content/public/browser/web_contents.h" |
41 #include "content/public/test/mock_render_process_host.h" | 41 #include "content/public/test/mock_render_process_host.h" |
42 #include "content/public/test/test_renderer_host.h" | 42 #include "content/public/test/test_renderer_host.h" |
43 #include "content/public/test/test_utils.h" | 43 #include "content/public/test/test_utils.h" |
44 #include "content/public/test/web_contents_tester.h" | 44 #include "content/public/test/web_contents_tester.h" |
45 #include "testing/gtest/include/gtest/gtest.h" | 45 #include "testing/gtest/include/gtest/gtest.h" |
46 | 46 |
47 #if defined(OS_ANDROID) | 47 #if defined(ANDROID_JAVA_UI) |
48 #include "base/prefs/pref_service.h" | 48 #include "base/prefs/pref_service.h" |
49 #include "chrome/browser/android/mock_location_settings.h" | 49 #include "chrome/browser/android/mock_location_settings.h" |
50 #include "chrome/browser/geolocation/geolocation_permission_context_android.h" | 50 #include "chrome/browser/geolocation/geolocation_permission_context_android.h" |
51 #else | 51 #else |
52 #include "chrome/browser/ui/website_settings/mock_permission_bubble_view.h" | 52 #include "chrome/browser/ui/website_settings/mock_permission_bubble_view.h" |
53 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" | 53 #include "chrome/browser/ui/website_settings/permission_bubble_manager.h" |
54 #endif | 54 #endif |
55 | 55 |
56 #if defined(ENABLE_EXTENSIONS) | 56 #if defined(ENABLE_EXTENSIONS) |
57 #include "extensions/browser/view_type_utils.h" | 57 #include "extensions/browser/view_type_utils.h" |
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
136 void PermissionResponse(const PermissionRequestID& id, | 136 void PermissionResponse(const PermissionRequestID& id, |
137 ContentSetting content_setting); | 137 ContentSetting content_setting); |
138 void CheckPermissionMessageSent(int request_id, bool allowed); | 138 void CheckPermissionMessageSent(int request_id, bool allowed); |
139 void CheckPermissionMessageSentForTab(int tab, int request_id, bool allowed); | 139 void CheckPermissionMessageSentForTab(int tab, int request_id, bool allowed); |
140 void CheckPermissionMessageSentInternal(MockRenderProcessHost* process, | 140 void CheckPermissionMessageSentInternal(MockRenderProcessHost* process, |
141 int request_id, | 141 int request_id, |
142 bool allowed); | 142 bool allowed); |
143 void AddNewTab(const GURL& url); | 143 void AddNewTab(const GURL& url); |
144 void CheckTabContentsState(const GURL& requesting_frame, | 144 void CheckTabContentsState(const GURL& requesting_frame, |
145 ContentSetting expected_content_setting); | 145 ContentSetting expected_content_setting); |
146 #if !defined(OS_ANDROID) | 146 #if !defined(ANDROID_JAVA_UI) |
147 size_t GetBubblesQueueSize(PermissionBubbleManager* manager); | 147 size_t GetBubblesQueueSize(PermissionBubbleManager* manager); |
148 void AcceptBubble(PermissionBubbleManager* manager); | 148 void AcceptBubble(PermissionBubbleManager* manager); |
149 void DenyBubble(PermissionBubbleManager* manager); | 149 void DenyBubble(PermissionBubbleManager* manager); |
150 void CloseBubble(PermissionBubbleManager* manager); | 150 void CloseBubble(PermissionBubbleManager* manager); |
151 #endif | 151 #endif |
152 void BubbleManagerDocumentLoadCompleted(); | 152 void BubbleManagerDocumentLoadCompleted(); |
153 void BubbleManagerDocumentLoadCompleted(content::WebContents* web_contents); | 153 void BubbleManagerDocumentLoadCompleted(content::WebContents* web_contents); |
154 ContentSetting GetGeolocationContentSetting(GURL frame_0, GURL frame_1); | 154 ContentSetting GetGeolocationContentSetting(GURL frame_0, GURL frame_1); |
155 size_t GetNumberOfPrompts(); | 155 size_t GetNumberOfPrompts(); |
156 void AcceptPrompt(); | 156 void AcceptPrompt(); |
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
232 new_tab->GetController().LoadURL( | 232 new_tab->GetController().LoadURL( |
233 url, content::Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); | 233 url, content::Referrer(), ui::PAGE_TRANSITION_TYPED, std::string()); |
234 content::NavigationEntry* entry = new_tab->GetController().GetPendingEntry(); | 234 content::NavigationEntry* entry = new_tab->GetController().GetPendingEntry(); |
235 content::RenderFrameHostTester::For(new_tab->GetMainFrame()) | 235 content::RenderFrameHostTester::For(new_tab->GetMainFrame()) |
236 ->SendNavigate(extra_tabs_.size() + 1, entry->GetUniqueID(), true, url); | 236 ->SendNavigate(extra_tabs_.size() + 1, entry->GetUniqueID(), true, url); |
237 | 237 |
238 // Set up required helpers, and make this be as "tabby" as the code requires. | 238 // Set up required helpers, and make this be as "tabby" as the code requires. |
239 #if defined(ENABLE_EXTENSIONS) | 239 #if defined(ENABLE_EXTENSIONS) |
240 extensions::SetViewType(new_tab, extensions::VIEW_TYPE_TAB_CONTENTS); | 240 extensions::SetViewType(new_tab, extensions::VIEW_TYPE_TAB_CONTENTS); |
241 #endif | 241 #endif |
242 #if defined(OS_ANDROID) | 242 #if defined(ANDROID_JAVA_UI) |
243 InfoBarService::CreateForWebContents(new_tab); | 243 InfoBarService::CreateForWebContents(new_tab); |
244 #else | 244 #else |
245 PermissionBubbleManager::CreateForWebContents(new_tab); | 245 PermissionBubbleManager::CreateForWebContents(new_tab); |
246 PermissionBubbleManager* permission_bubble_manager = | 246 PermissionBubbleManager* permission_bubble_manager = |
247 PermissionBubbleManager::FromWebContents(new_tab); | 247 PermissionBubbleManager::FromWebContents(new_tab); |
248 MockPermissionBubbleView::SetFactory(permission_bubble_manager, false); | 248 MockPermissionBubbleView::SetFactory(permission_bubble_manager, false); |
249 permission_bubble_manager->DisplayPendingRequests(); | 249 permission_bubble_manager->DisplayPendingRequests(); |
250 #endif | 250 #endif |
251 | 251 |
252 extra_tabs_.push_back(new_tab); | 252 extra_tabs_.push_back(new_tab); |
(...skipping 19 matching lines...) Expand all Loading... |
272 ChromeRenderViewHostTestHarness::SetUp(); | 272 ChromeRenderViewHostTestHarness::SetUp(); |
273 | 273 |
274 // Set up required helpers, and make this be as "tabby" as the code requires. | 274 // Set up required helpers, and make this be as "tabby" as the code requires. |
275 #if defined(ENABLE_EXTENSIONS) | 275 #if defined(ENABLE_EXTENSIONS) |
276 extensions::SetViewType(web_contents(), extensions::VIEW_TYPE_TAB_CONTENTS); | 276 extensions::SetViewType(web_contents(), extensions::VIEW_TYPE_TAB_CONTENTS); |
277 #endif | 277 #endif |
278 InfoBarService::CreateForWebContents(web_contents()); | 278 InfoBarService::CreateForWebContents(web_contents()); |
279 TabSpecificContentSettings::CreateForWebContents(web_contents()); | 279 TabSpecificContentSettings::CreateForWebContents(web_contents()); |
280 geolocation_permission_context_ = | 280 geolocation_permission_context_ = |
281 GeolocationPermissionContextFactory::GetForProfile(profile()); | 281 GeolocationPermissionContextFactory::GetForProfile(profile()); |
282 #if defined(OS_ANDROID) | 282 #if defined(ANDROID_JAVA_UI) |
283 static_cast<GeolocationPermissionContextAndroid*>( | 283 static_cast<GeolocationPermissionContextAndroid*>( |
284 geolocation_permission_context_) | 284 geolocation_permission_context_) |
285 ->SetLocationSettingsForTesting( | 285 ->SetLocationSettingsForTesting( |
286 scoped_ptr<LocationSettings>(new MockLocationSettings())); | 286 scoped_ptr<LocationSettings>(new MockLocationSettings())); |
287 MockLocationSettings::SetLocationStatus(true, true); | 287 MockLocationSettings::SetLocationStatus(true, true); |
288 #else | 288 #else |
289 PermissionBubbleManager::CreateForWebContents(web_contents()); | 289 PermissionBubbleManager::CreateForWebContents(web_contents()); |
290 PermissionBubbleManager* permission_bubble_manager = | 290 PermissionBubbleManager* permission_bubble_manager = |
291 PermissionBubbleManager::FromWebContents(web_contents()); | 291 PermissionBubbleManager::FromWebContents(web_contents()); |
292 MockPermissionBubbleView::SetFactory(permission_bubble_manager, false); | 292 MockPermissionBubbleView::SetFactory(permission_bubble_manager, false); |
293 permission_bubble_manager->DisplayPendingRequests(); | 293 permission_bubble_manager->DisplayPendingRequests(); |
294 #endif | 294 #endif |
295 } | 295 } |
296 | 296 |
297 void GeolocationPermissionContextTests::TearDown() { | 297 void GeolocationPermissionContextTests::TearDown() { |
298 extra_tabs_.clear(); | 298 extra_tabs_.clear(); |
299 ChromeRenderViewHostTestHarness::TearDown(); | 299 ChromeRenderViewHostTestHarness::TearDown(); |
300 } | 300 } |
301 | 301 |
302 #if !defined(OS_ANDROID) | 302 #if !defined(ANDROID_JAVA_UI) |
303 size_t GeolocationPermissionContextTests::GetBubblesQueueSize( | 303 size_t GeolocationPermissionContextTests::GetBubblesQueueSize( |
304 PermissionBubbleManager* manager) { | 304 PermissionBubbleManager* manager) { |
305 return manager->requests_.size(); | 305 return manager->requests_.size(); |
306 } | 306 } |
307 | 307 |
308 void GeolocationPermissionContextTests::AcceptBubble( | 308 void GeolocationPermissionContextTests::AcceptBubble( |
309 PermissionBubbleManager* manager) { | 309 PermissionBubbleManager* manager) { |
310 manager->Accept(); | 310 manager->Accept(); |
311 } | 311 } |
312 | 312 |
313 void GeolocationPermissionContextTests::DenyBubble( | 313 void GeolocationPermissionContextTests::DenyBubble( |
314 PermissionBubbleManager* manager) { | 314 PermissionBubbleManager* manager) { |
315 manager->Deny(); | 315 manager->Deny(); |
316 } | 316 } |
317 | 317 |
318 void GeolocationPermissionContextTests::CloseBubble( | 318 void GeolocationPermissionContextTests::CloseBubble( |
319 PermissionBubbleManager* manager) { | 319 PermissionBubbleManager* manager) { |
320 manager->Closing(); | 320 manager->Closing(); |
321 } | 321 } |
322 #endif | 322 #endif |
323 | 323 |
324 void GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted() { | 324 void GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted() { |
325 GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted( | 325 GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted( |
326 web_contents()); | 326 web_contents()); |
327 } | 327 } |
328 | 328 |
329 void GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted( | 329 void GeolocationPermissionContextTests::BubbleManagerDocumentLoadCompleted( |
330 content::WebContents* web_contents) { | 330 content::WebContents* web_contents) { |
331 #if !defined(OS_ANDROID) | 331 #if !defined(ANDROID_JAVA_UI) |
332 PermissionBubbleManager::FromWebContents(web_contents)-> | 332 PermissionBubbleManager::FromWebContents(web_contents)-> |
333 DocumentOnLoadCompletedInMainFrame(); | 333 DocumentOnLoadCompletedInMainFrame(); |
334 #endif | 334 #endif |
335 } | 335 } |
336 | 336 |
337 ContentSetting GeolocationPermissionContextTests::GetGeolocationContentSetting( | 337 ContentSetting GeolocationPermissionContextTests::GetGeolocationContentSetting( |
338 GURL frame_0, GURL frame_1) { | 338 GURL frame_0, GURL frame_1) { |
339 return HostContentSettingsMapFactory::GetForProfile(profile()) | 339 return HostContentSettingsMapFactory::GetForProfile(profile()) |
340 ->GetContentSetting(frame_0, | 340 ->GetContentSetting(frame_0, |
341 frame_1, | 341 frame_1, |
342 CONTENT_SETTINGS_TYPE_GEOLOCATION, | 342 CONTENT_SETTINGS_TYPE_GEOLOCATION, |
343 std::string()); | 343 std::string()); |
344 } | 344 } |
345 | 345 |
346 size_t GeolocationPermissionContextTests::GetNumberOfPrompts() { | 346 size_t GeolocationPermissionContextTests::GetNumberOfPrompts() { |
347 #if !defined(OS_ANDROID) | 347 #if !defined(ANDROID_JAVA_UI) |
348 PermissionBubbleManager* manager = | 348 PermissionBubbleManager* manager = |
349 PermissionBubbleManager::FromWebContents(web_contents()); | 349 PermissionBubbleManager::FromWebContents(web_contents()); |
350 return GetBubblesQueueSize(manager); | 350 return GetBubblesQueueSize(manager); |
351 #else | 351 #else |
352 return infobar_service()->infobar_count(); | 352 return infobar_service()->infobar_count(); |
353 #endif | 353 #endif |
354 } | 354 } |
355 | 355 |
356 void GeolocationPermissionContextTests::AcceptPrompt() { | 356 void GeolocationPermissionContextTests::AcceptPrompt() { |
357 #if !defined(OS_ANDROID) | 357 #if !defined(ANDROID_JAVA_UI) |
358 PermissionBubbleManager* manager = | 358 PermissionBubbleManager* manager = |
359 PermissionBubbleManager::FromWebContents(web_contents()); | 359 PermissionBubbleManager::FromWebContents(web_contents()); |
360 AcceptBubble(manager); | 360 AcceptBubble(manager); |
361 #else | 361 #else |
362 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); | 362 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); |
363 ConfirmInfoBarDelegate* infobar_delegate = | 363 ConfirmInfoBarDelegate* infobar_delegate = |
364 infobar->delegate()->AsConfirmInfoBarDelegate(); | 364 infobar->delegate()->AsConfirmInfoBarDelegate(); |
365 infobar_delegate->Accept(); | 365 infobar_delegate->Accept(); |
366 #endif | 366 #endif |
367 } | 367 } |
368 | 368 |
369 base::string16 GeolocationPermissionContextTests::GetPromptText() { | 369 base::string16 GeolocationPermissionContextTests::GetPromptText() { |
370 #if !defined(OS_ANDROID) | 370 #if !defined(ANDROID_JAVA_UI) |
371 PermissionBubbleManager* manager = | 371 PermissionBubbleManager* manager = |
372 PermissionBubbleManager::FromWebContents(web_contents()); | 372 PermissionBubbleManager::FromWebContents(web_contents()); |
373 return manager->requests_.front()->GetMessageText(); | 373 return manager->requests_.front()->GetMessageText(); |
374 #else | 374 #else |
375 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); | 375 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); |
376 ConfirmInfoBarDelegate* infobar_delegate = | 376 ConfirmInfoBarDelegate* infobar_delegate = |
377 infobar->delegate()->AsConfirmInfoBarDelegate(); | 377 infobar->delegate()->AsConfirmInfoBarDelegate(); |
378 return infobar_delegate->GetMessageText(); | 378 return infobar_delegate->GetMessageText(); |
379 #endif | 379 #endif |
380 } | 380 } |
381 | 381 |
382 // Tests ---------------------------------------------------------------------- | 382 // Tests ---------------------------------------------------------------------- |
383 | 383 |
384 TEST_F(GeolocationPermissionContextTests, SinglePermissionBubble) { | 384 TEST_F(GeolocationPermissionContextTests, SinglePermissionBubble) { |
385 GURL requesting_frame("http://www.example.com/geolocation"); | 385 GURL requesting_frame("http://www.example.com/geolocation"); |
386 NavigateAndCommit(requesting_frame); | 386 NavigateAndCommit(requesting_frame); |
387 BubbleManagerDocumentLoadCompleted(); | 387 BubbleManagerDocumentLoadCompleted(); |
388 | 388 |
389 EXPECT_EQ(0U, GetNumberOfPrompts()); | 389 EXPECT_EQ(0U, GetNumberOfPrompts()); |
390 RequestGeolocationPermission( | 390 RequestGeolocationPermission( |
391 web_contents(), RequestID(0), requesting_frame, true); | 391 web_contents(), RequestID(0), requesting_frame, true); |
392 ASSERT_EQ(1U, GetNumberOfPrompts()); | 392 ASSERT_EQ(1U, GetNumberOfPrompts()); |
393 } | 393 } |
394 | 394 |
395 #if defined(OS_ANDROID) | 395 #if defined(ANDROID_JAVA_UI) |
396 TEST_F(GeolocationPermissionContextTests, SinglePermissionInfobar) { | 396 TEST_F(GeolocationPermissionContextTests, SinglePermissionInfobar) { |
397 GURL requesting_frame("http://www.example.com/geolocation"); | 397 GURL requesting_frame("http://www.example.com/geolocation"); |
398 NavigateAndCommit(requesting_frame); | 398 NavigateAndCommit(requesting_frame); |
399 EXPECT_EQ(0U, infobar_service()->infobar_count()); | 399 EXPECT_EQ(0U, infobar_service()->infobar_count()); |
400 RequestGeolocationPermission( | 400 RequestGeolocationPermission( |
401 web_contents(), RequestID(0), requesting_frame, true); | 401 web_contents(), RequestID(0), requesting_frame, true); |
402 ASSERT_EQ(1U, infobar_service()->infobar_count()); | 402 ASSERT_EQ(1U, infobar_service()->infobar_count()); |
403 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); | 403 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); |
404 ConfirmInfoBarDelegate* infobar_delegate = | 404 ConfirmInfoBarDelegate* infobar_delegate = |
405 infobar->delegate()->AsConfirmInfoBarDelegate(); | 405 infobar->delegate()->AsConfirmInfoBarDelegate(); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
483 web_contents(), RequestID(1), requesting_frame_1, true); | 483 web_contents(), RequestID(1), requesting_frame_1, true); |
484 // Ensure only one infobar is created. | 484 // Ensure only one infobar is created. |
485 ASSERT_EQ(1U, GetNumberOfPrompts()); | 485 ASSERT_EQ(1U, GetNumberOfPrompts()); |
486 base::string16 text_0 = GetPromptText(); | 486 base::string16 text_0 = GetPromptText(); |
487 | 487 |
488 // Accept the first frame. | 488 // Accept the first frame. |
489 AcceptPrompt(); | 489 AcceptPrompt(); |
490 CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW); | 490 CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW); |
491 CheckPermissionMessageSent(0, true); | 491 CheckPermissionMessageSent(0, true); |
492 | 492 |
493 #if defined(OS_ANDROID) | 493 #if defined(ANDROID_JAVA_UI) |
494 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0); | 494 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0); |
495 infobar_service()->RemoveInfoBar(infobar_0); | 495 infobar_service()->RemoveInfoBar(infobar_0); |
496 EXPECT_EQ(1U, closed_infobar_tracker_.size()); | 496 EXPECT_EQ(1U, closed_infobar_tracker_.size()); |
497 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0)); | 497 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0)); |
498 closed_infobar_tracker_.Clear(); | 498 closed_infobar_tracker_.Clear(); |
499 #endif | 499 #endif |
500 | 500 |
501 // Now we should have a new infobar for the second frame. | 501 // Now we should have a new infobar for the second frame. |
502 ASSERT_EQ(1U, GetNumberOfPrompts()); | 502 ASSERT_EQ(1U, GetNumberOfPrompts()); |
503 base::string16 text_1 = GetPromptText(); | 503 base::string16 text_1 = GetPromptText(); |
504 | 504 |
505 // Check that the messages differ. | 505 // Check that the messages differ. |
506 EXPECT_NE(text_0, text_1); | 506 EXPECT_NE(text_0, text_1); |
507 | 507 |
508 // Cancel (block) this frame. | 508 // Cancel (block) this frame. |
509 #if !defined(OS_ANDROID) | 509 #if !defined(ANDROID_JAVA_UI) |
510 PermissionBubbleManager* manager = | 510 PermissionBubbleManager* manager = |
511 PermissionBubbleManager::FromWebContents(web_contents()); | 511 PermissionBubbleManager::FromWebContents(web_contents()); |
512 DenyBubble(manager); | 512 DenyBubble(manager); |
513 #else | 513 #else |
514 infobars::InfoBar* infobar_1 = infobar_service()->infobar_at(0); | 514 infobars::InfoBar* infobar_1 = infobar_service()->infobar_at(0); |
515 infobar_1->delegate()->AsConfirmInfoBarDelegate()->Cancel(); | 515 infobar_1->delegate()->AsConfirmInfoBarDelegate()->Cancel(); |
516 #endif | 516 #endif |
517 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_BLOCK); | 517 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_BLOCK); |
518 CheckPermissionMessageSent(1, false); | 518 CheckPermissionMessageSent(1, false); |
519 | 519 |
520 // Ensure the persisted permissions are ok. | 520 // Ensure the persisted permissions are ok. |
521 EXPECT_EQ( | 521 EXPECT_EQ( |
522 CONTENT_SETTING_ALLOW, | 522 CONTENT_SETTING_ALLOW, |
523 GetGeolocationContentSetting(requesting_frame_0, requesting_frame_0)); | 523 GetGeolocationContentSetting(requesting_frame_0, requesting_frame_0)); |
524 EXPECT_EQ( | 524 EXPECT_EQ( |
525 CONTENT_SETTING_BLOCK, | 525 CONTENT_SETTING_BLOCK, |
526 GetGeolocationContentSetting(requesting_frame_1, requesting_frame_0)); | 526 GetGeolocationContentSetting(requesting_frame_1, requesting_frame_0)); |
527 } | 527 } |
528 | 528 |
529 TEST_F(GeolocationPermissionContextTests, HashIsIgnored) { | 529 TEST_F(GeolocationPermissionContextTests, HashIsIgnored) { |
530 GURL url_a("http://www.example.com/geolocation#a"); | 530 GURL url_a("http://www.example.com/geolocation#a"); |
531 GURL url_b("http://www.example.com/geolocation#b"); | 531 GURL url_b("http://www.example.com/geolocation#b"); |
532 | 532 |
533 // Navigate to the first url. | 533 // Navigate to the first url. |
534 NavigateAndCommit(url_a); | 534 NavigateAndCommit(url_a); |
535 BubbleManagerDocumentLoadCompleted(); | 535 BubbleManagerDocumentLoadCompleted(); |
536 | 536 |
537 // Check permission is requested. | 537 // Check permission is requested. |
538 ASSERT_EQ(0U, GetNumberOfPrompts()); | 538 ASSERT_EQ(0U, GetNumberOfPrompts()); |
539 #if defined(OS_ANDROID) | 539 #if defined(ANDROID_JAVA_UI) |
540 const bool user_gesture = false; | 540 const bool user_gesture = false; |
541 #else | 541 #else |
542 const bool user_gesture = true; | 542 const bool user_gesture = true; |
543 #endif | 543 #endif |
544 RequestGeolocationPermission(web_contents(), RequestID(0), url_a, | 544 RequestGeolocationPermission(web_contents(), RequestID(0), url_a, |
545 user_gesture); | 545 user_gesture); |
546 ASSERT_EQ(1U, GetNumberOfPrompts()); | 546 ASSERT_EQ(1U, GetNumberOfPrompts()); |
547 | 547 |
548 // Change the hash, we'll still be on the same page. | 548 // Change the hash, we'll still be on the same page. |
549 NavigateAndCommit(url_b); | 549 NavigateAndCommit(url_b); |
550 BubbleManagerDocumentLoadCompleted(); | 550 BubbleManagerDocumentLoadCompleted(); |
551 | 551 |
552 // Accept. | 552 // Accept. |
553 AcceptPrompt(); | 553 AcceptPrompt(); |
554 CheckTabContentsState(url_a, CONTENT_SETTING_ALLOW); | 554 CheckTabContentsState(url_a, CONTENT_SETTING_ALLOW); |
555 CheckTabContentsState(url_b, CONTENT_SETTING_ALLOW); | 555 CheckTabContentsState(url_b, CONTENT_SETTING_ALLOW); |
556 CheckPermissionMessageSent(0, true); | 556 CheckPermissionMessageSent(0, true); |
557 | 557 |
558 // Cleanup. | 558 // Cleanup. |
559 #if defined(OS_ANDROID) | 559 #if defined(ANDROID_JAVA_UI) |
560 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); | 560 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); |
561 infobar_service()->RemoveInfoBar(infobar); | 561 infobar_service()->RemoveInfoBar(infobar); |
562 EXPECT_EQ(1U, closed_infobar_tracker_.size()); | 562 EXPECT_EQ(1U, closed_infobar_tracker_.size()); |
563 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar)); | 563 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar)); |
564 #endif | 564 #endif |
565 } | 565 } |
566 | 566 |
567 // TODO(felt): The bubble is rejecting file:// permission requests. | 567 // TODO(felt): The bubble is rejecting file:// permission requests. |
568 // Fix and enable this test. crbug.com/444047 | 568 // Fix and enable this test. crbug.com/444047 |
569 #if defined(OS_ANDROID) | 569 #if defined(ANDROID_JAVA_UI) |
570 #define MAYBE_PermissionForFileScheme PermissionForFileScheme | 570 #define MAYBE_PermissionForFileScheme PermissionForFileScheme |
571 #else | 571 #else |
572 #define MAYBE_PermissionForFileScheme DISABLED_PermissionForFileScheme | 572 #define MAYBE_PermissionForFileScheme DISABLED_PermissionForFileScheme |
573 #endif | 573 #endif |
574 TEST_F(GeolocationPermissionContextTests, MAYBE_PermissionForFileScheme) { | 574 TEST_F(GeolocationPermissionContextTests, MAYBE_PermissionForFileScheme) { |
575 GURL requesting_frame("file://example/geolocation.html"); | 575 GURL requesting_frame("file://example/geolocation.html"); |
576 NavigateAndCommit(requesting_frame); | 576 NavigateAndCommit(requesting_frame); |
577 BubbleManagerDocumentLoadCompleted(); | 577 BubbleManagerDocumentLoadCompleted(); |
578 | 578 |
579 // Check permission is requested. | 579 // Check permission is requested. |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
611 web_contents(), RequestID(0), frame_0, true); | 611 web_contents(), RequestID(0), frame_0, true); |
612 RequestGeolocationPermission( | 612 RequestGeolocationPermission( |
613 web_contents(), RequestID(1), frame_1, true); | 613 web_contents(), RequestID(1), frame_1, true); |
614 | 614 |
615 // Get the first permission request text. | 615 // Get the first permission request text. |
616 ASSERT_EQ(1U, GetNumberOfPrompts()); | 616 ASSERT_EQ(1U, GetNumberOfPrompts()); |
617 base::string16 text_0 = GetPromptText(); | 617 base::string16 text_0 = GetPromptText(); |
618 ASSERT_FALSE(text_0.empty()); | 618 ASSERT_FALSE(text_0.empty()); |
619 | 619 |
620 // Simulate the frame going away; the request should be removed. | 620 // Simulate the frame going away; the request should be removed. |
621 #if !defined(OS_ANDROID) | 621 #if !defined(ANDROID_JAVA_UI) |
622 PermissionBubbleManager* manager = | 622 PermissionBubbleManager* manager = |
623 PermissionBubbleManager::FromWebContents(web_contents()); | 623 PermissionBubbleManager::FromWebContents(web_contents()); |
624 CloseBubble(manager); | 624 CloseBubble(manager); |
625 #else | 625 #else |
626 geolocation_permission_context_->CancelPermissionRequest(web_contents(), | 626 geolocation_permission_context_->CancelPermissionRequest(web_contents(), |
627 RequestID(0)); | 627 RequestID(0)); |
628 #endif | 628 #endif |
629 | 629 |
630 // Check that the next pending request is created correctly. | 630 // Check that the next pending request is created correctly. |
631 base::string16 text_1 = GetPromptText(); | 631 base::string16 text_1 = GetPromptText(); |
(...skipping 28 matching lines...) Expand all Loading... |
660 | 660 |
661 TEST_F(GeolocationPermissionContextTests, SameOriginMultipleTabs) { | 661 TEST_F(GeolocationPermissionContextTests, SameOriginMultipleTabs) { |
662 GURL url_a("http://www.example.com/geolocation"); | 662 GURL url_a("http://www.example.com/geolocation"); |
663 GURL url_b("http://www.example-2.com/geolocation"); | 663 GURL url_b("http://www.example-2.com/geolocation"); |
664 NavigateAndCommit(url_a); // Tab A0 | 664 NavigateAndCommit(url_a); // Tab A0 |
665 AddNewTab(url_b); // Tab B (extra_tabs_[0]) | 665 AddNewTab(url_b); // Tab B (extra_tabs_[0]) |
666 AddNewTab(url_a); // Tab A1 (extra_tabs_[1]) | 666 AddNewTab(url_a); // Tab A1 (extra_tabs_[1]) |
667 BubbleManagerDocumentLoadCompleted(); | 667 BubbleManagerDocumentLoadCompleted(); |
668 BubbleManagerDocumentLoadCompleted(extra_tabs_[0]); | 668 BubbleManagerDocumentLoadCompleted(extra_tabs_[0]); |
669 BubbleManagerDocumentLoadCompleted(extra_tabs_[1]); | 669 BubbleManagerDocumentLoadCompleted(extra_tabs_[1]); |
670 #if !defined(OS_ANDROID) | 670 #if !defined(ANDROID_JAVA_UI) |
671 PermissionBubbleManager* manager_a0 = | 671 PermissionBubbleManager* manager_a0 = |
672 PermissionBubbleManager::FromWebContents(web_contents()); | 672 PermissionBubbleManager::FromWebContents(web_contents()); |
673 PermissionBubbleManager* manager_b = | 673 PermissionBubbleManager* manager_b = |
674 PermissionBubbleManager::FromWebContents(extra_tabs_[0]); | 674 PermissionBubbleManager::FromWebContents(extra_tabs_[0]); |
675 PermissionBubbleManager* manager_a1 = | 675 PermissionBubbleManager* manager_a1 = |
676 PermissionBubbleManager::FromWebContents(extra_tabs_[1]); | 676 PermissionBubbleManager::FromWebContents(extra_tabs_[1]); |
677 #endif | 677 #endif |
678 | 678 |
679 // Request permission in all three tabs. | 679 // Request permission in all three tabs. |
680 RequestGeolocationPermission( | 680 RequestGeolocationPermission( |
681 web_contents(), RequestID(0), url_a, true); | 681 web_contents(), RequestID(0), url_a, true); |
682 RequestGeolocationPermission( | 682 RequestGeolocationPermission( |
683 extra_tabs_[0], RequestIDForTab(0, 0), url_b, true); | 683 extra_tabs_[0], RequestIDForTab(0, 0), url_b, true); |
684 RequestGeolocationPermission( | 684 RequestGeolocationPermission( |
685 extra_tabs_[1], RequestIDForTab(1, 0), url_a, true); | 685 extra_tabs_[1], RequestIDForTab(1, 0), url_a, true); |
686 ASSERT_EQ(1U, GetNumberOfPrompts()); // For A0. | 686 ASSERT_EQ(1U, GetNumberOfPrompts()); // For A0. |
687 #if !defined(OS_ANDROID) | 687 #if !defined(ANDROID_JAVA_UI) |
688 ASSERT_EQ(1U, GetBubblesQueueSize(manager_b)); | 688 ASSERT_EQ(1U, GetBubblesQueueSize(manager_b)); |
689 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1)); | 689 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1)); |
690 #else | 690 #else |
691 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); | 691 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); |
692 ASSERT_EQ(1U, infobar_service_for_tab(1)->infobar_count()); | 692 ASSERT_EQ(1U, infobar_service_for_tab(1)->infobar_count()); |
693 #endif | 693 #endif |
694 | 694 |
695 // Accept the permission in tab A0. | 695 // Accept the permission in tab A0. |
696 #if !defined(OS_ANDROID) | 696 #if !defined(ANDROID_JAVA_UI) |
697 AcceptBubble(manager_a0); | 697 AcceptBubble(manager_a0); |
698 #else | 698 #else |
699 infobars::InfoBar* infobar_a0 = infobar_service()->infobar_at(0); | 699 infobars::InfoBar* infobar_a0 = infobar_service()->infobar_at(0); |
700 ConfirmInfoBarDelegate* infobar_delegate_a0 = | 700 ConfirmInfoBarDelegate* infobar_delegate_a0 = |
701 infobar_a0->delegate()->AsConfirmInfoBarDelegate(); | 701 infobar_a0->delegate()->AsConfirmInfoBarDelegate(); |
702 ASSERT_TRUE(infobar_delegate_a0); | 702 ASSERT_TRUE(infobar_delegate_a0); |
703 infobar_delegate_a0->Accept(); | 703 infobar_delegate_a0->Accept(); |
704 infobar_service()->RemoveInfoBar(infobar_a0); | 704 infobar_service()->RemoveInfoBar(infobar_a0); |
705 EXPECT_EQ(2U, closed_infobar_tracker_.size()); | 705 EXPECT_EQ(2U, closed_infobar_tracker_.size()); |
706 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_a0)); | 706 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_a0)); |
707 #endif | 707 #endif |
708 CheckPermissionMessageSent(0, true); | 708 CheckPermissionMessageSent(0, true); |
709 // Because they're the same origin, this will cause tab A1's infobar to | 709 // Because they're the same origin, this will cause tab A1's infobar to |
710 // disappear. It does not cause the bubble to disappear: crbug.com/443013. | 710 // disappear. It does not cause the bubble to disappear: crbug.com/443013. |
711 // TODO(felt): Update this test when the bubble's behavior is changed. | 711 // TODO(felt): Update this test when the bubble's behavior is changed. |
712 // Either way, tab B should still have a pending permission request. | 712 // Either way, tab B should still have a pending permission request. |
713 #if !defined(OS_ANDROID) | 713 #if !defined(ANDROID_JAVA_UI) |
714 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1)); | 714 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1)); |
715 ASSERT_EQ(1U, GetBubblesQueueSize(manager_b)); | 715 ASSERT_EQ(1U, GetBubblesQueueSize(manager_b)); |
716 #else | 716 #else |
717 CheckPermissionMessageSentForTab(1, 0, true); | 717 CheckPermissionMessageSentForTab(1, 0, true); |
718 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); | 718 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); |
719 #endif | 719 #endif |
720 } | 720 } |
721 | 721 |
722 TEST_F(GeolocationPermissionContextTests, QueuedOriginMultipleTabs) { | 722 TEST_F(GeolocationPermissionContextTests, QueuedOriginMultipleTabs) { |
723 GURL url_a("http://www.example.com/geolocation"); | 723 GURL url_a("http://www.example.com/geolocation"); |
724 GURL url_b("http://www.example-2.com/geolocation"); | 724 GURL url_b("http://www.example-2.com/geolocation"); |
725 NavigateAndCommit(url_a); // Tab A0. | 725 NavigateAndCommit(url_a); // Tab A0. |
726 AddNewTab(url_a); // Tab A1. | 726 AddNewTab(url_a); // Tab A1. |
727 #if !defined(OS_ANDROID) | 727 #if !defined(ANDROID_JAVA_UI) |
728 BubbleManagerDocumentLoadCompleted(); | 728 BubbleManagerDocumentLoadCompleted(); |
729 BubbleManagerDocumentLoadCompleted(extra_tabs_[0]); | 729 BubbleManagerDocumentLoadCompleted(extra_tabs_[0]); |
730 PermissionBubbleManager* manager_a0 = | 730 PermissionBubbleManager* manager_a0 = |
731 PermissionBubbleManager::FromWebContents(web_contents()); | 731 PermissionBubbleManager::FromWebContents(web_contents()); |
732 PermissionBubbleManager* manager_a1 = | 732 PermissionBubbleManager* manager_a1 = |
733 PermissionBubbleManager::FromWebContents(extra_tabs_[0]); | 733 PermissionBubbleManager::FromWebContents(extra_tabs_[0]); |
734 #endif | 734 #endif |
735 | 735 |
736 // Request permission in both tabs; the extra tab will have two permission | 736 // Request permission in both tabs; the extra tab will have two permission |
737 // requests from two origins. | 737 // requests from two origins. |
738 RequestGeolocationPermission( | 738 RequestGeolocationPermission( |
739 web_contents(), RequestID(0), url_a, true); | 739 web_contents(), RequestID(0), url_a, true); |
740 RequestGeolocationPermission( | 740 RequestGeolocationPermission( |
741 extra_tabs_[0], RequestIDForTab(0, 0), url_a, true); | 741 extra_tabs_[0], RequestIDForTab(0, 0), url_a, true); |
742 RequestGeolocationPermission( | 742 RequestGeolocationPermission( |
743 extra_tabs_[0], RequestIDForTab(0, 1), url_b, true); | 743 extra_tabs_[0], RequestIDForTab(0, 1), url_b, true); |
744 #if !defined(OS_ANDROID) | 744 #if !defined(ANDROID_JAVA_UI) |
745 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a0)); | 745 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a0)); |
746 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1)); | 746 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1)); |
747 #else | 747 #else |
748 ASSERT_EQ(1U, infobar_service()->infobar_count()); | 748 ASSERT_EQ(1U, infobar_service()->infobar_count()); |
749 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); | 749 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); |
750 #endif | 750 #endif |
751 | 751 |
752 // Accept the first request in tab A1. | 752 // Accept the first request in tab A1. |
753 #if !defined(OS_ANDROID) | 753 #if !defined(ANDROID_JAVA_UI) |
754 AcceptBubble(manager_a1); | 754 AcceptBubble(manager_a1); |
755 #else | 755 #else |
756 infobars::InfoBar* infobar_a1 = infobar_service_for_tab(0)->infobar_at(0); | 756 infobars::InfoBar* infobar_a1 = infobar_service_for_tab(0)->infobar_at(0); |
757 ConfirmInfoBarDelegate* infobar_delegate_a1 = | 757 ConfirmInfoBarDelegate* infobar_delegate_a1 = |
758 infobar_a1->delegate()->AsConfirmInfoBarDelegate(); | 758 infobar_a1->delegate()->AsConfirmInfoBarDelegate(); |
759 ASSERT_TRUE(infobar_delegate_a1); | 759 ASSERT_TRUE(infobar_delegate_a1); |
760 infobar_delegate_a1->Accept(); | 760 infobar_delegate_a1->Accept(); |
761 infobar_service_for_tab(0)->RemoveInfoBar(infobar_a1); | 761 infobar_service_for_tab(0)->RemoveInfoBar(infobar_a1); |
762 EXPECT_EQ(2U, closed_infobar_tracker_.size()); | 762 EXPECT_EQ(2U, closed_infobar_tracker_.size()); |
763 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_a1)); | 763 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_a1)); |
764 #endif | 764 #endif |
765 CheckPermissionMessageSentForTab(0, 0, true); | 765 CheckPermissionMessageSentForTab(0, 0, true); |
766 | 766 |
767 // Because they're the same origin, this will cause tab A0's infobar to | 767 // Because they're the same origin, this will cause tab A0's infobar to |
768 // disappear. It does not cause the bubble to disappear: crbug.com/443013. | 768 // disappear. It does not cause the bubble to disappear: crbug.com/443013. |
769 // TODO(felt): Update this test when the bubble's behavior is changed. | 769 // TODO(felt): Update this test when the bubble's behavior is changed. |
770 #if !defined(OS_ANDROID) | 770 #if !defined(ANDROID_JAVA_UI) |
771 EXPECT_EQ(1U, GetBubblesQueueSize(manager_a0)); | 771 EXPECT_EQ(1U, GetBubblesQueueSize(manager_a0)); |
772 #else | 772 #else |
773 EXPECT_EQ(0U, infobar_service()->infobar_count()); | 773 EXPECT_EQ(0U, infobar_service()->infobar_count()); |
774 CheckPermissionMessageSent(0, true); | 774 CheckPermissionMessageSent(0, true); |
775 #endif | 775 #endif |
776 | 776 |
777 // The second request should now be visible in tab A1. | 777 // The second request should now be visible in tab A1. |
778 #if !defined(OS_ANDROID) | 778 #if !defined(ANDROID_JAVA_UI) |
779 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1)); | 779 ASSERT_EQ(1U, GetBubblesQueueSize(manager_a1)); |
780 #else | 780 #else |
781 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); | 781 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); |
782 #endif | 782 #endif |
783 | 783 |
784 // Accept the second request and check that it's gone. | 784 // Accept the second request and check that it's gone. |
785 #if !defined(OS_ANDROID) | 785 #if !defined(ANDROID_JAVA_UI) |
786 AcceptBubble(manager_a1); | 786 AcceptBubble(manager_a1); |
787 EXPECT_EQ(0U, GetBubblesQueueSize(manager_a1)); | 787 EXPECT_EQ(0U, GetBubblesQueueSize(manager_a1)); |
788 #else | 788 #else |
789 infobars::InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0); | 789 infobars::InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0); |
790 ConfirmInfoBarDelegate* infobar_delegate_1 = | 790 ConfirmInfoBarDelegate* infobar_delegate_1 = |
791 infobar_1->delegate()->AsConfirmInfoBarDelegate(); | 791 infobar_1->delegate()->AsConfirmInfoBarDelegate(); |
792 ASSERT_TRUE(infobar_delegate_1); | 792 ASSERT_TRUE(infobar_delegate_1); |
793 infobar_delegate_1->Accept(); | 793 infobar_delegate_1->Accept(); |
794 #endif | 794 #endif |
795 } | 795 } |
(...skipping 14 matching lines...) Expand all Loading... |
810 // Request permission for two frames. | 810 // Request permission for two frames. |
811 RequestGeolocationPermission( | 811 RequestGeolocationPermission( |
812 web_contents(), RequestID(0), requesting_frame_0, false); | 812 web_contents(), RequestID(0), requesting_frame_0, false); |
813 RequestGeolocationPermission( | 813 RequestGeolocationPermission( |
814 web_contents(), RequestID(1), requesting_frame_1, false); | 814 web_contents(), RequestID(1), requesting_frame_1, false); |
815 | 815 |
816 // Ensure only one prompt is created. | 816 // Ensure only one prompt is created. |
817 ASSERT_EQ(1U, GetNumberOfPrompts()); | 817 ASSERT_EQ(1U, GetNumberOfPrompts()); |
818 | 818 |
819 // Delete the tab contents. | 819 // Delete the tab contents. |
820 #if defined(OS_ANDROID) | 820 #if defined(ANDROID_JAVA_UI) |
821 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); | 821 infobars::InfoBar* infobar = infobar_service()->infobar_at(0); |
822 DeleteContents(); | 822 DeleteContents(); |
823 ASSERT_EQ(1U, closed_infobar_tracker_.size()); | 823 ASSERT_EQ(1U, closed_infobar_tracker_.size()); |
824 ASSERT_TRUE(closed_infobar_tracker_.Contains(infobar)); | 824 ASSERT_TRUE(closed_infobar_tracker_.Contains(infobar)); |
825 #endif | 825 #endif |
826 | 826 |
827 // The content settings should not have changed. | 827 // The content settings should not have changed. |
828 EXPECT_EQ( | 828 EXPECT_EQ( |
829 CONTENT_SETTING_ASK, | 829 CONTENT_SETTING_ASK, |
830 GetGeolocationContentSetting(requesting_frame_0, requesting_frame_0)); | 830 GetGeolocationContentSetting(requesting_frame_0, requesting_frame_0)); |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
908 RequestGeolocationPermission( | 908 RequestGeolocationPermission( |
909 web_contents(), RequestID(0), requesting_frame_0, false); | 909 web_contents(), RequestID(0), requesting_frame_0, false); |
910 RequestGeolocationPermission( | 910 RequestGeolocationPermission( |
911 web_contents(), RequestID(1), requesting_frame_1, false); | 911 web_contents(), RequestID(1), requesting_frame_1, false); |
912 | 912 |
913 // Ensure only one infobar is created. | 913 // Ensure only one infobar is created. |
914 ASSERT_EQ(1U, GetNumberOfPrompts()); | 914 ASSERT_EQ(1U, GetNumberOfPrompts()); |
915 | 915 |
916 // Accept the first frame. | 916 // Accept the first frame. |
917 AcceptPrompt(); | 917 AcceptPrompt(); |
918 #if defined(OS_ANDROID) | 918 #if defined(ANDROID_JAVA_UI) |
919 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); | 919 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); |
920 #endif | 920 #endif |
921 CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW); | 921 CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW); |
922 CheckPermissionMessageSent(0, true); | 922 CheckPermissionMessageSent(0, true); |
923 | 923 |
924 // Verify that accepting the first didn't accept because it's embedded | 924 // Verify that accepting the first didn't accept because it's embedded |
925 // in the other. | 925 // in the other. |
926 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(), | 926 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(), |
927 requesting_frame_0.GetOrigin(), | 927 requesting_frame_0.GetOrigin(), |
928 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), | 928 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), |
929 10); | 929 10); |
930 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), | 930 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), |
931 requesting_frame_0.GetOrigin(), | 931 requesting_frame_0.GetOrigin(), |
932 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), | 932 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), |
933 0); | 933 0); |
934 | 934 |
935 ASSERT_EQ(1U, GetNumberOfPrompts()); | 935 ASSERT_EQ(1U, GetNumberOfPrompts()); |
936 | 936 |
937 test_clock->Advance(base::TimeDelta::FromSeconds(1)); | 937 test_clock->Advance(base::TimeDelta::FromSeconds(1)); |
938 | 938 |
939 // Allow the second frame. | 939 // Allow the second frame. |
940 AcceptPrompt(); | 940 AcceptPrompt(); |
941 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_ALLOW); | 941 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_ALLOW); |
942 CheckPermissionMessageSent(1, true); | 942 CheckPermissionMessageSent(1, true); |
943 #if defined(OS_ANDROID) | 943 #if defined(ANDROID_JAVA_UI) |
944 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); | 944 infobar_service()->RemoveInfoBar(infobar_service()->infobar_at(0)); |
945 #endif | 945 #endif |
946 | 946 |
947 // Verify that the times are different. | 947 // Verify that the times are different. |
948 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(), | 948 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(), |
949 requesting_frame_0.GetOrigin(), | 949 requesting_frame_0.GetOrigin(), |
950 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), | 950 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), |
951 10); | 951 10); |
952 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), | 952 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), |
953 requesting_frame_0.GetOrigin(), | 953 requesting_frame_0.GetOrigin(), |
954 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), | 954 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), |
955 11); | 955 11); |
956 | 956 |
957 test_clock->Advance(base::TimeDelta::FromSeconds(2)); | 957 test_clock->Advance(base::TimeDelta::FromSeconds(2)); |
958 RequestGeolocationPermission( | 958 RequestGeolocationPermission( |
959 web_contents(), RequestID(0), requesting_frame_0, false); | 959 web_contents(), RequestID(0), requesting_frame_0, false); |
960 | 960 |
961 // Verify that requesting permission in one frame doesn't update other where | 961 // Verify that requesting permission in one frame doesn't update other where |
962 // it is the embedder. | 962 // it is the embedder. |
963 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(), | 963 EXPECT_EQ(map->GetLastUsage(requesting_frame_0.GetOrigin(), |
964 requesting_frame_0.GetOrigin(), | 964 requesting_frame_0.GetOrigin(), |
965 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), | 965 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), |
966 13); | 966 13); |
967 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), | 967 EXPECT_EQ(map->GetLastUsage(requesting_frame_1.GetOrigin(), |
968 requesting_frame_0.GetOrigin(), | 968 requesting_frame_0.GetOrigin(), |
969 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), | 969 CONTENT_SETTINGS_TYPE_GEOLOCATION).ToDoubleT(), |
970 11); | 970 11); |
971 } | 971 } |
OLD | NEW |