Index: chrome/test/data/prerender/prerender_html5_common.js |
diff --git a/chrome/test/data/prerender/prerender_html5_common.js b/chrome/test/data/prerender/prerender_html5_common.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..09d196b4744c3b9fb631a7009b318c0912807461 |
--- /dev/null |
+++ b/chrome/test/data/prerender/prerender_html5_common.js |
@@ -0,0 +1,85 @@ |
+// Copyright (c) 2011 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+// Common js for the HTML5_* tests. The following variables need to be defined |
+// before this js is included: |
+// - 'willPlay' - indicates if the media is expected to start playing during |
+// the test. |
+// - 'testNetworkEvents' - if set to true, the test will test for the |
+// loadstart and stalled events. NOTE that since the loadstart event fires |
+// very early, to test for it reliably, the source of the media tag |
+// should be added after this script is included or add |
+// 'onLoadStart=mediEventHandler' as an attribute to the media element. |
+ |
+function assert(bool) { |
+ if (!bool) |
+ throw new Error('Assert Failed.'); |
+} |
+ |
+var canPlaySeen = false; |
+var playingSeen = false; |
+var canPlayThroughSeen = false; |
+var stalledSeen = false; |
+var loadStartSeen = false; |
+var hasError = false; |
+ |
+assert(typeof(willPlay) != 'undefined'); |
+assert(typeof(testNetworkEvents) != 'undefined'); |
+ |
+var mediaEl = document.getElementById("mediaEl"); |
+ |
+function mediaEventHandler(e) { |
+ switch (e.type) { |
+ case 'canplay': |
+ canPlaySeen = true; |
+ break; |
+ case 'playing': |
+ assert(canPlaySeen); |
+ playingSeen = true; |
+ break; |
+ case 'canplaythrough': |
+ assert(canPlaySeen); |
+ canPlayThroughSeen = true; |
+ break; |
+ case 'error': |
+ hasError = true; |
+ break; |
+ case 'loadstart': |
+ loadStartSeen = true; |
+ break; |
+ case 'stalled': |
+ assert(loadStartSeen); |
+ stalledSeen = true; |
+ break; |
+ } |
+ |
+ var stallDone = !testNetworkEvents || stalledSeen; |
+ var progressDone = (willPlay && canPlayThroughSeen && playingSeen) || |
+ (!willPlay && canPlayThroughSeen && !playingSeen); |
+ |
+ if (stallDone && progressDone) |
+ document.title = 'PASS'; |
+} |
+ |
+mediaEl.addEventListener('playing', mediaEventHandler, false); |
+mediaEl.addEventListener('canplay', mediaEventHandler, false); |
+mediaEl.addEventListener('canplaythrough', mediaEventHandler, false); |
+mediaEl.addEventListener('error', mediaEventHandler, false); |
+ |
+if (testNetworkEvents) { |
+ mediaEl.addEventListener('stalled', mediaEventHandler, false); |
+ mediaEl.addEventListener('loadstart', mediaEventHandler, false); |
+} |
+ |
+function DidPrerenderPass() { |
+ // The media should not have started at this point. |
+ return !canPlaySeen && !playingSeen && !hasError && |
+ mediaEl.currentTime == 0 && |
+ mediaEl.readyState == mediaEl.HAVE_NOTHING; |
+} |
+ |
+function DidDisplayPass() { |
+ // The actual test is done via the TitleWatcher. |
+ return true; |
+} |