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 5d9fc80c972c70e2d16df7f56ef108ce6aa25aa6..efd6285906520d5d0f5f4bfa8bb33d88841ce850 100644 |
--- a/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
+++ b/third_party/WebKit/Source/core/html/HTMLMediaElement.cpp |
@@ -995,7 +995,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); |
@@ -1017,7 +1018,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 { |