Index: third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp |
diff --git a/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp b/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp |
index db1de678cac7e8bda77e43567030f9960c02da88..463f2280aaf5ebe4293f79b581b30f4112df2ee6 100644 |
--- a/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp |
+++ b/third_party/WebKit/Source/web/FrameLoaderClientImpl.cpp |
@@ -787,9 +787,28 @@ std::unique_ptr<WebMediaPlayer> FrameLoaderClientImpl::createWebMediaPlayer( |
HTMLMediaElementEncryptedMedia& encryptedMedia = |
HTMLMediaElementEncryptedMedia::from(htmlMediaElement); |
WebString sinkId(HTMLMediaElementAudioOutputDevice::sinkId(htmlMediaElement)); |
- return wrapUnique(webFrame->client()->createMediaPlayer( |
- source, client, &encryptedMedia, encryptedMedia.contentDecryptionModule(), |
- sinkId)); |
+ std::unique_ptr<WebMediaPlayer> mediaPlayer = |
+ wrapUnique(webFrame->client()->createMediaPlayer( |
+ source, client, &encryptedMedia, |
+ encryptedMedia.contentDecryptionModule(), sinkId)); |
+ |
+ // Notify WebMediaPlayer: if the current media is active fullscreen element; |
+ // or is a descendant of the fullscreen element and covers most of the window. |
+ Element* fullscreenElement = |
+ Fullscreen::currentFullScreenElementFrom(htmlMediaElement.document()); |
+ if (fullscreenElement == htmlMediaElement) { |
+ mediaPlayer->enteredFullscreen(); |
+ } else if (fullscreenElement && |
+ fullscreenElement->isShadowIncludingInclusiveAncestorOf( |
+ &htmlMediaElement) && |
+ htmlMediaElement.clientWidth() >= |
+ htmlMediaElement.document().domWindow()->innerWidth() * 0.9 && |
+ htmlMediaElement.clientHeight() >= |
+ htmlMediaElement.document().domWindow()->innerHeight() * 0.9) { |
+ mediaPlayer->enteredFullWindow(); |
+ } |
+ |
+ return mediaPlayer; |
} |
ObjectContentType FrameLoaderClientImpl::getObjectContentType( |