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 <deque> | 5 #include <deque> |
6 | 6 |
7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/path_service.h" | 8 #include "base/path_service.h" |
9 #include "base/string_util.h" | 9 #include "base/string_util.h" |
10 #include "base/stringprintf.h" | 10 #include "base/stringprintf.h" |
(...skipping 10 matching lines...) Expand all Loading... |
21 #include "chrome/browser/prerender/prerender_link_manager_factory.h" | 21 #include "chrome/browser/prerender/prerender_link_manager_factory.h" |
22 #include "chrome/browser/prerender/prerender_manager.h" | 22 #include "chrome/browser/prerender/prerender_manager.h" |
23 #include "chrome/browser/prerender/prerender_manager_factory.h" | 23 #include "chrome/browser/prerender/prerender_manager_factory.h" |
24 #include "chrome/browser/profiles/profile.h" | 24 #include "chrome/browser/profiles/profile.h" |
25 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 25 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
26 #include "chrome/browser/task_manager/task_manager.h" | 26 #include "chrome/browser/task_manager/task_manager.h" |
27 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" | 27 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" |
28 #include "chrome/browser/ui/browser.h" | 28 #include "chrome/browser/ui/browser.h" |
29 #include "chrome/browser/ui/browser_finder.h" | 29 #include "chrome/browser/ui/browser_finder.h" |
30 #include "chrome/browser/ui/browser_window.h" | 30 #include "chrome/browser/ui/browser_window.h" |
31 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 31 #include "chrome/browser/ui/tab_contents/tab_contents.h" |
32 #include "chrome/common/chrome_notification_types.h" | 32 #include "chrome/common/chrome_notification_types.h" |
33 #include "chrome/common/chrome_paths.h" | 33 #include "chrome/common/chrome_paths.h" |
34 #include "chrome/common/chrome_switches.h" | 34 #include "chrome/common/chrome_switches.h" |
35 #include "chrome/common/pref_names.h" | 35 #include "chrome/common/pref_names.h" |
36 #include "chrome/test/base/in_process_browser_test.h" | 36 #include "chrome/test/base/in_process_browser_test.h" |
37 #include "chrome/test/base/ui_test_utils.h" | 37 #include "chrome/test/base/ui_test_utils.h" |
38 #include "content/public/browser/devtools_agent_host_registry.h" | 38 #include "content/public/browser/devtools_agent_host_registry.h" |
39 #include "content/public/browser/devtools_client_host.h" | 39 #include "content/public/browser/devtools_client_host.h" |
40 #include "content/public/browser/devtools_manager.h" | 40 #include "content/public/browser/devtools_manager.h" |
41 #include "content/public/browser/notification_service.h" | 41 #include "content/public/browser/notification_service.h" |
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
634 | 634 |
635 void RemoveLinkElementsAndNavigate() const { | 635 void RemoveLinkElementsAndNavigate() const { |
636 OpenDestURLWithJSImpl("RemoveLinkElementsAndNavigate()"); | 636 OpenDestURLWithJSImpl("RemoveLinkElementsAndNavigate()"); |
637 } | 637 } |
638 | 638 |
639 void ClickToNextPageAfterPrerender() { | 639 void ClickToNextPageAfterPrerender() { |
640 ui_test_utils::WindowedNotificationObserver new_page_observer( | 640 ui_test_utils::WindowedNotificationObserver new_page_observer( |
641 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 641 content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
642 content::NotificationService::AllSources()); | 642 content::NotificationService::AllSources()); |
643 RenderViewHost* render_view_host = | 643 RenderViewHost* render_view_host = |
644 current_browser()->GetSelectedWebContents()->GetRenderViewHost(); | 644 current_browser()->GetActiveWebContents()->GetRenderViewHost(); |
645 render_view_host->ExecuteJavascriptInWebFrame( | 645 render_view_host->ExecuteJavascriptInWebFrame( |
646 string16(), | 646 string16(), |
647 ASCIIToUTF16("ClickOpenLink()")); | 647 ASCIIToUTF16("ClickOpenLink()")); |
648 new_page_observer.Wait(); | 648 new_page_observer.Wait(); |
649 } | 649 } |
650 | 650 |
651 void NavigateToNextPageAfterPrerender() const { | 651 void NavigateToNextPageAfterPrerender() const { |
652 ui_test_utils::NavigateToURL( | 652 ui_test_utils::NavigateToURL( |
653 current_browser(), | 653 current_browser(), |
654 test_server()->GetURL("files/prerender/prerender_page.html")); | 654 test_server()->GetURL("files/prerender/prerender_page.html")); |
(...skipping 11 matching lines...) Expand all Loading... |
666 // Called after the prerendered page has been navigated to and then away from. | 666 // Called after the prerendered page has been navigated to and then away from. |
667 // Navigates back through the history to the prerendered page. | 667 // Navigates back through the history to the prerendered page. |
668 void GoBackToPrerender() { | 668 void GoBackToPrerender() { |
669 ui_test_utils::WindowedNotificationObserver back_nav_observer( | 669 ui_test_utils::WindowedNotificationObserver back_nav_observer( |
670 content::NOTIFICATION_NAV_ENTRY_COMMITTED, | 670 content::NOTIFICATION_NAV_ENTRY_COMMITTED, |
671 content::NotificationService::AllSources()); | 671 content::NotificationService::AllSources()); |
672 current_browser()->GoBack(CURRENT_TAB); | 672 current_browser()->GoBack(CURRENT_TAB); |
673 back_nav_observer.Wait(); | 673 back_nav_observer.Wait(); |
674 bool original_prerender_page = false; | 674 bool original_prerender_page = false; |
675 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 675 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
676 current_browser()->GetSelectedWebContents()->GetRenderViewHost(), L"", | 676 current_browser()->GetActiveWebContents()->GetRenderViewHost(), L"", |
677 L"window.domAutomationController.send(IsOriginalPrerenderPage())", | 677 L"window.domAutomationController.send(IsOriginalPrerenderPage())", |
678 &original_prerender_page)); | 678 &original_prerender_page)); |
679 EXPECT_TRUE(original_prerender_page); | 679 EXPECT_TRUE(original_prerender_page); |
680 } | 680 } |
681 | 681 |
682 // Goes back to the page that was active before the prerender was swapped | 682 // Goes back to the page that was active before the prerender was swapped |
683 // in. This must be called when the prerendered page is the current page | 683 // in. This must be called when the prerendered page is the current page |
684 // in the active tab. | 684 // in the active tab. |
685 void GoBackToPageBeforePrerender() { | 685 void GoBackToPageBeforePrerender() { |
686 WebContents* tab = current_browser()->GetSelectedWebContents(); | 686 WebContents* tab = current_browser()->GetActiveWebContents(); |
687 ASSERT_TRUE(tab); | 687 ASSERT_TRUE(tab); |
688 EXPECT_FALSE(tab->IsLoading()); | 688 EXPECT_FALSE(tab->IsLoading()); |
689 ui_test_utils::WindowedNotificationObserver back_nav_observer( | 689 ui_test_utils::WindowedNotificationObserver back_nav_observer( |
690 content::NOTIFICATION_LOAD_STOP, | 690 content::NOTIFICATION_LOAD_STOP, |
691 content::Source<NavigationController>(&tab->GetController())); | 691 content::Source<NavigationController>(&tab->GetController())); |
692 current_browser()->GoBack(CURRENT_TAB); | 692 current_browser()->GoBack(CURRENT_TAB); |
693 back_nav_observer.Wait(); | 693 back_nav_observer.Wait(); |
694 bool js_result; | 694 bool js_result; |
695 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 695 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
696 tab->GetRenderViewHost(), L"", | 696 tab->GetRenderViewHost(), L"", |
(...skipping 27 matching lines...) Expand all Loading... |
724 | 724 |
725 void DisableJavascriptCalls() { | 725 void DisableJavascriptCalls() { |
726 call_javascript_ = false; | 726 call_javascript_ = false; |
727 } | 727 } |
728 | 728 |
729 TaskManagerModel* GetModel() const { | 729 TaskManagerModel* GetModel() const { |
730 return TaskManager::GetInstance()->model(); | 730 return TaskManager::GetInstance()->model(); |
731 } | 731 } |
732 | 732 |
733 PrerenderManager* GetPrerenderManager() const { | 733 PrerenderManager* GetPrerenderManager() const { |
734 Profile* profile = | 734 Profile* profile = current_browser()->GetActiveTabContents()->profile(); |
735 current_browser()->GetSelectedTabContentsWrapper()->profile(); | |
736 PrerenderManager* prerender_manager = | 735 PrerenderManager* prerender_manager = |
737 PrerenderManagerFactory::GetForProfile(profile); | 736 PrerenderManagerFactory::GetForProfile(profile); |
738 return prerender_manager; | 737 return prerender_manager; |
739 } | 738 } |
740 | 739 |
741 const PrerenderLinkManager* GetPrerenderLinkManager() const { | 740 const PrerenderLinkManager* GetPrerenderLinkManager() const { |
742 Profile* profile = | 741 Profile* profile = current_browser()->GetActiveTabContents()->profile(); |
743 current_browser()->GetSelectedTabContentsWrapper()->profile(); | |
744 PrerenderLinkManager* prerender_link_manager = | 742 PrerenderLinkManager* prerender_link_manager = |
745 PrerenderLinkManagerFactory::GetForProfile(profile); | 743 PrerenderLinkManagerFactory::GetForProfile(profile); |
746 return prerender_link_manager; | 744 return prerender_link_manager; |
747 } | 745 } |
748 | 746 |
749 bool IsEmptyPrerenderLinkManager() const { | 747 bool IsEmptyPrerenderLinkManager() const { |
750 return GetPrerenderLinkManager()->IsEmpty(); | 748 return GetPrerenderLinkManager()->IsEmpty(); |
751 } | 749 } |
752 | 750 |
753 // Returns length of |prerender_manager_|'s history, or -1 on failure. | 751 // Returns length of |prerender_manager_|'s history, or -1 on failure. |
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
946 | 944 |
947 // Opens the prerendered page using javascript functions in the | 945 // Opens the prerendered page using javascript functions in the |
948 // loader page. |javascript_function_name| should be a 0 argument function | 946 // loader page. |javascript_function_name| should be a 0 argument function |
949 // which is invoked. | 947 // which is invoked. |
950 void OpenDestURLWithJSImpl(const std::string& javascript_function_name) | 948 void OpenDestURLWithJSImpl(const std::string& javascript_function_name) |
951 const { | 949 const { |
952 TestPrerenderContents* prerender_contents = GetPrerenderContents(); | 950 TestPrerenderContents* prerender_contents = GetPrerenderContents(); |
953 ASSERT_TRUE(prerender_contents != NULL); | 951 ASSERT_TRUE(prerender_contents != NULL); |
954 | 952 |
955 RenderViewHost* render_view_host = | 953 RenderViewHost* render_view_host = |
956 current_browser()->GetSelectedWebContents()->GetRenderViewHost(); | 954 current_browser()->GetActiveWebContents()->GetRenderViewHost(); |
957 render_view_host->ExecuteJavascriptInWebFrame( | 955 render_view_host->ExecuteJavascriptInWebFrame( |
958 string16(), | 956 string16(), |
959 ASCIIToUTF16(javascript_function_name)); | 957 ASCIIToUTF16(javascript_function_name)); |
960 | 958 |
961 // Run message loop until the prerender contents is destroyed. | 959 // Run message loop until the prerender contents is destroyed. |
962 ui_test_utils::RunMessageLoop(); | 960 ui_test_utils::RunMessageLoop(); |
963 } | 961 } |
964 | 962 |
965 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; | 963 WaitForLoadPrerenderContentsFactory* prerender_contents_factory_; |
966 #if defined(ENABLE_SAFE_BROWSING) | 964 #if defined(ENABLE_SAFE_BROWSING) |
(...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1111 NavigateToDestURL(); | 1109 NavigateToDestURL(); |
1112 | 1110 |
1113 | 1111 |
1114 // Run this check again. When we try to load aa ppapi plugin, the | 1112 // Run this check again. When we try to load aa ppapi plugin, the |
1115 // "loadstart" event is asynchronously posted to a message loop. | 1113 // "loadstart" event is asynchronously posted to a message loop. |
1116 // It's possible that earlier call could have been run before the | 1114 // It's possible that earlier call could have been run before the |
1117 // the "loadstart" event was posted. | 1115 // the "loadstart" event was posted. |
1118 // TODO(mmenke): While this should reliably fail on regressions, the | 1116 // TODO(mmenke): While this should reliably fail on regressions, the |
1119 // reliability depends on the specifics of ppapi plugin | 1117 // reliability depends on the specifics of ppapi plugin |
1120 // loading. It would be great if we could avoid that. | 1118 // loading. It would be great if we could avoid that. |
1121 WebContents* web_contents = browser()->GetSelectedWebContents(); | 1119 WebContents* web_contents = browser()->GetActiveWebContents(); |
1122 bool display_test_result = false; | 1120 bool display_test_result = false; |
1123 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 1121 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
1124 web_contents->GetRenderViewHost(), L"", | 1122 web_contents->GetRenderViewHost(), L"", |
1125 L"window.domAutomationController.send(DidDisplayPass())", | 1123 L"window.domAutomationController.send(DidDisplayPass())", |
1126 &display_test_result)); | 1124 &display_test_result)); |
1127 EXPECT_TRUE(display_test_result); | 1125 EXPECT_TRUE(display_test_result); |
1128 } | 1126 } |
1129 | 1127 |
1130 // Checks that plugins in an iframe are not loaded while a page is | 1128 // Checks that plugins in an iframe are not loaded while a page is |
1131 // being preloaded, but are loaded when the page is displayed. | 1129 // being preloaded, but are loaded when the page is displayed. |
(...skipping 890 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2022 #if defined(OS_WIN) | 2020 #if defined(OS_WIN) |
2023 #define MAYBE_PrerenderUnload FLAKY_PrerenderUnload | 2021 #define MAYBE_PrerenderUnload FLAKY_PrerenderUnload |
2024 #else | 2022 #else |
2025 #define MAYBE_PrerenderUnload PrerenderUnload | 2023 #define MAYBE_PrerenderUnload PrerenderUnload |
2026 #endif | 2024 #endif |
2027 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MAYBE_PrerenderUnload) { | 2025 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, MAYBE_PrerenderUnload) { |
2028 set_loader_path("files/prerender/prerender_loader_with_unload.html"); | 2026 set_loader_path("files/prerender/prerender_loader_with_unload.html"); |
2029 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 2027 PrerenderTestURL("files/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
2030 string16 expected_title = ASCIIToUTF16("Unloaded"); | 2028 string16 expected_title = ASCIIToUTF16("Unloaded"); |
2031 ui_test_utils::TitleWatcher title_watcher( | 2029 ui_test_utils::TitleWatcher title_watcher( |
2032 current_browser()->GetSelectedWebContents(), expected_title); | 2030 current_browser()->GetActiveWebContents(), expected_title); |
2033 NavigateToDestURL(); | 2031 NavigateToDestURL(); |
2034 EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); | 2032 EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle()); |
2035 } | 2033 } |
2036 | 2034 |
2037 // Checks that when the history is cleared, prerendering is cancelled and | 2035 // Checks that when the history is cleared, prerendering is cancelled and |
2038 // prerendering history is cleared. | 2036 // prerendering history is cleared. |
2039 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClearHistory) { | 2037 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClearHistory) { |
2040 PrerenderTestURL("files/prerender/prerender_page.html", | 2038 PrerenderTestURL("files/prerender/prerender_page.html", |
2041 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED, | 2039 FINAL_STATUS_CACHE_OR_HISTORY_CLEARED, |
2042 1); | 2040 1); |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2149 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) { | 2147 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderClickNewBackgroundTab) { |
2150 PrerenderTestURL("files/prerender/prerender_page_with_link.html", | 2148 PrerenderTestURL("files/prerender/prerender_page_with_link.html", |
2151 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH, | 2149 FINAL_STATUS_SESSION_STORAGE_NAMESPACE_MISMATCH, |
2152 1); | 2150 1); |
2153 OpenDestURLViaClickNewBackgroundTab(); | 2151 OpenDestURLViaClickNewBackgroundTab(); |
2154 } | 2152 } |
2155 | 2153 |
2156 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, | 2154 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, |
2157 NavigateToPrerenderedPageWhenDevToolsAttached) { | 2155 NavigateToPrerenderedPageWhenDevToolsAttached) { |
2158 DisableJavascriptCalls(); | 2156 DisableJavascriptCalls(); |
2159 WebContents* web_contents = current_browser()->GetSelectedWebContents(); | 2157 WebContents* web_contents = current_browser()->GetActiveWebContents(); |
2160 DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( | 2158 DevToolsAgentHost* agent = DevToolsAgentHostRegistry::GetDevToolsAgentHost( |
2161 web_contents->GetRenderViewHost()); | 2159 web_contents->GetRenderViewHost()); |
2162 DevToolsManager* manager = DevToolsManager::GetInstance(); | 2160 DevToolsManager* manager = DevToolsManager::GetInstance(); |
2163 FakeDevToolsClientHost client_host; | 2161 FakeDevToolsClientHost client_host; |
2164 manager->RegisterDevToolsClientHostFor(agent, &client_host); | 2162 manager->RegisterDevToolsClientHostFor(agent, &client_host); |
2165 const char* url = "files/prerender/prerender_page.html"; | 2163 const char* url = "files/prerender/prerender_page.html"; |
2166 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); | 2164 PrerenderTestURL(url, FINAL_STATUS_DEVTOOLS_ATTACHED, 1); |
2167 NavigateToURL(url); | 2165 NavigateToURL(url); |
2168 manager->ClientHostClosing(&client_host); | 2166 manager->ClientHostClosing(&client_host); |
2169 } | 2167 } |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2217 // Check that NaCl plugins work when enabled, with prerendering. | 2215 // Check that NaCl plugins work when enabled, with prerendering. |
2218 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTestWithNaCl, | 2216 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTestWithNaCl, |
2219 PrerenderNaClPluginEnabled) { | 2217 PrerenderNaClPluginEnabled) { |
2220 PrerenderTestURL("files/prerender/prerender_plugin_nacl_enabled.html", | 2218 PrerenderTestURL("files/prerender/prerender_plugin_nacl_enabled.html", |
2221 FINAL_STATUS_USED, | 2219 FINAL_STATUS_USED, |
2222 1); | 2220 1); |
2223 NavigateToDestURL(); | 2221 NavigateToDestURL(); |
2224 | 2222 |
2225 // To avoid any chance of a race, we have to let the script send its response | 2223 // To avoid any chance of a race, we have to let the script send its response |
2226 // asynchronously. | 2224 // asynchronously. |
2227 WebContents* web_contents = browser()->GetSelectedWebContents(); | 2225 WebContents* web_contents = browser()->GetActiveWebContents(); |
2228 bool display_test_result = false; | 2226 bool display_test_result = false; |
2229 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( | 2227 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( |
2230 web_contents->GetRenderViewHost(), L"", | 2228 web_contents->GetRenderViewHost(), L"", |
2231 L"DidDisplayReallyPass()", | 2229 L"DidDisplayReallyPass()", |
2232 &display_test_result)); | 2230 &display_test_result)); |
2233 ASSERT_TRUE(display_test_result); | 2231 ASSERT_TRUE(display_test_result); |
2234 } | 2232 } |
2235 | 2233 |
2236 // Checks that the referrer policy is used when prerendering. | 2234 // Checks that the referrer policy is used when prerendering. |
2237 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReferrerPolicy) { | 2235 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderReferrerPolicy) { |
2238 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html"); | 2236 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html"); |
2239 PrerenderTestURL("files/prerender/prerender_referrer_policy.html", | 2237 PrerenderTestURL("files/prerender/prerender_referrer_policy.html", |
2240 FINAL_STATUS_USED, | 2238 FINAL_STATUS_USED, |
2241 1); | 2239 1); |
2242 NavigateToDestURL(); | 2240 NavigateToDestURL(); |
2243 } | 2241 } |
2244 | 2242 |
2245 // Checks that the referrer policy is used when prerendering on HTTPS. | 2243 // Checks that the referrer policy is used when prerendering on HTTPS. |
2246 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLReferrerPolicy) { | 2244 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLReferrerPolicy) { |
2247 set_use_https_src(true); | 2245 set_use_https_src(true); |
2248 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html"); | 2246 set_loader_path("files/prerender/prerender_loader_with_referrer_policy.html"); |
2249 PrerenderTestURL("files/prerender/prerender_referrer_policy.html", | 2247 PrerenderTestURL("files/prerender/prerender_referrer_policy.html", |
2250 FINAL_STATUS_USED, | 2248 FINAL_STATUS_USED, |
2251 1); | 2249 1); |
2252 NavigateToDestURL(); | 2250 NavigateToDestURL(); |
2253 } | 2251 } |
2254 | 2252 |
2255 } // namespace prerender | 2253 } // namespace prerender |
OLD | NEW |