| 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 |