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

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

Issue 240193003: Move Infobars core files to the Infobars component (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix nib name on mac Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | 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/chrome_geolocation_permission_context.h" 5 #include "chrome/browser/geolocation/chrome_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/memory/scoped_vector.h" 13 #include "base/memory/scoped_vector.h"
14 #include "base/run_loop.h" 14 #include "base/run_loop.h"
15 #include "base/synchronization/waitable_event.h" 15 #include "base/synchronization/waitable_event.h"
16 #include "chrome/browser/chrome_notification_types.h" 16 #include "chrome/browser/chrome_notification_types.h"
17 #include "chrome/browser/content_settings/host_content_settings_map.h" 17 #include "chrome/browser/content_settings/host_content_settings_map.h"
18 #include "chrome/browser/content_settings/permission_request_id.h" 18 #include "chrome/browser/content_settings/permission_request_id.h"
19 #include "chrome/browser/content_settings/tab_specific_content_settings.h" 19 #include "chrome/browser/content_settings/tab_specific_content_settings.h"
20 #include "chrome/browser/geolocation/chrome_geolocation_permission_context_facto ry.h" 20 #include "chrome/browser/geolocation/chrome_geolocation_permission_context_facto ry.h"
21 #include "chrome/browser/infobars/confirm_infobar_delegate.h" 21 #include "chrome/browser/infobars/confirm_infobar_delegate.h"
22 #include "chrome/browser/infobars/infobar.h"
23 #include "chrome/browser/infobars/infobar_service.h" 22 #include "chrome/browser/infobars/infobar_service.h"
24 #include "chrome/browser/infobars/infobar_service.h" 23 #include "chrome/browser/infobars/infobar_service.h"
25 #include "chrome/test/base/chrome_render_view_host_test_harness.h" 24 #include "chrome/test/base/chrome_render_view_host_test_harness.h"
26 #include "chrome/test/base/testing_profile.h" 25 #include "chrome/test/base/testing_profile.h"
26 #include "components/infobars/core/infobar.h"
27 #include "content/public/browser/browser_thread.h" 27 #include "content/public/browser/browser_thread.h"
28 #include "content/public/browser/navigation_details.h" 28 #include "content/public/browser/navigation_details.h"
29 #include "content/public/browser/notification_registrar.h" 29 #include "content/public/browser/notification_registrar.h"
30 #include "content/public/browser/notification_service.h" 30 #include "content/public/browser/notification_service.h"
31 #include "content/public/browser/web_contents.h" 31 #include "content/public/browser/web_contents.h"
32 #include "content/public/test/mock_render_process_host.h" 32 #include "content/public/test/mock_render_process_host.h"
33 #include "content/public/test/test_renderer_host.h" 33 #include "content/public/test/test_renderer_host.h"
34 #include "content/public/test/web_contents_tester.h" 34 #include "content/public/test/web_contents_tester.h"
35 #include "extensions/browser/view_type_utils.h" 35 #include "extensions/browser/view_type_utils.h"
36 #include "testing/gtest/include/gtest/gtest.h" 36 #include "testing/gtest/include/gtest/gtest.h"
(...skipping 15 matching lines...) Expand all
52 ClosedInfoBarTracker(); 52 ClosedInfoBarTracker();
53 virtual ~ClosedInfoBarTracker(); 53 virtual ~ClosedInfoBarTracker();
54 54
55 // content::NotificationObserver: 55 // content::NotificationObserver:
56 virtual void Observe(int type, 56 virtual void Observe(int type,
57 const content::NotificationSource& source, 57 const content::NotificationSource& source,
58 const content::NotificationDetails& details) OVERRIDE; 58 const content::NotificationDetails& details) OVERRIDE;
59 59
60 size_t size() const { return removed_infobars_.size(); } 60 size_t size() const { return removed_infobars_.size(); }
61 61
62 bool Contains(InfoBar* infobar) const; 62 bool Contains(infobars::InfoBar* infobar) const;
63 void Clear(); 63 void Clear();
64 64
65 private: 65 private:
66 FRIEND_TEST_ALL_PREFIXES(GeolocationPermissionContextTests, TabDestroyed); 66 FRIEND_TEST_ALL_PREFIXES(GeolocationPermissionContextTests, TabDestroyed);
67 content::NotificationRegistrar registrar_; 67 content::NotificationRegistrar registrar_;
68 std::set<InfoBar*> removed_infobars_; 68 std::set<infobars::InfoBar*> removed_infobars_;
69 }; 69 };
70 70
71 ClosedInfoBarTracker::ClosedInfoBarTracker() { 71 ClosedInfoBarTracker::ClosedInfoBarTracker() {
72 registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED, 72 registrar_.Add(this, chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED,
73 content::NotificationService::AllSources()); 73 content::NotificationService::AllSources());
74 } 74 }
75 75
76 ClosedInfoBarTracker::~ClosedInfoBarTracker() { 76 ClosedInfoBarTracker::~ClosedInfoBarTracker() {
77 } 77 }
78 78
79 void ClosedInfoBarTracker::Observe( 79 void ClosedInfoBarTracker::Observe(
80 int type, 80 int type,
81 const content::NotificationSource& source, 81 const content::NotificationSource& source,
82 const content::NotificationDetails& details) { 82 const content::NotificationDetails& details) {
83 DCHECK(type == chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED); 83 DCHECK(type == chrome::NOTIFICATION_TAB_CONTENTS_INFOBAR_REMOVED);
84 removed_infobars_.insert( 84 removed_infobars_.insert(
85 content::Details<InfoBar::RemovedDetails>(details)->first); 85 content::Details<infobars::InfoBar::RemovedDetails>(details)->first);
86 } 86 }
87 87
88 bool ClosedInfoBarTracker::Contains(InfoBar* infobar) const { 88 bool ClosedInfoBarTracker::Contains(infobars::InfoBar* infobar) const {
89 return removed_infobars_.count(infobar) != 0; 89 return removed_infobars_.count(infobar) != 0;
90 } 90 }
91 91
92 void ClosedInfoBarTracker::Clear() { 92 void ClosedInfoBarTracker::Clear() {
93 removed_infobars_.clear(); 93 removed_infobars_.clear();
94 } 94 }
95 95
96 96
97 // GeolocationPermissionContextTests ------------------------------------------ 97 // GeolocationPermissionContextTests ------------------------------------------
98 98
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 } 258 }
259 259
260 // Tests ---------------------------------------------------------------------- 260 // Tests ----------------------------------------------------------------------
261 261
262 TEST_F(GeolocationPermissionContextTests, SinglePermission) { 262 TEST_F(GeolocationPermissionContextTests, SinglePermission) {
263 GURL requesting_frame("http://www.example.com/geolocation"); 263 GURL requesting_frame("http://www.example.com/geolocation");
264 NavigateAndCommit(requesting_frame); 264 NavigateAndCommit(requesting_frame);
265 EXPECT_EQ(0U, infobar_service()->infobar_count()); 265 EXPECT_EQ(0U, infobar_service()->infobar_count());
266 RequestGeolocationPermission(RequestID(0), requesting_frame); 266 RequestGeolocationPermission(RequestID(0), requesting_frame);
267 ASSERT_EQ(1U, infobar_service()->infobar_count()); 267 ASSERT_EQ(1U, infobar_service()->infobar_count());
268 InfoBar* infobar = infobar_service()->infobar_at(0); 268 infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
269 ConfirmInfoBarDelegate* infobar_delegate = 269 ConfirmInfoBarDelegate* infobar_delegate =
270 infobar->delegate()->AsConfirmInfoBarDelegate(); 270 infobar->delegate()->AsConfirmInfoBarDelegate();
271 ASSERT_TRUE(infobar_delegate); 271 ASSERT_TRUE(infobar_delegate);
272 infobar_delegate->Cancel(); 272 infobar_delegate->Cancel();
273 infobar_service()->RemoveInfoBar(infobar); 273 infobar_service()->RemoveInfoBar(infobar);
274 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 274 EXPECT_EQ(1U, closed_infobar_tracker_.size());
275 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar)); 275 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar));
276 } 276 }
277 277
278 #if defined(OS_ANDROID) 278 #if defined(OS_ANDROID)
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after
351 requesting_frame_1, requesting_frame_0, 351 requesting_frame_1, requesting_frame_0,
352 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 352 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
353 353
354 NavigateAndCommit(requesting_frame_0); 354 NavigateAndCommit(requesting_frame_0);
355 EXPECT_EQ(0U, infobar_service()->infobar_count()); 355 EXPECT_EQ(0U, infobar_service()->infobar_count());
356 // Request permission for two frames. 356 // Request permission for two frames.
357 RequestGeolocationPermission(RequestID(0), requesting_frame_0); 357 RequestGeolocationPermission(RequestID(0), requesting_frame_0);
358 RequestGeolocationPermission(RequestID(1), requesting_frame_1); 358 RequestGeolocationPermission(RequestID(1), requesting_frame_1);
359 // Ensure only one infobar is created. 359 // Ensure only one infobar is created.
360 ASSERT_EQ(1U, infobar_service()->infobar_count()); 360 ASSERT_EQ(1U, infobar_service()->infobar_count());
361 InfoBar* infobar_0 = infobar_service()->infobar_at(0); 361 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
362 ConfirmInfoBarDelegate* infobar_delegate_0 = 362 ConfirmInfoBarDelegate* infobar_delegate_0 =
363 infobar_0->delegate()->AsConfirmInfoBarDelegate(); 363 infobar_0->delegate()->AsConfirmInfoBarDelegate();
364 ASSERT_TRUE(infobar_delegate_0); 364 ASSERT_TRUE(infobar_delegate_0);
365 base::string16 text_0 = infobar_delegate_0->GetMessageText(); 365 base::string16 text_0 = infobar_delegate_0->GetMessageText();
366 366
367 // Accept the first frame. 367 // Accept the first frame.
368 infobar_delegate_0->Accept(); 368 infobar_delegate_0->Accept();
369 CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW); 369 CheckTabContentsState(requesting_frame_0, CONTENT_SETTING_ALLOW);
370 CheckPermissionMessageSent(0, true); 370 CheckPermissionMessageSent(0, true);
371 371
372 infobar_service()->RemoveInfoBar(infobar_0); 372 infobar_service()->RemoveInfoBar(infobar_0);
373 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 373 EXPECT_EQ(1U, closed_infobar_tracker_.size());
374 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0)); 374 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0));
375 closed_infobar_tracker_.Clear(); 375 closed_infobar_tracker_.Clear();
376 // Now we should have a new infobar for the second frame. 376 // Now we should have a new infobar for the second frame.
377 ASSERT_EQ(1U, infobar_service()->infobar_count()); 377 ASSERT_EQ(1U, infobar_service()->infobar_count());
378 378
379 InfoBar* infobar_1 = infobar_service()->infobar_at(0); 379 infobars::InfoBar* infobar_1 = infobar_service()->infobar_at(0);
380 ConfirmInfoBarDelegate* infobar_delegate_1 = 380 ConfirmInfoBarDelegate* infobar_delegate_1 =
381 infobar_1->delegate()->AsConfirmInfoBarDelegate(); 381 infobar_1->delegate()->AsConfirmInfoBarDelegate();
382 ASSERT_TRUE(infobar_delegate_1); 382 ASSERT_TRUE(infobar_delegate_1);
383 base::string16 text_1 = infobar_delegate_1->GetMessageText(); 383 base::string16 text_1 = infobar_delegate_1->GetMessageText();
384 EXPECT_NE(text_0, text_1); 384 EXPECT_NE(text_0, text_1);
385 385
386 // Cancel (block) this frame. 386 // Cancel (block) this frame.
387 infobar_delegate_1->Cancel(); 387 infobar_delegate_1->Cancel();
388 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_BLOCK); 388 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_BLOCK);
389 CheckPermissionMessageSent(1, false); 389 CheckPermissionMessageSent(1, false);
(...skipping 15 matching lines...) Expand all
405 405
406 TEST_F(GeolocationPermissionContextTests, HashIsIgnored) { 406 TEST_F(GeolocationPermissionContextTests, HashIsIgnored) {
407 GURL url_a("http://www.example.com/geolocation#a"); 407 GURL url_a("http://www.example.com/geolocation#a");
408 GURL url_b("http://www.example.com/geolocation#b"); 408 GURL url_b("http://www.example.com/geolocation#b");
409 409
410 // Navigate to the first url and check permission is requested. 410 // Navigate to the first url and check permission is requested.
411 NavigateAndCommit(url_a); 411 NavigateAndCommit(url_a);
412 EXPECT_EQ(0U, infobar_service()->infobar_count()); 412 EXPECT_EQ(0U, infobar_service()->infobar_count());
413 RequestGeolocationPermission(RequestID(0), url_a); 413 RequestGeolocationPermission(RequestID(0), url_a);
414 ASSERT_EQ(1U, infobar_service()->infobar_count()); 414 ASSERT_EQ(1U, infobar_service()->infobar_count());
415 InfoBar* infobar = infobar_service()->infobar_at(0); 415 infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
416 ConfirmInfoBarDelegate* infobar_delegate = 416 ConfirmInfoBarDelegate* infobar_delegate =
417 infobar->delegate()->AsConfirmInfoBarDelegate(); 417 infobar->delegate()->AsConfirmInfoBarDelegate();
418 ASSERT_TRUE(infobar_delegate); 418 ASSERT_TRUE(infobar_delegate);
419 419
420 // Change the hash, we'll still be on the same page. 420 // Change the hash, we'll still be on the same page.
421 NavigateAndCommit(url_b); 421 NavigateAndCommit(url_b);
422 422
423 // Accept. 423 // Accept.
424 infobar_delegate->Accept(); 424 infobar_delegate->Accept();
425 CheckTabContentsState(url_a, CONTENT_SETTING_ALLOW); 425 CheckTabContentsState(url_a, CONTENT_SETTING_ALLOW);
426 CheckTabContentsState(url_b, CONTENT_SETTING_ALLOW); 426 CheckTabContentsState(url_b, CONTENT_SETTING_ALLOW);
427 CheckPermissionMessageSent(0, true); 427 CheckPermissionMessageSent(0, true);
428 428
429 // Cleanup. 429 // Cleanup.
430 infobar_service()->RemoveInfoBar(infobar); 430 infobar_service()->RemoveInfoBar(infobar);
431 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 431 EXPECT_EQ(1U, closed_infobar_tracker_.size());
432 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar)); 432 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar));
433 } 433 }
434 434
435 TEST_F(GeolocationPermissionContextTests, PermissionForFileScheme) { 435 TEST_F(GeolocationPermissionContextTests, PermissionForFileScheme) {
436 GURL requesting_frame("file://example/geolocation.html"); 436 GURL requesting_frame("file://example/geolocation.html");
437 NavigateAndCommit(requesting_frame); 437 NavigateAndCommit(requesting_frame);
438 EXPECT_EQ(0U, infobar_service()->infobar_count()); 438 EXPECT_EQ(0U, infobar_service()->infobar_count());
439 RequestGeolocationPermission(RequestID(0), requesting_frame); 439 RequestGeolocationPermission(RequestID(0), requesting_frame);
440 EXPECT_EQ(1U, infobar_service()->infobar_count()); 440 EXPECT_EQ(1U, infobar_service()->infobar_count());
441 InfoBar* infobar = infobar_service()->infobar_at(0); 441 infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
442 ConfirmInfoBarDelegate* infobar_delegate = 442 ConfirmInfoBarDelegate* infobar_delegate =
443 infobar->delegate()->AsConfirmInfoBarDelegate(); 443 infobar->delegate()->AsConfirmInfoBarDelegate();
444 ASSERT_TRUE(infobar_delegate); 444 ASSERT_TRUE(infobar_delegate);
445 // Accept the frame. 445 // Accept the frame.
446 infobar_delegate->Accept(); 446 infobar_delegate->Accept();
447 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW); 447 CheckTabContentsState(requesting_frame, CONTENT_SETTING_ALLOW);
448 CheckPermissionMessageSent(0, true); 448 CheckPermissionMessageSent(0, true);
449 infobar_service()->RemoveInfoBar(infobar); 449 infobar_service()->RemoveInfoBar(infobar);
450 450
451 // Make sure the setting is not stored. 451 // Make sure the setting is not stored.
(...skipping 18 matching lines...) Expand all
470 requesting_frame_1, requesting_frame_0, 470 requesting_frame_1, requesting_frame_0,
471 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 471 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
472 472
473 NavigateAndCommit(requesting_frame_0); 473 NavigateAndCommit(requesting_frame_0);
474 EXPECT_EQ(0U, infobar_service()->infobar_count()); 474 EXPECT_EQ(0U, infobar_service()->infobar_count());
475 // Request permission for two frames. 475 // Request permission for two frames.
476 RequestGeolocationPermission(RequestID(0), requesting_frame_0); 476 RequestGeolocationPermission(RequestID(0), requesting_frame_0);
477 RequestGeolocationPermission(RequestID(1), requesting_frame_1); 477 RequestGeolocationPermission(RequestID(1), requesting_frame_1);
478 ASSERT_EQ(1U, infobar_service()->infobar_count()); 478 ASSERT_EQ(1U, infobar_service()->infobar_count());
479 479
480 InfoBar* infobar_0 = infobar_service()->infobar_at(0); 480 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
481 ConfirmInfoBarDelegate* infobar_delegate_0 = 481 ConfirmInfoBarDelegate* infobar_delegate_0 =
482 infobar_0->delegate()->AsConfirmInfoBarDelegate(); 482 infobar_0->delegate()->AsConfirmInfoBarDelegate();
483 ASSERT_TRUE(infobar_delegate_0); 483 ASSERT_TRUE(infobar_delegate_0);
484 base::string16 text_0 = infobar_delegate_0->GetMessageText(); 484 base::string16 text_0 = infobar_delegate_0->GetMessageText();
485 485
486 // Simulate the frame going away, ensure the infobar for this frame 486 // Simulate the frame going away, ensure the infobar for this frame
487 // is removed and the next pending infobar is created. 487 // is removed and the next pending infobar is created.
488 CancelGeolocationPermissionRequest(RequestID(0), requesting_frame_0); 488 CancelGeolocationPermissionRequest(RequestID(0), requesting_frame_0);
489 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 489 EXPECT_EQ(1U, closed_infobar_tracker_.size());
490 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0)); 490 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0));
491 closed_infobar_tracker_.Clear(); 491 closed_infobar_tracker_.Clear();
492 ASSERT_EQ(1U, infobar_service()->infobar_count()); 492 ASSERT_EQ(1U, infobar_service()->infobar_count());
493 493
494 InfoBar* infobar_1 = infobar_service()->infobar_at(0); 494 infobars::InfoBar* infobar_1 = infobar_service()->infobar_at(0);
495 ConfirmInfoBarDelegate* infobar_delegate_1 = 495 ConfirmInfoBarDelegate* infobar_delegate_1 =
496 infobar_1->delegate()->AsConfirmInfoBarDelegate(); 496 infobar_1->delegate()->AsConfirmInfoBarDelegate();
497 ASSERT_TRUE(infobar_delegate_1); 497 ASSERT_TRUE(infobar_delegate_1);
498 base::string16 text_1 = infobar_delegate_1->GetMessageText(); 498 base::string16 text_1 = infobar_delegate_1->GetMessageText();
499 EXPECT_NE(text_0, text_1); 499 EXPECT_NE(text_0, text_1);
500 500
501 // Allow this frame. 501 // Allow this frame.
502 infobar_delegate_1->Accept(); 502 infobar_delegate_1->Accept();
503 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_ALLOW); 503 CheckTabContentsState(requesting_frame_1, CONTENT_SETTING_ALLOW);
504 CheckPermissionMessageSent(1, true); 504 CheckPermissionMessageSent(1, true);
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
538 EXPECT_EQ(0U, infobar_service()->infobar_count()); 538 EXPECT_EQ(0U, infobar_service()->infobar_count());
539 RequestGeolocationPermission(RequestID(0), url_a); 539 RequestGeolocationPermission(RequestID(0), url_a);
540 ASSERT_EQ(1U, infobar_service()->infobar_count()); 540 ASSERT_EQ(1U, infobar_service()->infobar_count());
541 541
542 RequestGeolocationPermission(RequestIDForTab(0, 0), url_b); 542 RequestGeolocationPermission(RequestIDForTab(0, 0), url_b);
543 EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); 543 EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
544 544
545 RequestGeolocationPermission(RequestIDForTab(1, 0), url_a); 545 RequestGeolocationPermission(RequestIDForTab(1, 0), url_a);
546 ASSERT_EQ(1U, infobar_service_for_tab(1)->infobar_count()); 546 ASSERT_EQ(1U, infobar_service_for_tab(1)->infobar_count());
547 547
548 InfoBar* removed_infobar = infobar_service_for_tab(1)->infobar_at(0); 548 infobars::InfoBar* removed_infobar =
549 infobar_service_for_tab(1)->infobar_at(0);
549 550
550 // Accept the first tab. 551 // Accept the first tab.
551 InfoBar* infobar_0 = infobar_service()->infobar_at(0); 552 infobars::InfoBar* infobar_0 = infobar_service()->infobar_at(0);
552 ConfirmInfoBarDelegate* infobar_delegate_0 = 553 ConfirmInfoBarDelegate* infobar_delegate_0 =
553 infobar_0->delegate()->AsConfirmInfoBarDelegate(); 554 infobar_0->delegate()->AsConfirmInfoBarDelegate();
554 ASSERT_TRUE(infobar_delegate_0); 555 ASSERT_TRUE(infobar_delegate_0);
555 infobar_delegate_0->Accept(); 556 infobar_delegate_0->Accept();
556 CheckPermissionMessageSent(0, true); 557 CheckPermissionMessageSent(0, true);
557 infobar_service()->RemoveInfoBar(infobar_0); 558 infobar_service()->RemoveInfoBar(infobar_0);
558 EXPECT_EQ(2U, closed_infobar_tracker_.size()); 559 EXPECT_EQ(2U, closed_infobar_tracker_.size());
559 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0)); 560 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0));
560 // Now the infobar for the tab with the same origin should have gone. 561 // Now the infobar for the tab with the same origin should have gone.
561 EXPECT_EQ(0U, infobar_service_for_tab(1)->infobar_count()); 562 EXPECT_EQ(0U, infobar_service_for_tab(1)->infobar_count());
562 CheckPermissionMessageSentForTab(1, 0, true); 563 CheckPermissionMessageSentForTab(1, 0, true);
563 EXPECT_TRUE(closed_infobar_tracker_.Contains(removed_infobar)); 564 EXPECT_TRUE(closed_infobar_tracker_.Contains(removed_infobar));
564 closed_infobar_tracker_.Clear(); 565 closed_infobar_tracker_.Clear();
565 566
566 // But the other tab should still have the info bar... 567 // But the other tab should still have the info bar...
567 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); 568 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
568 InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0); 569 infobars::InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0);
569 ConfirmInfoBarDelegate* infobar_delegate_1 = 570 ConfirmInfoBarDelegate* infobar_delegate_1 =
570 infobar_1->delegate()->AsConfirmInfoBarDelegate(); 571 infobar_1->delegate()->AsConfirmInfoBarDelegate();
571 ASSERT_TRUE(infobar_delegate_1); 572 ASSERT_TRUE(infobar_delegate_1);
572 infobar_delegate_1->Cancel(); 573 infobar_delegate_1->Cancel();
573 infobar_service_for_tab(0)->RemoveInfoBar(infobar_1); 574 infobar_service_for_tab(0)->RemoveInfoBar(infobar_1);
574 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 575 EXPECT_EQ(1U, closed_infobar_tracker_.size());
575 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1)); 576 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1));
576 } 577 }
577 578
578 TEST_F(GeolocationPermissionContextTests, QueuedOriginMultipleTabs) { 579 TEST_F(GeolocationPermissionContextTests, QueuedOriginMultipleTabs) {
579 GURL url_a("http://www.example.com/geolocation"); 580 GURL url_a("http://www.example.com/geolocation");
580 GURL url_b("http://www.example-2.com/geolocation"); 581 GURL url_b("http://www.example-2.com/geolocation");
581 NavigateAndCommit(url_a); 582 NavigateAndCommit(url_a);
582 AddNewTab(url_a); 583 AddNewTab(url_a);
583 584
584 EXPECT_EQ(0U, infobar_service()->infobar_count()); 585 EXPECT_EQ(0U, infobar_service()->infobar_count());
585 RequestGeolocationPermission(RequestID(0), url_a); 586 RequestGeolocationPermission(RequestID(0), url_a);
586 ASSERT_EQ(1U, infobar_service()->infobar_count()); 587 ASSERT_EQ(1U, infobar_service()->infobar_count());
587 588
588 RequestGeolocationPermission(RequestIDForTab(0, 0), url_a); 589 RequestGeolocationPermission(RequestIDForTab(0, 0), url_a);
589 EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); 590 EXPECT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
590 591
591 RequestGeolocationPermission(RequestIDForTab(0, 1), url_b); 592 RequestGeolocationPermission(RequestIDForTab(0, 1), url_b);
592 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); 593 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
593 594
594 InfoBar* removed_infobar = infobar_service()->infobar_at(0); 595 infobars::InfoBar* removed_infobar = infobar_service()->infobar_at(0);
595 596
596 // Accept the second tab. 597 // Accept the second tab.
597 InfoBar* infobar_0 = infobar_service_for_tab(0)->infobar_at(0); 598 infobars::InfoBar* infobar_0 = infobar_service_for_tab(0)->infobar_at(0);
598 ConfirmInfoBarDelegate* infobar_delegate_0 = 599 ConfirmInfoBarDelegate* infobar_delegate_0 =
599 infobar_0->delegate()->AsConfirmInfoBarDelegate(); 600 infobar_0->delegate()->AsConfirmInfoBarDelegate();
600 ASSERT_TRUE(infobar_delegate_0); 601 ASSERT_TRUE(infobar_delegate_0);
601 infobar_delegate_0->Accept(); 602 infobar_delegate_0->Accept();
602 CheckPermissionMessageSentForTab(0, 0, true); 603 CheckPermissionMessageSentForTab(0, 0, true);
603 infobar_service_for_tab(0)->RemoveInfoBar(infobar_0); 604 infobar_service_for_tab(0)->RemoveInfoBar(infobar_0);
604 EXPECT_EQ(2U, closed_infobar_tracker_.size()); 605 EXPECT_EQ(2U, closed_infobar_tracker_.size());
605 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0)); 606 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_0));
606 // Now the infobar for the tab with the same origin should have gone. 607 // Now the infobar for the tab with the same origin should have gone.
607 EXPECT_EQ(0U, infobar_service()->infobar_count()); 608 EXPECT_EQ(0U, infobar_service()->infobar_count());
608 CheckPermissionMessageSent(0, true); 609 CheckPermissionMessageSent(0, true);
609 EXPECT_TRUE(closed_infobar_tracker_.Contains(removed_infobar)); 610 EXPECT_TRUE(closed_infobar_tracker_.Contains(removed_infobar));
610 closed_infobar_tracker_.Clear(); 611 closed_infobar_tracker_.Clear();
611 612
612 // And we should have the queued infobar displayed now. 613 // And we should have the queued infobar displayed now.
613 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count()); 614 ASSERT_EQ(1U, infobar_service_for_tab(0)->infobar_count());
614 615
615 // Accept the second infobar. 616 // Accept the second infobar.
616 InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0); 617 infobars::InfoBar* infobar_1 = infobar_service_for_tab(0)->infobar_at(0);
617 ConfirmInfoBarDelegate* infobar_delegate_1 = 618 ConfirmInfoBarDelegate* infobar_delegate_1 =
618 infobar_1->delegate()->AsConfirmInfoBarDelegate(); 619 infobar_1->delegate()->AsConfirmInfoBarDelegate();
619 ASSERT_TRUE(infobar_delegate_1); 620 ASSERT_TRUE(infobar_delegate_1);
620 infobar_delegate_1->Accept(); 621 infobar_delegate_1->Accept();
621 CheckPermissionMessageSentForTab(0, 1, true); 622 CheckPermissionMessageSentForTab(0, 1, true);
622 infobar_service_for_tab(0)->RemoveInfoBar(infobar_1); 623 infobar_service_for_tab(0)->RemoveInfoBar(infobar_1);
623 EXPECT_EQ(1U, closed_infobar_tracker_.size()); 624 EXPECT_EQ(1U, closed_infobar_tracker_.size());
624 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1)); 625 EXPECT_TRUE(closed_infobar_tracker_.Contains(infobar_1));
625 } 626 }
626 627
(...skipping 10 matching lines...) Expand all
637 requesting_frame_1, requesting_frame_0, 638 requesting_frame_1, requesting_frame_0,
638 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string())); 639 CONTENT_SETTINGS_TYPE_GEOLOCATION, std::string()));
639 640
640 NavigateAndCommit(requesting_frame_0); 641 NavigateAndCommit(requesting_frame_0);
641 EXPECT_EQ(0U, infobar_service()->infobar_count()); 642 EXPECT_EQ(0U, infobar_service()->infobar_count());
642 // Request permission for two frames. 643 // Request permission for two frames.
643 RequestGeolocationPermission(RequestID(0), requesting_frame_0); 644 RequestGeolocationPermission(RequestID(0), requesting_frame_0);
644 RequestGeolocationPermission(RequestID(1), requesting_frame_1); 645 RequestGeolocationPermission(RequestID(1), requesting_frame_1);
645 // Ensure only one infobar is created. 646 // Ensure only one infobar is created.
646 ASSERT_EQ(1U, infobar_service()->infobar_count()); 647 ASSERT_EQ(1U, infobar_service()->infobar_count());
647 InfoBar* infobar = infobar_service()->infobar_at(0); 648 infobars::InfoBar* infobar = infobar_service()->infobar_at(0);
648 649
649 // Delete the tab contents. 650 // Delete the tab contents.
650 DeleteContents(); 651 DeleteContents();
651 652
652 // During contents destruction, the infobar will have been closed, and the 653 // During contents destruction, the infobar will have been closed, and the
653 // pending request should have been cleared without an infobar being created. 654 // pending request should have been cleared without an infobar being created.
654 ASSERT_EQ(1U, closed_infobar_tracker_.size()); 655 ASSERT_EQ(1U, closed_infobar_tracker_.size());
655 ASSERT_TRUE(closed_infobar_tracker_.Contains(infobar)); 656 ASSERT_TRUE(closed_infobar_tracker_.Contains(infobar));
656 } 657 }
657 658
658 TEST_F(GeolocationPermissionContextTests, InfoBarUsesCommittedEntry) { 659 TEST_F(GeolocationPermissionContextTests, InfoBarUsesCommittedEntry) {
659 GURL requesting_frame_0("http://www.example.com/geolocation"); 660 GURL requesting_frame_0("http://www.example.com/geolocation");
660 GURL requesting_frame_1("http://www.example-2.com/geolocation"); 661 GURL requesting_frame_1("http://www.example-2.com/geolocation");
661 NavigateAndCommit(requesting_frame_0); 662 NavigateAndCommit(requesting_frame_0);
662 NavigateAndCommit(requesting_frame_1); 663 NavigateAndCommit(requesting_frame_1);
663 EXPECT_EQ(0U, infobar_service()->infobar_count()); 664 EXPECT_EQ(0U, infobar_service()->infobar_count());
664 // Go back: navigate to a pending entry before requesting geolocation 665 // Go back: navigate to a pending entry before requesting geolocation
665 // permission. 666 // permission.
666 web_contents()->GetController().GoBack(); 667 web_contents()->GetController().GoBack();
667 // Request permission for the committed frame (not the pending one). 668 // Request permission for the committed frame (not the pending one).
668 RequestGeolocationPermission(RequestID(0), requesting_frame_1); 669 RequestGeolocationPermission(RequestID(0), requesting_frame_1);
669 // Ensure the infobar is created. 670 // Ensure the infobar is created.
670 ASSERT_EQ(1U, infobar_service()->infobar_count()); 671 ASSERT_EQ(1U, infobar_service()->infobar_count());
671 InfoBarDelegate* infobar_delegate = 672 infobars::InfoBarDelegate* infobar_delegate =
672 infobar_service()->infobar_at(0)->delegate(); 673 infobar_service()->infobar_at(0)->delegate();
673 ASSERT_TRUE(infobar_delegate); 674 ASSERT_TRUE(infobar_delegate);
674 // Ensure the infobar wouldn't expire for a navigation to the committed entry. 675 // Ensure the infobar wouldn't expire for a navigation to the committed entry.
675 content::LoadCommittedDetails details; 676 content::LoadCommittedDetails details;
676 details.entry = web_contents()->GetController().GetLastCommittedEntry(); 677 details.entry = web_contents()->GetController().GetLastCommittedEntry();
677 EXPECT_FALSE(infobar_delegate->ShouldExpire( 678 EXPECT_FALSE(infobar_delegate->ShouldExpire(
678 InfoBarService::NavigationDetailsFromLoadCommittedDetails(details))); 679 InfoBarService::NavigationDetailsFromLoadCommittedDetails(details)));
679 // Ensure the infobar will expire when we commit the pending navigation. 680 // Ensure the infobar will expire when we commit the pending navigation.
680 details.entry = web_contents()->GetController().GetActiveEntry(); 681 details.entry = web_contents()->GetController().GetActiveEntry();
681 EXPECT_TRUE(infobar_delegate->ShouldExpire( 682 EXPECT_TRUE(infobar_delegate->ShouldExpire(
682 InfoBarService::NavigationDetailsFromLoadCommittedDetails(details))); 683 InfoBarService::NavigationDetailsFromLoadCommittedDetails(details)));
683 684
684 // Delete the tab contents. 685 // Delete the tab contents.
685 DeleteContents(); 686 DeleteContents();
686 } 687 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/theme_installed_infobar_delegate.cc ('k') | chrome/browser/geolocation/geolocation_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698