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

Side by Side Diff: tools/telemetry/telemetry/page/actions/loop.js

Issue 1056133003: Move page/actions to internal/actions. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Add copyright header. Created 5 years, 8 months 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
OLDNEW
(Empty)
1 // Copyright 2013 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 // This file performs actions on media elements.
6 (function() {
7 function loopMedia(selector, loopCount) {
8 // Loops media playback `loopCount` times.
9 var mediaElements = window.__findMediaElements(selector);
10 for (var i = 0; i < mediaElements.length; i++) {
11 loop(mediaElements[i], loopCount);
12 }
13 }
14
15 function loop(element, loopCount) {
16 if (element instanceof HTMLMediaElement)
17 loopHTML5Element(element, loopCount);
18 else
19 throw new Error('Can not play non HTML5 media elements.');
20 }
21
22 function loopHTML5Element(element, loopCount) {
23 window.__registerHTML5ErrorEvents(element);
24 element['loop_completed'] = false;
25 var currentLoop = 0;
26 var onLoop = function(e) {
27 ++currentLoop;
28 if (currentLoop == loopCount) {
29 element.pause();
30 element.removeEventListener('seeked', onLoop);
31 element['loop_completed'] = true;
32 // Dispatch endLoopEvent to mark end of looping.
33 var endLoopEvent = document.createEvent('Event');
34 endLoopEvent.initEvent('endLoop', false, false);
35 element.dispatchEvent(endLoopEvent);
36 }
37 };
38
39 element.addEventListener('seeked', onLoop);
40 element.loop = true;
41
42 // Dispatch willLoopEvent to measure loop time.
43 var willLoopEvent = document.createEvent('Event');
44 willLoopEvent.initEvent('willLoop', false, false);
45 willLoopEvent.loopCount = loopCount;
46 element.dispatchEvent(willLoopEvent);
47 // Reset HTML5 player to start playback from beginning.
48 element.load();
49 element.play();
50 }
51
52 window.__loopMedia = loopMedia;
53 })();
OLDNEW
« no previous file with comments | « tools/telemetry/telemetry/page/actions/javascript_click.py ('k') | tools/telemetry/telemetry/page/actions/loop.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698