OLD | NEW |
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 "base/compiler_specific.h" | 5 #include "base/compiler_specific.h" |
| 6 #include "base/stringprintf.h" |
6 #include "base/string_number_conversions.h" | 7 #include "base/string_number_conversions.h" |
7 #include "base/string_util.h" | |
8 #include "base/utf_string_conversions.h" | 8 #include "base/utf_string_conversions.h" |
9 #include "chrome/browser/content_settings/tab_specific_content_settings.h" | 9 #include "chrome/browser/content_settings/tab_specific_content_settings.h" |
10 #include "chrome/browser/dom_operation_notification_details.h" | 10 #include "chrome/browser/dom_operation_notification_details.h" |
11 #include "chrome/browser/geolocation/geolocation_content_settings_map.h" | 11 #include "chrome/browser/geolocation/geolocation_content_settings_map.h" |
12 #include "chrome/browser/geolocation/geolocation_settings_state.h" | 12 #include "chrome/browser/geolocation/geolocation_settings_state.h" |
13 #include "chrome/browser/profiles/profile.h" | 13 #include "chrome/browser/profiles/profile.h" |
14 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" | 14 #include "chrome/browser/tab_contents/confirm_infobar_delegate.h" |
15 #include "chrome/browser/ui/browser.h" | 15 #include "chrome/browser/ui/browser.h" |
16 #include "chrome/browser/ui/browser_list.h" | 16 #include "chrome/browser/ui/browser_list.h" |
17 #include "chrome/common/chrome_paths.h" | 17 #include "chrome/common/chrome_paths.h" |
(...skipping 21 matching lines...) Expand all Loading... |
39 public: | 39 public: |
40 IFrameLoader(Browser* browser, int iframe_id, const GURL& url) | 40 IFrameLoader(Browser* browser, int iframe_id, const GURL& url) |
41 : navigation_completed_(false), | 41 : navigation_completed_(false), |
42 javascript_completed_(false) { | 42 javascript_completed_(false) { |
43 NavigationController* controller = | 43 NavigationController* controller = |
44 &browser->GetSelectedTabContents()->controller(); | 44 &browser->GetSelectedTabContents()->controller(); |
45 registrar_.Add(this, NotificationType::LOAD_STOP, | 45 registrar_.Add(this, NotificationType::LOAD_STOP, |
46 Source<NavigationController>(controller)); | 46 Source<NavigationController>(controller)); |
47 registrar_.Add(this, NotificationType::DOM_OPERATION_RESPONSE, | 47 registrar_.Add(this, NotificationType::DOM_OPERATION_RESPONSE, |
48 NotificationService::AllSources()); | 48 NotificationService::AllSources()); |
49 std::string script = StringPrintf( | 49 std::string script = base::StringPrintf( |
50 "window.domAutomationController.setAutomationId(0);" | 50 "window.domAutomationController.setAutomationId(0);" |
51 "window.domAutomationController.send(addIFrame(%d, \"%s\"));", | 51 "window.domAutomationController.send(addIFrame(%d, \"%s\"));", |
52 iframe_id, | 52 iframe_id, |
53 url.spec().c_str()); | 53 url.spec().c_str()); |
54 browser->GetSelectedTabContents()->render_view_host()-> | 54 browser->GetSelectedTabContents()->render_view_host()-> |
55 ExecuteJavascriptInWebFrame(string16(), UTF8ToUTF16(script)); | 55 ExecuteJavascriptInWebFrame(string16(), UTF8ToUTF16(script)); |
56 ui_test_utils::RunMessageLoop(); | 56 ui_test_utils::RunMessageLoop(); |
57 | 57 |
58 EXPECT_EQ(StringPrintf("\"%d\"", iframe_id), javascript_response_); | 58 EXPECT_EQ(base::StringPrintf("\"%d\"", iframe_id), javascript_response_); |
59 registrar_.RemoveAll(); | 59 registrar_.RemoveAll(); |
60 // Now that we loaded the iframe, let's fetch its src. | 60 // Now that we loaded the iframe, let's fetch its src. |
61 script = StringPrintf( | 61 script = base::StringPrintf( |
62 "window.domAutomationController.send(getIFrameSrc(%d))", iframe_id); | 62 "window.domAutomationController.send(getIFrameSrc(%d))", iframe_id); |
63 std::string iframe_src; | 63 std::string iframe_src; |
64 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 64 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
65 browser->GetSelectedTabContents()->render_view_host(), | 65 browser->GetSelectedTabContents()->render_view_host(), |
66 L"", UTF8ToWide(script), &iframe_src)); | 66 L"", UTF8ToWide(script), &iframe_src)); |
67 iframe_url_ = GURL(iframe_src); | 67 iframe_url_ = GURL(iframe_src); |
68 } | 68 } |
69 | 69 |
70 GURL iframe_url() const { return iframe_url_; } | 70 GURL iframe_url() const { return iframe_url_; } |
71 | 71 |
(...skipping 263 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
335 LOG(WARNING) << "will block for navigation"; | 335 LOG(WARNING) << "will block for navigation"; |
336 NavigationController* controller = | 336 NavigationController* controller = |
337 ¤t_browser_->GetSelectedTabContents()->controller(); | 337 ¤t_browser_->GetSelectedTabContents()->controller(); |
338 ui_test_utils::WaitForNavigation(controller); | 338 ui_test_utils::WaitForNavigation(controller); |
339 LOG(WARNING) << "navigated"; | 339 LOG(WARNING) << "navigated"; |
340 } | 340 } |
341 | 341 |
342 void CheckStringValueFromJavascriptForTab( | 342 void CheckStringValueFromJavascriptForTab( |
343 const std::string& expected, const std::string& function, | 343 const std::string& expected, const std::string& function, |
344 TabContents* tab_contents) { | 344 TabContents* tab_contents) { |
345 std::string script = StringPrintf( | 345 std::string script = base::StringPrintf( |
346 "window.domAutomationController.send(%s)", function.c_str()); | 346 "window.domAutomationController.send(%s)", function.c_str()); |
347 std::string result; | 347 std::string result; |
348 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 348 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
349 tab_contents->render_view_host(), | 349 tab_contents->render_view_host(), |
350 iframe_xpath_, UTF8ToWide(script), &result)); | 350 iframe_xpath_, UTF8ToWide(script), &result)); |
351 EXPECT_EQ(expected, result); | 351 EXPECT_EQ(expected, result); |
352 } | 352 } |
353 | 353 |
354 void CheckStringValueFromJavascript( | 354 void CheckStringValueFromJavascript( |
355 const std::string& expected, const std::string& function) { | 355 const std::string& expected, const std::string& function) { |
(...skipping 239 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
595 AddGeolocationWatch(true); | 595 AddGeolocationWatch(true); |
596 SetInfobarResponse(iframe_urls_[1], true); | 596 SetInfobarResponse(iframe_urls_[1], true); |
597 CheckGeoposition(MockLocationProvider::instance_->position_); | 597 CheckGeoposition(MockLocationProvider::instance_->position_); |
598 } | 598 } |
599 | 599 |
600 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, TwoWatchesInOneFrame) { | 600 IN_PROC_BROWSER_TEST_F(GeolocationBrowserTest, TwoWatchesInOneFrame) { |
601 html_for_tests_ = "files/geolocation/two_watches.html"; | 601 html_for_tests_ = "files/geolocation/two_watches.html"; |
602 ASSERT_TRUE(Initialize(INITIALIZATION_NONE)); | 602 ASSERT_TRUE(Initialize(INITIALIZATION_NONE)); |
603 // First, set the JavaScript to navigate when it receives |final_position|. | 603 // First, set the JavaScript to navigate when it receives |final_position|. |
604 const Geoposition final_position = GeopositionFromLatLong(3.17, 4.23); | 604 const Geoposition final_position = GeopositionFromLatLong(3.17, 4.23); |
605 std::string script = StringPrintf( | 605 std::string script = base::StringPrintf( |
606 "window.domAutomationController.send(geoSetFinalPosition(%f, %f))", | 606 "window.domAutomationController.send(geoSetFinalPosition(%f, %f))", |
607 final_position.latitude, final_position.longitude); | 607 final_position.latitude, final_position.longitude); |
608 std::string js_result; | 608 std::string js_result; |
609 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( | 609 EXPECT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractString( |
610 current_browser_->GetSelectedTabContents()->render_view_host(), | 610 current_browser_->GetSelectedTabContents()->render_view_host(), |
611 L"", UTF8ToWide(script), &js_result)); | 611 L"", UTF8ToWide(script), &js_result)); |
612 EXPECT_EQ(js_result, "ok"); | 612 EXPECT_EQ(js_result, "ok"); |
613 | 613 |
614 // Send a position which both geolocation watches will receive. | 614 // Send a position which both geolocation watches will receive. |
615 AddGeolocationWatch(true); | 615 AddGeolocationWatch(true); |
(...skipping 26 matching lines...) Expand all Loading... |
642 "window.domAutomationController.setAutomationId(0);" | 642 "window.domAutomationController.setAutomationId(0);" |
643 "window.domAutomationController.send(window.close());"; | 643 "window.domAutomationController.send(window.close());"; |
644 bool result = | 644 bool result = |
645 ui_test_utils::ExecuteJavaScript( | 645 ui_test_utils::ExecuteJavaScript( |
646 current_browser_->GetSelectedTabContents()->render_view_host(), | 646 current_browser_->GetSelectedTabContents()->render_view_host(), |
647 L"", UTF8ToWide(script)); | 647 L"", UTF8ToWide(script)); |
648 EXPECT_EQ(result, true); | 648 EXPECT_EQ(result, true); |
649 } | 649 } |
650 | 650 |
651 } // namespace | 651 } // namespace |
OLD | NEW |