Index: tools/telemetry/telemetry/page/actions/seek.js |
diff --git a/tools/telemetry/telemetry/page/actions/seek.js b/tools/telemetry/telemetry/page/actions/seek.js |
index 1a06ed10e985de239fde57b8d67d5e113c5b9f8e..e77d48726db139aacbbdf1eb84fdcd38c4e06ad5 100644 |
--- a/tools/telemetry/telemetry/page/actions/seek.js |
+++ b/tools/telemetry/telemetry/page/actions/seek.js |
@@ -4,35 +4,34 @@ |
// This file performs actions on media elements. |
(function() { |
- function seekMedia(selector, seekTime, logSeekTime) { |
+ function seekMedia(selector, seekTime, logSeekTime, seekLabel) { |
// Performs the "Seek" action on media satisfying selector. |
var mediaElements = window.__findMediaElements(selector); |
for (var i = 0; i < mediaElements.length; i++) { |
- seek(mediaElements[i], seekTime, logSeekTime); |
+ if (mediaElements[i] instanceof HTMLMediaElement) |
+ seekHTML5Element(mediaElements[i], seekTime, logSeekTime, seekLabel); |
+ else |
+ throw new Error('Can not seek non HTML5 media elements.'); |
} |
} |
- function seek(element, seekTime, logSeekTime) { |
- if (element instanceof HTMLMediaElement) |
- seekHTML5Element(element, seekTime, logSeekTime); |
- else |
- throw new Error('Can not seek non HTML5 media elements.'); |
- } |
- |
- function seekHTML5Element(element, seekTime, logSeekTime) { |
+ function seekHTML5Element(element, seekTime, logSeekTime, seekLabel) { |
+ function readyForSeek() { |
+ seekHTML5ElementPostLoad(element, seekTime, logSeekTime, seekLabel); |
+ } |
if (element.readyState == element.HAVE_NOTHING) { |
var onLoadedMetaData = function(e) { |
element.removeEventListener('loadedmetadata', onLoadedMetaData); |
- seekHTML5ElementPostLoad(element, seekTime, logSeekTime); |
+ readyForSeek(); |
}; |
element.addEventListener('loadedmetadata', onLoadedMetaData); |
element.load(); |
} else { |
- seekHTML5ElementPostLoad(element, seekTime, logSeekTime); |
+ readyForSeek(); |
} |
} |
- function seekHTML5ElementPostLoad(element, seekTime, logSeekTime) { |
+ function seekHTML5ElementPostLoad(element, seekTime, logSeekTime, seekLabel) { |
var onSeeked = function(e) { |
element[e.type + '_completed'] = true; |
element.removeEventListener('seeked', onSeeked); |
@@ -49,7 +48,10 @@ |
if (logSeekTime) { |
var willSeekEvent = document.createEvent('Event'); |
willSeekEvent.initEvent('willSeek', false, false); |
- willSeekEvent.seekLabel = seekTime; |
+ if (seekLabel) |
+ willSeekEvent.seekLabel = seekLabel; |
+ else |
+ willSeekEvent.seekLabel = seekTime; |
element.dispatchEvent(willSeekEvent); |
} |
try { |