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

Side by Side Diff: chrome/test/data/prerender/prerender_html5_common.js

Issue 8095007: Defer loading of audio/video tags while prerendering. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: Fixing test for release build. Created 9 years 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
(Empty)
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
3 // found in the LICENSE file.
4
5 // Common js for the HTML5_* tests. The following variables need to be defined
6 // before this js is included:
7 // - 'willPlay' - indicates if the media is expected to start playing during
8 // the test.
9 // - 'testNetworkEvents' - if set to true, the test will test for the
10 // loadstart and stalled events. NOTE that since the loadstart event fires
11 // very early, to test for it reliably, the source of the media tag
12 // should be added after this script is included or add
13 // 'onLoadStart=mediEventHandler' as an attribute to the media element.
14
15 function assert(bool) {
16 if (!bool)
17 throw new Error('Assert Failed.');
18 }
19
20 var canPlaySeen = false;
21 var playingSeen = false;
22 var canPlayThroughSeen = false;
23 var stalledSeen = false;
24 var loadStartSeen = false;
25 var hasError = false;
26
27 assert(typeof(willPlay) != 'undefined');
28 assert(typeof(testNetworkEvents) != 'undefined');
29
30 var mediaEl = document.getElementById("mediaEl");
31
32 function mediaEventHandler(e) {
33 switch (e.type) {
34 case 'canplay':
35 canPlaySeen = true;
36 break;
37 case 'playing':
38 assert(canPlaySeen);
39 playingSeen = true;
40 break;
41 case 'canplaythrough':
42 assert(canPlaySeen);
43 canPlayThroughSeen = true;
44 break;
45 case 'error':
46 hasError = true;
47 break;
48 case 'loadstart':
49 loadStartSeen = true;
50 break;
51 case 'stalled':
52 assert(loadStartSeen);
53 stalledSeen = true;
54 break;
55 }
56
57 var stallDone = !testNetworkEvents || stalledSeen;
58 var progressDone = (willPlay && canPlayThroughSeen && playingSeen) ||
59 (!willPlay && canPlayThroughSeen && !playingSeen);
60
61 if (stallDone && progressDone)
62 document.title = 'PASS';
63 }
64
65 mediaEl.addEventListener('playing', mediaEventHandler, false);
66 mediaEl.addEventListener('canplay', mediaEventHandler, false);
67 mediaEl.addEventListener('canplaythrough', mediaEventHandler, false);
68 mediaEl.addEventListener('error', mediaEventHandler, false);
69
70 if (testNetworkEvents) {
71 mediaEl.addEventListener('stalled', mediaEventHandler, false);
72 mediaEl.addEventListener('loadstart', mediaEventHandler, false);
73 }
74
75 function DidPrerenderPass() {
76 // The media should not have started at this point.
77 return !canPlaySeen && !playingSeen && !hasError &&
78 mediaEl.currentTime == 0 &&
79 mediaEl.readyState == mediaEl.HAVE_NOTHING;
80 }
81
82 function DidDisplayPass() {
83 // The actual test is done via the TitleWatcher.
84 return true;
85 }
OLDNEW
« no previous file with comments | « chrome/test/data/prerender/prerender_html5_audio_jsplay.html ('k') | chrome/test/data/prerender/prerender_html5_video.html » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698