LinkHighlightImpl::LinkHighlightImpl(Node* node, WebViewImpl* owningWebViewImpl) : m_node(node) , m_owningWebViewImpl(owningWebViewImpl) , m_currentGraphicsLayer(0) , m_geometryNeedsUpdate(false) , m_isAnimating(false) , m_startTime(monotonicallyIncreasingTime()) { ASSERT(m_node); ASSERT(owningWebViewImpl); WebCompositorSupport* compositorSupport = Platform::current()->compositorSupport(); ASSERT(compositorSupport); m_contentLayer = adoptPtr(compositorSupport->createContentLayer(this)); m_clipLayer = adoptPtr(compositorSupport->createLayer()); m_clipLayer->setTransformOrigin(WebFloatPoint3D()); m_clipLayer->addChild(m_contentLayer->layer()); if (RuntimeEnabledFeatures::compositorAnimationTimelinesEnabled()) { m_compositorPlayer = adoptPtr(compositorSupport->createAnimationPlayer()); ASSERT(m_compositorPlayer); m_compositorPlayer->setAnimationDelegate(this); if (m_owningWebViewImpl->linkHighlightsTimeline()) m_owningWebViewImpl->linkHighlightsTimeline()->playerAttached(*this); m_compositorPlayer->attachLayer(m_contentLayer->layer()); } else { owningWebViewImpl->registerForAnimations(m_contentLayer->layer()); m_contentLayer->layer()->setAnimationDelegate(this); } m_contentLayer->layer()->setDrawsContent(true); m_contentLayer->layer()->setOpacity(1); m_geometryNeedsUpdate = true; updateGeometry(); }
LinkHighlightImpl::LinkHighlightImpl(Node* node, WebViewImpl* owningWebViewImpl) : m_node(node) , m_owningWebViewImpl(owningWebViewImpl) , m_currentGraphicsLayer(0) , m_isScrollingGraphicsLayer(false) , m_geometryNeedsUpdate(false) , m_isAnimating(false) , m_startTime(monotonicallyIncreasingTime()) { DCHECK(m_node); DCHECK(owningWebViewImpl); WebCompositorSupport* compositorSupport = Platform::current()->compositorSupport(); DCHECK(compositorSupport); m_contentLayer = wrapUnique(compositorSupport->createContentLayer(this)); m_clipLayer = wrapUnique(compositorSupport->createLayer()); m_clipLayer->setTransformOrigin(WebFloatPoint3D()); m_clipLayer->addChild(m_contentLayer->layer()); m_compositorPlayer = CompositorAnimationPlayer::create(); DCHECK(m_compositorPlayer); m_compositorPlayer->setAnimationDelegate(this); if (m_owningWebViewImpl->linkHighlightsTimeline()) m_owningWebViewImpl->linkHighlightsTimeline()->playerAttached(*this); CompositorElementId elementId = createCompositorElementId(DOMNodeIds::idForNode(node), CompositorSubElementId::LinkHighlight); m_compositorPlayer->attachElement(elementId); m_contentLayer->layer()->setDrawsContent(true); m_contentLayer->layer()->setOpacity(1); m_contentLayer->layer()->setElementId(elementId); m_geometryNeedsUpdate = true; }
LinkHighlight::LinkHighlight(Node* node, WebViewImpl* owningWebViewImpl) : m_node(node) , m_owningWebViewImpl(owningWebViewImpl) , m_currentGraphicsLayer(0) , m_geometryNeedsUpdate(false) { ASSERT(m_node); ASSERT(owningWebViewImpl); WebCompositorSupport* compositorSupport = Platform::current()->compositorSupport(); m_contentLayer = adoptPtr(compositorSupport->createContentLayer(this)); m_clipLayer = adoptPtr(compositorSupport->createLayer()); m_clipLayer->setAnchorPoint(WebFloatPoint()); m_clipLayer->addChild(m_contentLayer->layer()); m_contentLayer->layer()->setDrawsContent(false); // We don't want to show the highlight until startAnimation is called, even though the highlight // layer may be added to the tree immediately. m_contentLayer->layer()->setOpacity(0); m_contentLayer->layer()->setAnimationDelegate(this); }
LinkHighlight::LinkHighlight(Node* node, WebViewImpl* owningWebViewImpl) : m_node(node) , m_owningWebViewImpl(owningWebViewImpl) , m_currentGraphicsLayer(0) , m_geometryNeedsUpdate(false) , m_isAnimating(false) , m_startTime(monotonicallyIncreasingTime()) { ASSERT(m_node); ASSERT(owningWebViewImpl); WebCompositorSupport* compositorSupport = Platform::current()->compositorSupport(); m_contentLayer = adoptPtr(compositorSupport->createContentLayer(this)); m_clipLayer = adoptPtr(compositorSupport->createLayer()); m_clipLayer->setAnchorPoint(WebFloatPoint()); m_clipLayer->addChild(m_contentLayer->layer()); m_contentLayer->layer()->setAnimationDelegate(this); m_contentLayer->layer()->setDrawsContent(true); m_contentLayer->layer()->setOpacity(1); m_geometryNeedsUpdate = true; updateGeometry(); }