| 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..13aeeb226c58ab12da454d813d88ae40078ce9d7
|
| --- /dev/null
|
| +++ b/chrome/test/data/prerender/prerender_html5_common.js
|
| @@ -0,0 +1,87 @@
|
| +// 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) {
|
| + console.log(e.type);
|
| + 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 &&
|
| + (!testNetworkEvents || (loadStartSeen && stalledSeen));
|
| +}
|
| +
|
| +function DidDisplayPass() {
|
| + // The actual test is done via the TitleWatcher.
|
| + return true;
|
| +}
|
|
|