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

Unified Diff: tools/telemetry/telemetry/page/actions/seek.js

Issue 19482009: Telemetry media Seek action and metrics. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 5 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 side-by-side diff with in-line comments
Download patch
Index: tools/telemetry/telemetry/page/actions/seek.js
diff --git a/tools/telemetry/telemetry/page/actions/play.js b/tools/telemetry/telemetry/page/actions/seek.js
similarity index 55%
copy from tools/telemetry/telemetry/page/actions/play.js
copy to tools/telemetry/telemetry/page/actions/seek.js
index eb174248e95b688325e9c5f62a5489ff55ec868a..35771990ebabbd7d4224989f7d7344c18176ff69 100644
--- a/tools/telemetry/telemetry/page/actions/play.js
+++ b/tools/telemetry/telemetry/page/actions/seek.js
@@ -1,4 +1,4 @@
-// Copyright 2013 The Chromium Authors. All rights reserved.
+// Copyright (c) 2013 The Chromium Authors. All rights reserved.
dtu 2013/07/20 01:20:56 Can you reuse the code between the two JS files? M
shadi 2013/07/22 19:18:31 I went with a MediaAction base class that runs com
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -27,50 +27,57 @@
return [];
}
- function playMedia(selector) {
- // Performs the "Play" action on media satisfying selector.
+ function seekMedia(selector, seekTime, logSeekTime) {
+ // Performs the "Seek" action on media satisfying selector.
var mediaElements = findMediaElements(selector);
for (var i = 0; i < mediaElements.length; i++) {
- console.log('Playing element: ' + mediaElements[i].src);
- play(mediaElements[i]);
+ seek(mediaElements[i], seekTime, logSeekTime);
}
}
- function play(element) {
+ function seek(element, seekTime, logSeekTime) {
if (element instanceof HTMLMediaElement)
- playHTML5Element(element);
+ seekHTML5Element(element, seekTime, logSeekTime);
else
- console.error('Can not play non HTML5 media elements.');
+ console.error('Can not seek non HTML5 media elements.');
}
- function playHTML5Element(element) {
- function logEventHappened(e) {
+ function seekHTML5Element(element, seekTime, logSeekTime) {
+ element['seeked_completed'] = false;
+ var onSeeked = function(e) {
element[e.type + '_completed'] = true;
- }
+ element.removeEventListener('seeked', onSeeked);
+ };
function onError(e) {
console.error('Error playing media :' + e.type);
}
- element.addEventListener('playing', logEventHappened);
- element.addEventListener('ended', logEventHappened);
element.addEventListener('error', onError);
element.addEventListener('abort', onError);
- var willPlayEvent = document.createEvent('Event');
- willPlayEvent.initEvent('willPlay', false, false);
- element.dispatchEvent(willPlayEvent);
- element.play();
+ if (logSeekTime) {
+ var willSeekEvent = document.createEvent('Event');
+ willSeekEvent.initEvent('willSeek', false, false);
+ willSeekEvent.seekLabel = seekTime;
+ element.dispatchEvent(willSeekEvent);
+ }
+ element.addEventListener('seeked', onSeeked);
+ try {
+ element.currentTime = seekTime;
+ } catch (err) {
+ console.error('Cannot seek with network state: ' + element.networkState);
+ }
}
- function hasEventCompleted(selector, event_name) {
- // Return true if the event_name fired for media satisfying the selector.
+ function hasEventCompleted(selector, eventName) {
+ // Return true if the 'eventName' fired for media satisfying the selector.
var mediaElements = findMediaElements(selector);
for (var i = 0; i < mediaElements.length; i++) {
- if (!mediaElements[i][event_name + '_completed'])
+ if (!mediaElements[i][eventName + '_completed'])
return false;
}
return true;
}
- window.__playMedia = playMedia;
+ window.__seekMedia = seekMedia;
window.__hasEventCompleted = hasEventCompleted;
})();

Powered by Google App Engine
This is Rietveld 408576698