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

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

Issue 8983012: Get rid of content::NavigationController in cc file and use "using" instead. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 8 years, 11 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 <string> 5 #include <string>
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/string_number_conversions.h" 8 #include "base/string_number_conversions.h"
9 #include "base/stringprintf.h" 9 #include "base/stringprintf.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 17 matching lines...) Expand all
28 #include "content/browser/geolocation/location_arbitrator.h" 28 #include "content/browser/geolocation/location_arbitrator.h"
29 #include "content/browser/geolocation/mock_location_provider.h" 29 #include "content/browser/geolocation/mock_location_provider.h"
30 #include "content/browser/renderer_host/render_view_host.h" 30 #include "content/browser/renderer_host/render_view_host.h"
31 #include "content/public/browser/navigation_controller.h" 31 #include "content/public/browser/navigation_controller.h"
32 #include "content/public/browser/notification_service.h" 32 #include "content/public/browser/notification_service.h"
33 #include "content/public/browser/notification_details.h" 33 #include "content/public/browser/notification_details.h"
34 #include "content/public/browser/web_contents.h" 34 #include "content/public/browser/web_contents.h"
35 #include "net/base/net_util.h" 35 #include "net/base/net_util.h"
36 #include "net/test/test_server.h" 36 #include "net/test/test_server.h"
37 37
38 using content::NavigationController;
38 using content::WebContents; 39 using content::WebContents;
39 40
40 namespace { 41 namespace {
41 42
42 // Used to block until an iframe is loaded via a javascript call. 43 // Used to block until an iframe is loaded via a javascript call.
43 // Note: NavigateToURLBlockUntilNavigationsComplete doesn't seem to work for 44 // Note: NavigateToURLBlockUntilNavigationsComplete doesn't seem to work for
44 // multiple embedded iframes, as notifications seem to be 'batched'. Instead, we 45 // multiple embedded iframes, as notifications seem to be 'batched'. Instead, we
45 // load and wait one single frame here by calling a javascript function. 46 // load and wait one single frame here by calling a javascript function.
46 class IFrameLoader : public content::NotificationObserver { 47 class IFrameLoader : public content::NotificationObserver {
47 public: 48 public:
48 IFrameLoader(Browser* browser, int iframe_id, const GURL& url) 49 IFrameLoader(Browser* browser, int iframe_id, const GURL& url)
49 : navigation_completed_(false), 50 : navigation_completed_(false),
50 javascript_completed_(false) { 51 javascript_completed_(false) {
51 content::NavigationController* controller = 52 NavigationController* controller =
52 &browser->GetSelectedWebContents()->GetController(); 53 &browser->GetSelectedWebContents()->GetController();
53 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP, 54 registrar_.Add(this, content::NOTIFICATION_LOAD_STOP,
54 content::Source<content::NavigationController>(controller)); 55 content::Source<NavigationController>(controller));
55 registrar_.Add(this, chrome::NOTIFICATION_DOM_OPERATION_RESPONSE, 56 registrar_.Add(this, chrome::NOTIFICATION_DOM_OPERATION_RESPONSE,
56 content::NotificationService::AllSources()); 57 content::NotificationService::AllSources());
57 std::string script = base::StringPrintf( 58 std::string script = base::StringPrintf(
58 "window.domAutomationController.setAutomationId(0);" 59 "window.domAutomationController.setAutomationId(0);"
59 "window.domAutomationController.send(addIFrame(%d, \"%s\"));", 60 "window.domAutomationController.send(addIFrame(%d, \"%s\"));",
60 iframe_id, 61 iframe_id,
61 url.spec().c_str()); 62 url.spec().c_str());
62 browser->GetSelectedWebContents()->GetRenderViewHost()-> 63 browser->GetSelectedWebContents()->GetRenderViewHost()->
63 ExecuteJavascriptInWebFrame(string16(), UTF8ToUTF16(script)); 64 ExecuteJavascriptInWebFrame(string16(), UTF8ToUTF16(script));
64 ui_test_utils::RunMessageLoop(); 65 ui_test_utils::RunMessageLoop();
(...skipping 254 matching lines...) Expand 10 before | Expand all | Expand 10 after
319 TabSpecificContentSettings* content_settings = 320 TabSpecificContentSettings* content_settings =
320 tab_contents_wrapper->content_settings(); 321 tab_contents_wrapper->content_settings();
321 const GeolocationSettingsState& settings_state = 322 const GeolocationSettingsState& settings_state =
322 content_settings->geolocation_settings_state(); 323 content_settings->geolocation_settings_state();
323 size_t state_map_size = settings_state.state_map().size(); 324 size_t state_map_size = settings_state.state_map().size();
324 ASSERT_TRUE(infobar_); 325 ASSERT_TRUE(infobar_);
325 LOG(WARNING) << "will set infobar response"; 326 LOG(WARNING) << "will set infobar response";
326 { 327 {
327 ui_test_utils::WindowedNotificationObserver observer( 328 ui_test_utils::WindowedNotificationObserver observer(
328 content::NOTIFICATION_LOAD_STOP, 329 content::NOTIFICATION_LOAD_STOP,
329 content::Source<content::NavigationController>( 330 content::Source<NavigationController>(
330 &tab_contents_wrapper->web_contents()->GetController())); 331 &tab_contents_wrapper->web_contents()->GetController()));
331 if (allowed) 332 if (allowed)
332 infobar_->AsConfirmInfoBarDelegate()->Accept(); 333 infobar_->AsConfirmInfoBarDelegate()->Accept();
333 else 334 else
334 infobar_->AsConfirmInfoBarDelegate()->Cancel(); 335 infobar_->AsConfirmInfoBarDelegate()->Cancel();
335 observer.Wait(); 336 observer.Wait();
336 } 337 }
337 338
338 tab_contents_wrapper->infobar_tab_helper()->RemoveInfoBar(infobar_); 339 tab_contents_wrapper->infobar_tab_helper()->RemoveInfoBar(infobar_);
339 LOG(WARNING) << "infobar response set"; 340 LOG(WARNING) << "infobar response set";
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
502 AddGeolocationWatch(true); 503 AddGeolocationWatch(true);
503 504
504 // Back to the first frame, enable navigation and refresh geoposition. 505 // Back to the first frame, enable navigation and refresh geoposition.
505 iframe_xpath_ = L"//iframe[@id='iframe_0']"; 506 iframe_xpath_ = L"//iframe[@id='iframe_0']";
506 CheckStringValueFromJavascript("1", "geoSetMaxNavigateCount(1)"); 507 CheckStringValueFromJavascript("1", "geoSetMaxNavigateCount(1)");
507 // MockLocationProvider must have been created. 508 // MockLocationProvider must have been created.
508 ASSERT_TRUE(MockLocationProvider::instance_); 509 ASSERT_TRUE(MockLocationProvider::instance_);
509 Geoposition fresh_position = GeopositionFromLatLong(3.17, 4.23); 510 Geoposition fresh_position = GeopositionFromLatLong(3.17, 4.23);
510 ui_test_utils::WindowedNotificationObserver observer( 511 ui_test_utils::WindowedNotificationObserver observer(
511 content::NOTIFICATION_LOAD_STOP, 512 content::NOTIFICATION_LOAD_STOP,
512 content::Source<content::NavigationController>( 513 content::Source<NavigationController>(
513 &current_browser_->GetSelectedWebContents()->GetController())); 514 &current_browser_->GetSelectedWebContents()->GetController()));
514 NotifyGeoposition(fresh_position); 515 NotifyGeoposition(fresh_position);
515 observer.Wait(); 516 observer.Wait();
516 CheckGeoposition(fresh_position); 517 CheckGeoposition(fresh_position);
517 518
518 // Disable navigation for this frame. 519 // Disable navigation for this frame.
519 CheckStringValueFromJavascript("0", "geoSetMaxNavigateCount(0)"); 520 CheckStringValueFromJavascript("0", "geoSetMaxNavigateCount(0)");
520 521
521 // Now go ahead an authorize the second frame. 522 // Now go ahead an authorize the second frame.
522 iframe_xpath_ = L"//iframe[@id='iframe_1']"; 523 iframe_xpath_ = L"//iframe[@id='iframe_1']";
(...skipping 16 matching lines...) Expand all
539 SetInfobarResponse(iframe_urls_[0], true); 540 SetInfobarResponse(iframe_urls_[0], true);
540 CheckGeoposition(MockLocationProvider::instance_->position_); 541 CheckGeoposition(MockLocationProvider::instance_->position_);
541 542
542 // Refresh geoposition, but let's not yet create the watch on the second frame 543 // Refresh geoposition, but let's not yet create the watch on the second frame
543 // so that it'll fetch from cache. 544 // so that it'll fetch from cache.
544 // MockLocationProvider must have been created. 545 // MockLocationProvider must have been created.
545 ASSERT_TRUE(MockLocationProvider::instance_); 546 ASSERT_TRUE(MockLocationProvider::instance_);
546 Geoposition cached_position = GeopositionFromLatLong(5.67, 8.09); 547 Geoposition cached_position = GeopositionFromLatLong(5.67, 8.09);
547 ui_test_utils::WindowedNotificationObserver observer( 548 ui_test_utils::WindowedNotificationObserver observer(
548 content::NOTIFICATION_LOAD_STOP, 549 content::NOTIFICATION_LOAD_STOP,
549 content::Source<content::NavigationController>( 550 content::Source<NavigationController>(
550 &current_browser_->GetSelectedWebContents()->GetController())); 551 &current_browser_->GetSelectedWebContents()->GetController()));
551 NotifyGeoposition(cached_position); 552 NotifyGeoposition(cached_position);
552 observer.Wait(); 553 observer.Wait();
553 CheckGeoposition(cached_position); 554 CheckGeoposition(cached_position);
554 555
555 // Disable navigation for this frame. 556 // Disable navigation for this frame.
556 CheckStringValueFromJavascript("0", "geoSetMaxNavigateCount(0)"); 557 CheckStringValueFromJavascript("0", "geoSetMaxNavigateCount(0)");
557 558
558 // Now go ahead an authorize the second frame. 559 // Now go ahead an authorize the second frame.
559 iframe_xpath_ = L"//iframe[@id='iframe_1']"; 560 iframe_xpath_ = L"//iframe[@id='iframe_1']";
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
647 648
648 // Send a position which both geolocation watches will receive. 649 // Send a position which both geolocation watches will receive.
649 AddGeolocationWatch(true); 650 AddGeolocationWatch(true);
650 SetInfobarResponse(current_url_, true); 651 SetInfobarResponse(current_url_, true);
651 CheckGeoposition(MockLocationProvider::instance_->position_); 652 CheckGeoposition(MockLocationProvider::instance_->position_);
652 653
653 // The second watch will now have cancelled. Ensure an update still makes 654 // The second watch will now have cancelled. Ensure an update still makes
654 // its way through to the first watcher. 655 // its way through to the first watcher.
655 ui_test_utils::WindowedNotificationObserver observer( 656 ui_test_utils::WindowedNotificationObserver observer(
656 content::NOTIFICATION_LOAD_STOP, 657 content::NOTIFICATION_LOAD_STOP,
657 content::Source<content::NavigationController>( 658 content::Source<NavigationController>(
658 &current_browser_->GetSelectedWebContents()->GetController())); 659 &current_browser_->GetSelectedWebContents()->GetController()));
659 NotifyGeoposition(final_position); 660 NotifyGeoposition(final_position);
660 observer.Wait(); 661 observer.Wait();
661 CheckGeoposition(final_position); 662 CheckGeoposition(final_position);
662 } 663 }
663 664
664 // Hangs flakily, http://crbug.com/70588. 665 // Hangs flakily, http://crbug.com/70588.
665 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, DISABLED_TabDestroyed) { 666 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, DISABLED_TabDestroyed) {
666 html_for_tests_ = "files/geolocation/tab_destroyed.html"; 667 html_for_tests_ = "files/geolocation/tab_destroyed.html";
667 ASSERT_TRUE(Initialize(INITIALIZATION_IFRAMES)); 668 ASSERT_TRUE(Initialize(INITIALIZATION_IFRAMES));
(...skipping 12 matching lines...) Expand all
680 "window.domAutomationController.setAutomationId(0);" 681 "window.domAutomationController.setAutomationId(0);"
681 "window.domAutomationController.send(window.close());"; 682 "window.domAutomationController.send(window.close());";
682 bool result = 683 bool result =
683 ui_test_utils::ExecuteJavaScript( 684 ui_test_utils::ExecuteJavaScript(
684 current_browser_->GetSelectedWebContents()->GetRenderViewHost(), 685 current_browser_->GetSelectedWebContents()->GetRenderViewHost(),
685 L"", UTF8ToWide(script)); 686 L"", UTF8ToWide(script));
686 EXPECT_EQ(result, true); 687 EXPECT_EQ(result, true);
687 } 688 }
688 689
689 } // namespace 690 } // namespace
OLDNEW
« no previous file with comments | « chrome/browser/favicon/favicon_tab_helper.cc ('k') | chrome/browser/google/google_url_tracker.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698