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

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: 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
(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 sleep(millis) {
16 var date = new Date();
17 var curDate = null;
18 do {
19 curDate = new Date();
20 } while(curDate - date < millis);
21 }
22
23 function assert(bool) {
24 if (!bool)
25 throw new Error('Assert Failed.');
26 }
27
28 var canPlaySeen = false;
29 var playingSeen = false;
30 var canPlayThroughSeen = false;
31 var stalledSeen = false;
32 var loadStartSeen = false;
33 var hasError = false;
34
35 assert(typeof(willPlay) != 'undefined');
36 assert(typeof(testNetworkEvents) != 'undefined');
37
38 var mediaEl = document.getElementById("mediaEl");
39
40 function mediaEventHandler(e) {
41 switch (e.type) {
42 case 'canplay':
43 canPlaySeen = true;
44 break;
45 case 'playing':
46 assert(canPlaySeen);
47 playingSeen = true;
48 break;
49 case 'canplaythrough':
50 assert(canPlaySeen);
51 canPlayThroughSeen = true;
52 break;
53 case 'error':
54 hasError = true;
55 break;
56 case 'loadstart':
57 loadStartSeen = true;
58 break;
59 case 'stalled':
60 assert(loadStartSeen);
61 stalledSeen = true;
62 break;
63 }
64
65 if ((willPlay && canPlayThroughSeen && playingSeen) ||
66 (!willPlay && canPlayThroughSeen && !playingSeen)) {
67 document.title = 'PASS';
68 }
69 }
70
71 mediaEl.addEventListener('playing', mediaEventHandler, false);
72 mediaEl.addEventListener('canplay', mediaEventHandler, false);
73 mediaEl.addEventListener('canplaythrough', mediaEventHandler, false);
74 mediaEl.addEventListener('error', mediaEventHandler, false);
75
76 if (testNetworkEvents) {
77 mediaEl.addEventListener('stalled', mediaEventHandler, false);
78 mediaEl.addEventListener('loadstart', mediaEventHandler, false);
79 }
80
81 function DidPrerenderPass() {
82 if (testNetworkEvents)
83 sleep(5000); // Stalled happens after 3000 ms.
scherkus (not reviewing) 2011/11/23 01:43:31 there's no way to signal when the test has complet
Shishir 2011/11/23 01:48:37 akaik the stalled event is fired when there is no
scherkus (not reviewing) 2011/12/01 05:38:13 Yeah I don't really know how prerender tests work
84
85 // The media should not have started at this point.
86 return !canPlaySeen && !playingSeen && !hasError &&
87 mediaEl.currentTime == 0 &&
88 mediaEl.readyState == mediaEl.HAVE_NOTHING &&
89 (!testNetworkEvents || (loadStartSeen && stalledSeen));
90 }
91
92 function DidDisplayPass() {
93 // The actual test is done via the TitleWatcher.
94 return true;
95 }
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