Index: third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
diff --git a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
index fbb33611b4b8eb845abfd5eb67750ca412e4cd86..a23c6a4f7feeac806f2ce01e6a46fe57afe6bc7a 100644 |
--- a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
+++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
@@ -996,7 +996,8 @@ void HTMLMediaElement::loadResource(const WebMediaPlayerSource& source, ContentT |
bool attemptLoad = true; |
- if (source.isMediaStream() || url.protocolIs(mediaSourceBlobProtocol)) { |
+ bool isStreamOrBlobUrl = source.isMediaStream() || url.protocolIs(mediaSourceBlobProtocol); |
+ if (isStreamOrBlobUrl) { |
bool isMediaStream = source.isMediaStream() || (source.isURL() && isMediaStreamURL(url.getString())); |
if (isMediaStream) { |
m_autoplayHelper->removeUserGestureRequirement(GesturelessPlaybackEnabledByStream); |
@@ -1018,7 +1019,10 @@ void HTMLMediaElement::loadResource(const WebMediaPlayerSource& source, ContentT |
if (attemptLoad && canLoadResource) { |
ASSERT(!webMediaPlayer()); |
- if (effectivePreloadType() == WebMediaPlayer::PreloadNone) { |
+ // Conditionally defer the load if effective preload is 'none'. |
+ // Skip this optional deferral for MediaStream sources or any blob URL, |
+ // including MediaSource blob URLs. |
+ if (!isStreamOrBlobUrl && effectivePreloadType() == WebMediaPlayer::PreloadNone) { |
WTF_LOG(Media, "HTMLMediaElement::loadResource(%p) : Delaying load because preload == 'none'", this); |
deferLoad(); |
} else { |