HTMLMediaElement* HTMLTrackElement::mediaElement() const { Element* parent = parentElement(); if (isHTMLMediaElement(parent)) return toHTMLMediaElement(parent); return nullptr; }
void FullscreenController::didEnterFullScreen() { if (!m_fullScreenFrame) return; if (Document* doc = m_fullScreenFrame->document()) { if (FullscreenElementStack::isFullScreen(*doc)) { if (!m_exitFullscreenPageScaleFactor) { m_exitFullscreenPageScaleFactor = m_webViewImpl->pageScaleFactor(); m_exitFullscreenScrollOffset = m_webViewImpl->mainFrame()->scrollOffset(); m_exitFullscreenPinchViewportOffset = m_webViewImpl->pinchViewportOffset(); m_webViewImpl->setPageScaleFactor(1.0f); m_webViewImpl->setMainFrameScrollOffset(IntPoint()); m_webViewImpl->setPinchViewportOffset(FloatPoint()); } FullscreenElementStack::from(*doc).webkitDidEnterFullScreenForElement(0); if (RuntimeEnabledFeatures::overlayFullscreenVideoEnabled()) { Element* element = FullscreenElementStack::currentFullScreenElementFrom(*doc); ASSERT(element); if (isHTMLMediaElement(*element)) { HTMLMediaElement* mediaElement = toHTMLMediaElement(element); if (mediaElement->webMediaPlayer() && mediaElement->webMediaPlayer()->canEnterFullscreen() // FIXME: There is no embedder-side handling in layout test mode. && !isRunningLayoutTest()) { mediaElement->webMediaPlayer()->enterFullscreen(); } if (m_webViewImpl->layerTreeView()) m_webViewImpl->layerTreeView()->setHasTransparentBackground(true); } } } } }
static bool shouldAppendLayer(const RenderLayer& layer) { if (!RuntimeEnabledFeatures::overlayFullscreenVideoEnabled()) return true; Node* node = layer.renderer()->node(); if (node && isHTMLMediaElement(*node) && toHTMLMediaElement(node)->isFullscreen()) return false; return true; }
Node::InsertionNotificationRequest HTMLSourceElement::insertedInto(ContainerNode* insertionPoint) { HTMLElement::insertedInto(insertionPoint); Element* parent = parentElement(); if (isHTMLMediaElement(parent)) toHTMLMediaElement(parent)->sourceWasAdded(this); if (isHTMLPictureElement(parent)) toHTMLPictureElement(parent)->sourceOrMediaChanged(); return InsertionDone; }
void HTMLSourceElement::removedFrom(ContainerNode* removalRoot) { Element* parent = parentElement(); if (!parent && removalRoot->isElementNode()) parent = toElement(removalRoot); if (isHTMLMediaElement(parent)) toHTMLMediaElement(parent)->sourceWasRemoved(this); if (isHTMLPictureElement(parent)) toHTMLPictureElement(parent)->sourceOrMediaChanged(); HTMLElement::removedFrom(removalRoot); }
void HTMLTrackElement::removedFrom(ContainerNode* insertionPoint) { if (!parentNode() && isHTMLMediaElement(*insertionPoint)) toHTMLMediaElement(insertionPoint)->didRemoveTrackElement(this); HTMLElement::removedFrom(insertionPoint); }