Index: chrome/test/data/prerender/prerender_html5_audio_jsplay.html |
diff --git a/chrome/test/data/prerender/prerender_html5_audio_jsplay.html b/chrome/test/data/prerender/prerender_html5_audio_jsplay.html |
new file mode 100644 |
index 0000000000000000000000000000000000000000..82bc4140c5c52e0c2719afc69a916149df69e165 |
--- /dev/null |
+++ b/chrome/test/data/prerender/prerender_html5_audio_jsplay.html |
@@ -0,0 +1,62 @@ |
+<html> |
+ <!-- |
+ This test checks that: |
+ - Audio tags are deferred during prerendering. |
+ - The audio starts playing on page swap in when it has been played by js. |
+ --> |
+<head> |
+<title>Prerender for HTML5 audio.</title> |
+</head> |
+ |
+<body> |
+<audio id="audioEl" controls> |
+ <source src="bear.wav" type="audio/wav" /> |
+</audio> |
+ |
+<script> |
+var canPlaySeen = false; |
+var playingSeen = false; |
+var canPlayThroughSeen = false; |
+var hasError = false; |
+ |
+var audioEl = document.getElementById("audioEl"); |
+audioEl.play(); |
+ |
+function audioEventHandler(e) { |
+ console.log(e.type); |
+ |
+ if (e.type == 'canplay') { |
scherkus (not reviewing)
2011/10/24 18:30:44
nit: I'd use a switch/case statement here instead
Shishir
2011/10/31 21:16:31
Done.
|
+ canPlaySeen = true; |
+ } else if (e.type == 'playing') { |
+ playingSeen = true; |
+ if (canPlayThroughSeen) |
+ document.title = "PASS"; |
+ } else if (e.type == 'error') { |
+ hasError = true; |
+ } else if (e.type == 'canplaythrough') { |
+ canPlayThroughSeen = true; |
+ if (playingSeen) |
+ document.title = "PASS"; |
+ } |
+} |
+ |
+audioEl.addEventListener('playing', audioEventHandler, false); |
scherkus (not reviewing)
2011/10/24 18:30:44
is it possible to move some of this code inside a
Shishir
2011/10/31 21:16:31
Done.
|
+audioEl.addEventListener('canplay', audioEventHandler, false); |
+audioEl.addEventListener('canplaythrough', audioEventHandler, false); |
+audioEl.addEventListener('error', audioEventHandler, false); |
+ |
+function DidPrerenderPass() { |
+ // The audio should not have started at this point. |
+ return !canPlaySeen && !playingSeen && !hasError && |
+ audioEl.currentTime == 0 && |
+ audioEl.readyState == audioEl.HAVE_NOTHING; |
+} |
+ |
+function DidDisplayPass() { |
+ // The actual test is done via the TitleWatcher. |
+ return true; |
+} |
+ |
+</script> |
+</body> |
+</html> |