static bool shouldAppendLayer(const PaintLayer& layer) { Node* node = layer.layoutObject()->node(); if (node && isHTMLVideoElement(*node)) { HTMLVideoElement* element = toHTMLVideoElement(node); if (element->isFullscreen() && element->usesOverlayFullscreenVideo()) return false; } return true; }
virtual void SetUp() { m_pageHolder = DummyPageHolder::create(IntSize(800, 600), nullptr, StubFrameLoaderClient::create()); Document& document = this->document(); document.write("<video>"); HTMLVideoElement& video = toHTMLVideoElement(*document.querySelector("video")); m_mediaControls = video.mediaControls(); // If scripts are not enabled, controls will always be shown. m_pageHolder->frame().settings()->setScriptEnabled(true); }
void FullscreenController::didEnterFullScreen() { if (!m_provisionalFullScreenElement) return; RefPtrWillBeRawPtr<Element> element = m_provisionalFullScreenElement.release(); Document& document = element->document(); m_fullScreenFrame = document.frame(); if (!m_fullScreenFrame) return; if (!m_exitFullscreenPageScaleFactor) { m_exitFullscreenPageScaleFactor = m_webViewImpl->pageScaleFactor(); m_exitFullscreenScrollOffset = m_webViewImpl->mainFrame()->scrollOffset(); m_exitFullscreenPinchViewportOffset = m_webViewImpl->pinchViewportOffset(); updatePageScaleConstraints(false); m_webViewImpl->setPageScaleFactor(1.0f); m_webViewImpl->setMainFrameScrollOffset(IntPoint()); m_webViewImpl->setPinchViewportOffset(FloatPoint()); } Fullscreen::from(document).didEnterFullScreenForElement(element.get()); ASSERT(Fullscreen::currentFullScreenElementFrom(document) == element); if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled()) { if (isHTMLVideoElement(element)) { HTMLVideoElement* videoElement = toHTMLVideoElement(element); if (HTMLMediaElement::isMediaStreamURL(videoElement->sourceURL().string())) return; if (videoElement->webMediaPlayer() // FIXME: There is no embedder-side handling in layout test mode. && !LayoutTestSupport::isRunningLayoutTest()) { videoElement->webMediaPlayer()->enterFullscreen(); } if (m_webViewImpl->layerTreeView()) m_webViewImpl->layerTreeView()->setHasTransparentBackground(true); } } }
void FullscreenController::didEnterFullScreen() { if (!m_provisionalFullScreenElement) return; RefPtrWillBeRawPtr<Element> element = m_provisionalFullScreenElement.release(); Document& document = element->document(); m_fullScreenFrame = document.frame(); if (!m_fullScreenFrame) return; if (!m_haveEnteredFullscreen) { updatePageScaleConstraints(false); m_webViewImpl->setPageScaleFactor(1.0f); m_webViewImpl->mainFrame()->setScrollOffset(WebSize()); m_webViewImpl->setVisualViewportOffset(FloatPoint()); m_haveEnteredFullscreen = true; } Fullscreen::from(document).didEnterFullScreenForElement(element.get()); ASSERT(Fullscreen::currentFullScreenElementFrom(document) == element); if (isHTMLVideoElement(element)) { HTMLVideoElement* videoElement = toHTMLVideoElement(element); if (videoElement->usesOverlayFullscreenVideo()) { if (videoElement->webMediaPlayer() // FIXME: There is no embedder-side handling in layout test mode. && !LayoutTestSupport::isRunningLayoutTest()) { videoElement->webMediaPlayer()->enterFullscreen(); } if (m_webViewImpl->layerTreeView()) m_webViewImpl->layerTreeView()->setHasTransparentBackground(true); } } }