Chromium Code Reviews| 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 <stddef.h> | 5 #include <stddef.h> |
| 6 #include <deque> | 6 #include <deque> |
| 7 #include <utility> | 7 #include <utility> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 46 #include "chrome/browser/prerender/prerender_link_manager_factory.h" | 46 #include "chrome/browser/prerender/prerender_link_manager_factory.h" |
| 47 #include "chrome/browser/prerender/prerender_manager.h" | 47 #include "chrome/browser/prerender/prerender_manager.h" |
| 48 #include "chrome/browser/prerender/prerender_manager_factory.h" | 48 #include "chrome/browser/prerender/prerender_manager_factory.h" |
| 49 #include "chrome/browser/profiles/profile.h" | 49 #include "chrome/browser/profiles/profile.h" |
| 50 #include "chrome/browser/profiles/profile_io_data.h" | 50 #include "chrome/browser/profiles/profile_io_data.h" |
| 51 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h" | 51 #include "chrome/browser/renderer_host/chrome_resource_dispatcher_host_delegate. h" |
| 52 #include "chrome/browser/safe_browsing/local_database_manager.h" | 52 #include "chrome/browser/safe_browsing/local_database_manager.h" |
| 53 #include "chrome/browser/safe_browsing/safe_browsing_service.h" | 53 #include "chrome/browser/safe_browsing/safe_browsing_service.h" |
| 54 #include "chrome/browser/task_management/providers/web_contents/web_contents_tag s_manager.h" | 54 #include "chrome/browser/task_management/providers/web_contents/web_contents_tag s_manager.h" |
| 55 #include "chrome/browser/task_management/task_management_browsertest_util.h" | 55 #include "chrome/browser/task_management/task_management_browsertest_util.h" |
| 56 #include "chrome/browser/task_manager/task_manager.h" | |
| 57 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" | |
| 58 #include "chrome/browser/ui/browser.h" | 56 #include "chrome/browser/ui/browser.h" |
| 59 #include "chrome/browser/ui/browser_commands.h" | 57 #include "chrome/browser/ui/browser_commands.h" |
| 60 #include "chrome/browser/ui/browser_finder.h" | 58 #include "chrome/browser/ui/browser_finder.h" |
| 61 #include "chrome/browser/ui/browser_window.h" | 59 #include "chrome/browser/ui/browser_window.h" |
| 62 #include "chrome/browser/ui/location_bar/location_bar.h" | 60 #include "chrome/browser/ui/location_bar/location_bar.h" |
| 63 #include "chrome/browser/ui/tabs/tab_strip_model.h" | 61 #include "chrome/browser/ui/tabs/tab_strip_model.h" |
| 64 #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" | 62 #include "chrome/browser/ui/tabs/tab_strip_model_observer.h" |
| 65 #include "chrome/common/chrome_paths.h" | 63 #include "chrome/common/chrome_paths.h" |
| 66 #include "chrome/common/chrome_switches.h" | 64 #include "chrome/common/chrome_switches.h" |
| 67 #include "chrome/common/pref_names.h" | 65 #include "chrome/common/pref_names.h" |
| (...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 114 #include "net/test/url_request/url_request_mock_http_job.h" | 112 #include "net/test/url_request/url_request_mock_http_job.h" |
| 115 #include "net/url_request/url_request_context.h" | 113 #include "net/url_request/url_request_context.h" |
| 116 #include "net/url_request/url_request_context_getter.h" | 114 #include "net/url_request/url_request_context_getter.h" |
| 117 #include "net/url_request/url_request_filter.h" | 115 #include "net/url_request/url_request_filter.h" |
| 118 #include "net/url_request/url_request_interceptor.h" | 116 #include "net/url_request/url_request_interceptor.h" |
| 119 #include "net/url_request/url_request_job.h" | 117 #include "net/url_request/url_request_job.h" |
| 120 #include "ppapi/shared_impl/ppapi_switches.h" | 118 #include "ppapi/shared_impl/ppapi_switches.h" |
| 121 #include "ui/base/l10n/l10n_util.h" | 119 #include "ui/base/l10n/l10n_util.h" |
| 122 #include "url/gurl.h" | 120 #include "url/gurl.h" |
| 123 | 121 |
| 122 #if defined(OS_MACOSX) | |
| 123 #include "chrome/browser/task_manager/task_manager.h" | |
| 124 #include "chrome/browser/task_manager/task_manager_browsertest_util.h" | |
| 125 #endif // defined(OS_MACOSX) | |
| 126 | |
| 124 using chrome_browser_net::NetworkPredictionOptions; | 127 using chrome_browser_net::NetworkPredictionOptions; |
| 125 using content::BrowserThread; | 128 using content::BrowserThread; |
| 126 using content::DevToolsAgentHost; | 129 using content::DevToolsAgentHost; |
| 127 using content::NavigationController; | 130 using content::NavigationController; |
| 128 using content::OpenURLParams; | 131 using content::OpenURLParams; |
| 129 using content::Referrer; | 132 using content::Referrer; |
| 130 using content::RenderFrameHost; | 133 using content::RenderFrameHost; |
| 131 using content::RenderViewHost; | 134 using content::RenderViewHost; |
| 132 using content::RenderWidgetHost; | 135 using content::RenderWidgetHost; |
| 133 using content::TestNavigationObserver; | 136 using content::TestNavigationObserver; |
| 134 using content::WebContents; | 137 using content::WebContents; |
| 135 using content::WebContentsObserver; | 138 using content::WebContentsObserver; |
| 136 using net::NetworkChangeNotifier; | 139 using net::NetworkChangeNotifier; |
| 137 using safe_browsing::LocalSafeBrowsingDatabaseManager; | 140 using safe_browsing::LocalSafeBrowsingDatabaseManager; |
| 138 using safe_browsing::SafeBrowsingService; | 141 using safe_browsing::SafeBrowsingService; |
| 139 using safe_browsing::SBThreatType; | 142 using safe_browsing::SBThreatType; |
| 143 | |
| 144 #if defined(OS_MACOSX) | |
| 140 using task_manager::browsertest_util::WaitForTaskManagerRows; | 145 using task_manager::browsertest_util::WaitForTaskManagerRows; |
| 146 #endif // defined(OS_MACOSX) | |
| 141 | 147 |
| 142 // Prerender tests work as follows: | 148 // Prerender tests work as follows: |
| 143 // | 149 // |
| 144 // A page with a prefetch link to the test page is loaded. Once prerendered, | 150 // A page with a prefetch link to the test page is loaded. Once prerendered, |
| 145 // its Javascript function DidPrerenderPass() is called, which returns true if | 151 // its Javascript function DidPrerenderPass() is called, which returns true if |
| 146 // the page behaves as expected when prerendered. | 152 // the page behaves as expected when prerendered. |
| 147 // | 153 // |
| 148 // The prerendered page is then displayed on a tab. The Javascript function | 154 // The prerendered page is then displayed on a tab. The Javascript function |
| 149 // DidDisplayPass() is called, and returns true if the page behaved as it | 155 // DidDisplayPass() is called, and returns true if the page behaved as it |
| 150 // should while being displayed. | 156 // should while being displayed. |
| (...skipping 1202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1353 } | 1359 } |
| 1354 | 1360 |
| 1355 void DisableJavascriptCalls() { | 1361 void DisableJavascriptCalls() { |
| 1356 call_javascript_ = false; | 1362 call_javascript_ = false; |
| 1357 } | 1363 } |
| 1358 | 1364 |
| 1359 void DisableLoadEventCheck() { | 1365 void DisableLoadEventCheck() { |
| 1360 check_load_events_ = false; | 1366 check_load_events_ = false; |
| 1361 } | 1367 } |
| 1362 | 1368 |
| 1369 #if defined(OS_MACOSX) | |
| 1363 TaskManagerModel* GetModel() const { | 1370 TaskManagerModel* GetModel() const { |
| 1364 return TaskManager::GetInstance()->model(); | 1371 return TaskManager::GetInstance()->model(); |
| 1365 } | 1372 } |
| 1373 #endif // defined(OS_MACOSX) | |
| 1366 | 1374 |
| 1367 PrerenderManager* GetPrerenderManager() const { | 1375 PrerenderManager* GetPrerenderManager() const { |
| 1368 PrerenderManager* prerender_manager = | 1376 PrerenderManager* prerender_manager = |
| 1369 PrerenderManagerFactory::GetForProfile(current_browser()->profile()); | 1377 PrerenderManagerFactory::GetForProfile(current_browser()->profile()); |
| 1370 return prerender_manager; | 1378 return prerender_manager; |
| 1371 } | 1379 } |
| 1372 | 1380 |
| 1373 const PrerenderLinkManager* GetPrerenderLinkManager() const { | 1381 const PrerenderLinkManager* GetPrerenderLinkManager() const { |
| 1374 PrerenderLinkManager* prerender_link_manager = | 1382 PrerenderLinkManager* prerender_link_manager = |
| 1375 PrerenderLinkManagerFactory::GetForProfile( | 1383 PrerenderLinkManagerFactory::GetForProfile( |
| (...skipping 1091 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 2467 EXPECT_FALSE(UrlIsInPrerenderManager(kHtmlFileB)); | 2475 EXPECT_FALSE(UrlIsInPrerenderManager(kHtmlFileB)); |
| 2468 | 2476 |
| 2469 // Cancel the prerender. | 2477 // Cancel the prerender. |
| 2470 GetPrerenderManager()->CancelAllPrerenders(); | 2478 GetPrerenderManager()->CancelAllPrerenders(); |
| 2471 prerender->WaitForStop(); | 2479 prerender->WaitForStop(); |
| 2472 | 2480 |
| 2473 // All prerenders are now gone. | 2481 // All prerenders are now gone. |
| 2474 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); | 2482 EXPECT_TRUE(IsEmptyPrerenderLinkManager()); |
| 2475 } | 2483 } |
| 2476 | 2484 |
| 2485 // Old task manager browser tests should only run on Mac. | |
| 2486 #if defined(OS_MACOSX) | |
| 2477 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, OpenTaskManagerBeforePrerender) { | 2487 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, OpenTaskManagerBeforePrerender) { |
|
tapted
2016/04/27 13:01:45
same here - these need to go to a separate file or
| |
| 2478 // This test is for the old implementation of the task manager. We must | |
| 2479 // explicitly disable the new one. | |
| 2480 task_manager::browsertest_util::EnableOldTaskManager(); | |
| 2481 | |
| 2482 const base::string16 any_prerender = MatchTaskManagerPrerender("*"); | 2488 const base::string16 any_prerender = MatchTaskManagerPrerender("*"); |
| 2483 const base::string16 any_tab = MatchTaskManagerTab("*"); | 2489 const base::string16 any_tab = MatchTaskManagerTab("*"); |
| 2484 const base::string16 original = MatchTaskManagerTab("Preloader"); | 2490 const base::string16 original = MatchTaskManagerTab("Preloader"); |
| 2485 const base::string16 prerender = MatchTaskManagerPrerender("Prerender Page"); | 2491 const base::string16 prerender = MatchTaskManagerPrerender("Prerender Page"); |
| 2486 const base::string16 final = MatchTaskManagerTab("Prerender Page"); | 2492 const base::string16 final = MatchTaskManagerTab("Prerender Page"); |
| 2487 | 2493 |
| 2488 // Show the task manager. This populates the model. | 2494 // Show the task manager. This populates the model. |
| 2489 chrome::OpenTaskManager(current_browser()); | 2495 chrome::OpenTaskManager(current_browser()); |
| 2490 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, any_tab)); | 2496 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, any_tab)); |
| 2491 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, any_prerender)); | 2497 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, any_prerender)); |
| (...skipping 15 matching lines...) Expand all Loading... | |
| 2507 // The "Prerender: " TaskManager entry should disappear, being replaced by a | 2513 // The "Prerender: " TaskManager entry should disappear, being replaced by a |
| 2508 // "Tab: Prerender Page" entry, and nothing else. | 2514 // "Tab: Prerender Page" entry, and nothing else. |
| 2509 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, prerender)); | 2515 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, prerender)); |
| 2510 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, original)); | 2516 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, original)); |
| 2511 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, final)); | 2517 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, final)); |
| 2512 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, any_tab)); | 2518 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, any_tab)); |
| 2513 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, any_prerender)); | 2519 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, any_prerender)); |
| 2514 } | 2520 } |
| 2515 | 2521 |
| 2516 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, OpenTaskManagerAfterPrerender) { | 2522 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, OpenTaskManagerAfterPrerender) { |
| 2517 // This test is for the old implementation of the task manager. We must | |
| 2518 // explicitly disable the new one. | |
| 2519 task_manager::browsertest_util::EnableOldTaskManager(); | |
| 2520 | |
| 2521 const base::string16 any_prerender = MatchTaskManagerPrerender("*"); | 2523 const base::string16 any_prerender = MatchTaskManagerPrerender("*"); |
| 2522 const base::string16 any_tab = MatchTaskManagerTab("*"); | 2524 const base::string16 any_tab = MatchTaskManagerTab("*"); |
| 2523 const base::string16 original = MatchTaskManagerTab("Preloader"); | 2525 const base::string16 original = MatchTaskManagerTab("Preloader"); |
| 2524 const base::string16 prerender = MatchTaskManagerPrerender("Prerender Page"); | 2526 const base::string16 prerender = MatchTaskManagerPrerender("Prerender Page"); |
| 2525 const base::string16 final = MatchTaskManagerTab("Prerender Page"); | 2527 const base::string16 final = MatchTaskManagerTab("Prerender Page"); |
| 2526 | 2528 |
| 2527 // Start with two resources. | 2529 // Start with two resources. |
| 2528 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 2530 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 2529 | 2531 |
| 2530 // Show the task manager. This populates the model. Importantly, we're doing | 2532 // Show the task manager. This populates the model. Importantly, we're doing |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 2545 // The "Prerender: Prerender Page" TaskManager row should disappear, being | 2547 // The "Prerender: Prerender Page" TaskManager row should disappear, being |
| 2546 // replaced by "Tab: Prerender Page" | 2548 // replaced by "Tab: Prerender Page" |
| 2547 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, prerender)); | 2549 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, prerender)); |
| 2548 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, original)); | 2550 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, original)); |
| 2549 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, final)); | 2551 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, final)); |
| 2550 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, any_tab)); | 2552 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, any_tab)); |
| 2551 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, any_prerender)); | 2553 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, any_prerender)); |
| 2552 } | 2554 } |
| 2553 | 2555 |
| 2554 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, OpenTaskManagerAfterSwapIn) { | 2556 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, OpenTaskManagerAfterSwapIn) { |
| 2555 // This test is for the old implementation of the task manager. We must | |
| 2556 // explicitly disable the new one. | |
| 2557 task_manager::browsertest_util::EnableOldTaskManager(); | |
| 2558 | |
| 2559 const base::string16 any_prerender = MatchTaskManagerPrerender("*"); | 2557 const base::string16 any_prerender = MatchTaskManagerPrerender("*"); |
| 2560 const base::string16 any_tab = MatchTaskManagerTab("*"); | 2558 const base::string16 any_tab = MatchTaskManagerTab("*"); |
| 2561 const base::string16 final = MatchTaskManagerTab("Prerender Page"); | 2559 const base::string16 final = MatchTaskManagerTab("Prerender Page"); |
| 2562 | 2560 |
| 2563 // Prerender, and swap it in. | 2561 // Prerender, and swap it in. |
| 2564 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); | 2562 PrerenderTestURL("/prerender/prerender_page.html", FINAL_STATUS_USED, 1); |
| 2565 NavigateToDestURL(); | 2563 NavigateToDestURL(); |
| 2566 | 2564 |
| 2567 // Show the task manager. This populates the model. Importantly, we're doing | 2565 // Show the task manager. This populates the model. Importantly, we're doing |
| 2568 // this after the prerender has been swapped in. | 2566 // this after the prerender has been swapped in. |
| 2569 chrome::OpenTaskManager(current_browser()); | 2567 chrome::OpenTaskManager(current_browser()); |
| 2570 | 2568 |
| 2571 // We should not see a prerender resource in the task manager, just a normal | 2569 // We should not see a prerender resource in the task manager, just a normal |
| 2572 // page. | 2570 // page. |
| 2573 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, final)); | 2571 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, final)); |
| 2574 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, any_tab)); | 2572 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(1, any_tab)); |
| 2575 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, any_prerender)); | 2573 ASSERT_NO_FATAL_FAILURE(WaitForTaskManagerRows(0, any_prerender)); |
| 2576 } | 2574 } |
| 2575 #endif // defined(OS_MACOSX) | |
| 2577 | 2576 |
| 2578 // Checks that audio loads are deferred on prerendering. | 2577 // Checks that audio loads are deferred on prerendering. |
| 2579 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5Audio) { | 2578 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5Audio) { |
| 2580 PrerenderTestURL("/prerender/prerender_html5_audio.html", FINAL_STATUS_USED, | 2579 PrerenderTestURL("/prerender/prerender_html5_audio.html", FINAL_STATUS_USED, |
| 2581 1); | 2580 1); |
| 2582 NavigateToDestURL(); | 2581 NavigateToDestURL(); |
| 2583 WaitForASCIITitle(GetActiveWebContents(), kPassTitle); | 2582 WaitForASCIITitle(GetActiveWebContents(), kPassTitle); |
| 2584 } | 2583 } |
| 2585 | 2584 |
| 2586 // Checks that audio loads are deferred on prerendering and played back when | 2585 // Checks that audio loads are deferred on prerendering and played back when |
| (...skipping 1474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4061 | 4060 |
| 4062 NavigateToDestURL(); | 4061 NavigateToDestURL(); |
| 4063 EXPECT_EQ(1U, task_manager.tasks().size()); | 4062 EXPECT_EQ(1U, task_manager.tasks().size()); |
| 4064 } | 4063 } |
| 4065 | 4064 |
| 4066 } // namespace | 4065 } // namespace |
| 4067 | 4066 |
| 4068 #endif // defined(ENABLE_TASK_MANAGER) | 4067 #endif // defined(ENABLE_TASK_MANAGER) |
| 4069 | 4068 |
| 4070 } // namespace prerender | 4069 } // namespace prerender |
| OLD | NEW |