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 |