Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: chrome/browser/prerender/prerender_browsertest.cc

Issue 8095007: Defer loading of audio/video tags while prerendering. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Adding "+webkit/media" to chrome/renderer/DEFS. Created 9 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <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/stringprintf.h" 9 #include "base/stringprintf.h"
10 #include "base/string_util.h" 10 #include "base/string_util.h"
(...skipping 529 matching lines...) Expand 10 before | Expand all | Expand 10 after
540 ASCIIToUTF16("ClickOpenLink()")); 540 ASCIIToUTF16("ClickOpenLink()"));
541 new_page_observer.Wait(); 541 new_page_observer.Wait();
542 } 542 }
543 543
544 void NavigateToNextPageAfterPrerender(Browser* browser) { 544 void NavigateToNextPageAfterPrerender(Browser* browser) {
545 ui_test_utils::NavigateToURL( 545 ui_test_utils::NavigateToURL(
546 browser, 546 browser,
547 test_server()->GetURL("files/prerender/prerender_page.html")); 547 test_server()->GetURL("files/prerender/prerender_page.html"));
548 } 548 }
549 549
550 void NavigateToDestUrlAndWaitForPassTitle() {
551 string16 expected_title = ASCIIToUTF16("PASS");
552 ui_test_utils::TitleWatcher title_watcher(
553 GetPrerenderContents()->prerender_contents()->tab_contents(),
554 expected_title);
555 NavigateToDestURL();
556 EXPECT_EQ(expected_title, title_watcher.WaitAndGetTitle());
557 }
558
550 // Called after the prerendered page has been navigated to and then away from. 559 // Called after the prerendered page has been navigated to and then away from.
551 // Navigates back through the history to the prerendered page. 560 // Navigates back through the history to the prerendered page.
552 void GoBackToPrerender(Browser* browser) { 561 void GoBackToPrerender(Browser* browser) {
553 ui_test_utils::WindowedNotificationObserver back_nav_observer( 562 ui_test_utils::WindowedNotificationObserver back_nav_observer(
554 content::NOTIFICATION_NAV_ENTRY_COMMITTED, 563 content::NOTIFICATION_NAV_ENTRY_COMMITTED,
555 content::NotificationService::AllSources()); 564 content::NotificationService::AllSources());
556 browser->GoBack(CURRENT_TAB); 565 browser->GoBack(CURRENT_TAB);
557 back_nav_observer.Wait(); 566 back_nav_observer.Wait();
558 bool original_prerender_page = false; 567 bool original_prerender_page = false;
559 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool( 568 ASSERT_TRUE(ui_test_utils::ExecuteJavaScriptAndExtractBool(
(...skipping 699 matching lines...) Expand 10 before | Expand all | Expand 10 after
1259 } 1268 }
1260 } 1269 }
1261 EXPECT_EQ(0, num_prerender_tabs); 1270 EXPECT_EQ(0, num_prerender_tabs);
1262 1271
1263 // We may have deleted the prerender tab, but the swapped in tab should be 1272 // We may have deleted the prerender tab, but the swapped in tab should be
1264 // active. 1273 // active.
1265 EXPECT_GE(num_tabs_with_prerender_page_title, 1); 1274 EXPECT_GE(num_tabs_with_prerender_page_title, 1);
1266 EXPECT_LE(num_tabs_with_prerender_page_title, 2); 1275 EXPECT_LE(num_tabs_with_prerender_page_title, 2);
1267 } 1276 }
1268 1277
1269 // Checks that prerenderers will terminate when an audio tag is encountered. 1278 // Checks that audio loads are deferred on prerendering.
1270 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5Audio) { 1279 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5Audio) {
1271 PrerenderTestURL("files/prerender/prerender_html5_audio.html", 1280 PrerenderTestURL("files/prerender/prerender_html5_audio.html",
1272 FINAL_STATUS_HTML5_MEDIA, 1281 FINAL_STATUS_USED,
1273 1); 1282 1);
1283 NavigateToDestUrlAndWaitForPassTitle();
1274 } 1284 }
1275 1285
1276 // Checks that prerenderers will terminate when a video tag is encountered. 1286 // Checks that audio loads are deferred on prerendering and played back when
1287 // the prerender is swapped in if autoplay is set.
1288 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5AudioAutoplay) {
1289 PrerenderTestURL("files/prerender/prerender_html5_audio_autoplay.html",
1290 FINAL_STATUS_USED,
1291 1);
1292 NavigateToDestUrlAndWaitForPassTitle();
1293 }
1294
1295 // Checks that audio loads are deferred on prerendering and played back when
1296 // the prerender is swapped in if js starts playing.
1297 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5AudioJsplay) {
1298 PrerenderTestURL("files/prerender/prerender_html5_audio_jsplay.html",
1299 FINAL_STATUS_USED,
1300 1);
1301 NavigateToDestUrlAndWaitForPassTitle();
1302 }
1303
1304 // Checks that video loads are deferred on prerendering.
1277 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5Video) { 1305 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5Video) {
1278 PrerenderTestURL("files/prerender/prerender_html5_video.html", 1306 PrerenderTestURL("files/prerender/prerender_html5_video.html",
1279 FINAL_STATUS_HTML5_MEDIA, 1307 FINAL_STATUS_USED,
1280 1); 1308 1);
1309 NavigateToDestUrlAndWaitForPassTitle();
1281 } 1310 }
1282 1311
1283 // Checks that prerenderers will terminate when a video tag is inserted via 1312 // Checks that video tags inserted by javascript are deferred and played
1284 // javascript. 1313 // correctly on swap in.
1285 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5VideoJs) { 1314 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5VideoJs) {
1286 PrerenderTestURL("files/prerender/prerender_html5_video_script.html", 1315 PrerenderTestURL("files/prerender/prerender_html5_video_script.html",
1287 FINAL_STATUS_HTML5_MEDIA, 1316 FINAL_STATUS_USED,
1288 1); 1317 1);
1318 NavigateToDestUrlAndWaitForPassTitle();
1319 }
1320
1321 // Checks for correct network events by using a busy sleep the javascript.
1322 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderHTML5VideoNetwork) {
1323 PrerenderTestURL("files/prerender/prerender_html5_video_network.html",
1324 FINAL_STATUS_USED,
1325 1);
1326 NavigateToDestUrlAndWaitForPassTitle();
1289 } 1327 }
1290 1328
1291 // Checks that scripts can retrieve the correct window size while prerendering. 1329 // Checks that scripts can retrieve the correct window size while prerendering.
1292 #if defined(TOOLKIT_VIEWS) 1330 #if defined(TOOLKIT_VIEWS)
1293 // TODO(beng): Widget hierarchy split causes this to fail http://crbug.com/82363 1331 // TODO(beng): Widget hierarchy split causes this to fail http://crbug.com/82363
1294 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderWindowSize) { 1332 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderWindowSize) {
1295 #else 1333 #else
1296 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderWindowSize) { 1334 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderWindowSize) {
1297 #endif 1335 #endif
1298 PrerenderTestURL("files/prerender/prerender_size.html", 1336 PrerenderTestURL("files/prerender/prerender_size.html",
(...skipping 552 matching lines...) Expand 10 before | Expand all | Expand 10 after
1851 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderSessionStorage) { 1889 IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, DISABLED_PrerenderSessionStorage) {
1852 set_loader_path("files/prerender/prerender_loader_with_session_storage.html"); 1890 set_loader_path("files/prerender/prerender_loader_with_session_storage.html");
1853 PrerenderTestURL(GetCrossDomainTestUrl("files/prerender/prerender_page.html"), 1891 PrerenderTestURL(GetCrossDomainTestUrl("files/prerender/prerender_page.html"),
1854 FINAL_STATUS_USED, 1892 FINAL_STATUS_USED,
1855 1); 1893 1);
1856 NavigateToDestURL(); 1894 NavigateToDestURL();
1857 GoBackToPageBeforePrerender(browser()); 1895 GoBackToPageBeforePrerender(browser());
1858 } 1896 }
1859 1897
1860 } // namespace prerender 1898 } // namespace prerender
OLDNEW
« no previous file with comments | « no previous file | chrome/chrome_renderer.gypi » ('j') | chrome/test/data/prerender/prerender_html5_common.js » ('J')

Powered by Google App Engine
This is Rietveld 408576698