Skip to content
  • jamesr@google.com's avatar
    [chromium] Change WebLayer from a concrete type to a pure virtual interface · d11fbbaa
    jamesr@google.com authored
    https://bugs.webkit.org/show_bug.cgi?id=94174
    
    Reviewed by Adrienne Walker.
    
    Source/Platform:
    
    This changes WebLayer from a value type to a pure virtual interface and changes Web*Layers from subtypes to
    standalone types that have a WebLayer. This better isolates the implementation from the interface and, since
    it's not possible to re-wrap an existing layer, makes cleanup explicit instead of requiring the caller to invoke
    special cleanup methods before shutdown.
    
    * chromium/public/WebContentLayer.h:
    (WebContentLayer):
    * chromium/public/WebExternalTextureLayer.h:
    (WebExternalTextureLayer):
    * chromium/public/WebIOSurfaceLayer.h:
    (WebIOSurfaceLayer):
    * chromium/public/WebImageLayer.h:
    (WebImageLayer):
    * chromium/public/WebLayer.h:
    (WebKit):
    (WebLayer):
    (WebKit::WebLayer::~WebLayer):
    * chromium/public/WebScrollableLayer.h:
    (WebScrollableLayer):
    * chromium/public/WebScrollbarLayer.h:
    (WebScrollbarLayer):
    * chromium/public/WebSolidColorLayer.h:
    (WebKit):
    (WebSolidColorLayer):
    (WebKit::WebSolidColorLayer::~WebSolidColorLayer):
    * chromium/public/WebVideoLayer.h:
    (WebVideoLayer):
    
    Source/WebCore:
    
    This updates WebCore code for the WebLayer interface changes. Classes that have ownership of specific layer
    types (such as DrawingBufferChromium, Canvas2DLayerBridge and ScrollingCoordinatorChromium) hold ownership
    of a specific type and a pointer to the WebLayer to GraphicsLayerChromium to be included in the final layer
    tree. GraphicsLayerChromium holds a WebContentLayer and (optionally) a WebImageLayer and WebLayer (for
    m_transformLayer) and assembles the final layer tree.
    
    * page/scrolling/chromium/ScrollingCoordinatorChromium.cpp:
    (WebCore::ScrollingCoordinatorPrivate::ScrollingCoordinatorPrivate):
    (ScrollingCoordinatorPrivate):
    (WebCore::ScrollingCoordinatorPrivate::setScrollLayer):
    (WebCore::ScrollingCoordinatorPrivate::setHorizontalScrollbarLayer):
    (WebCore::ScrollingCoordinatorPrivate::setVerticalScrollbarLayer):
    (WebCore::ScrollingCoordinatorPrivate::scrollLayer):
    (WebCore::scrollableLayerForGraphicsLayer):
    (WebCore):
    (WebCore::createScrollbarLayer):
    (WebCore::ScrollingCoordinator::setScrollLayer):
    (WebCore::ScrollingCoordinator::setNonFastScrollableRegion):
    (WebCore::ScrollingCoordinator::setWheelEventHandlerCount):
    (WebCore::ScrollingCoordinator::setShouldUpdateScrollLayerPositionOnMainThread):
    (WebCore::ScrollingCoordinator::setLayerIsContainerForFixedPositionLayers):
    (WebCore::ScrollingCoordinator::setLayerIsFixedToContainerLayer):
    * platform/graphics/chromium/Canvas2DLayerBridge.cpp:
    (WebCore::AcceleratedDeviceContext::AcceleratedDeviceContext):
    (WebCore::AcceleratedDeviceContext::clearLayer):
    (AcceleratedDeviceContext):
    (WebCore::AcceleratedDeviceContext::prepareForDraw):
    (WebCore::Canvas2DLayerBridge::Canvas2DLayerBridge):
    (WebCore::Canvas2DLayerBridge::~Canvas2DLayerBridge):
    (WebCore::Canvas2DLayerBridge::skCanvas):
    (WebCore::Canvas2DLayerBridge::layer):
    (WebCore::Canvas2DLayerBridge::contextAcquired):
    * platform/graphics/chromium/Canvas2DLayerBridge.h:
    (WebCore):
    (Canvas2DLayerBridge):
    * platform/graphics/chromium/DrawingBufferChromium.cpp:
    (WebCore::DrawingBufferPrivate::DrawingBufferPrivate):
    (WebCore::DrawingBufferPrivate::~DrawingBufferPrivate):
    (WebCore::DrawingBufferPrivate::layer):
    (DrawingBufferPrivate):
    * platform/graphics/chromium/GraphicsLayerChromium.cpp:
    (WebCore::GraphicsLayerChromium::GraphicsLayerChromium):
    (WebCore::GraphicsLayerChromium::~GraphicsLayerChromium):
    (WebCore::GraphicsLayerChromium::updateNames):
    (WebCore::GraphicsLayerChromium::removeFromParent):
    (WebCore::GraphicsLayerChromium::setSize):
    (WebCore::GraphicsLayerChromium::clearBackgroundColor):
    (WebCore::GraphicsLayerChromium::setContentsOpaque):
    (WebCore::GraphicsLayerChromium::setFilters):
    (WebCore::GraphicsLayerChromium::setBackgroundFilters):
    (WebCore::GraphicsLayerChromium::setMaskLayer):
    (WebCore::GraphicsLayerChromium::setBackfaceVisibility):
    (WebCore::GraphicsLayerChromium::setOpacity):
    (WebCore::GraphicsLayerChromium::setReplicatedByLayer):
    (WebCore::GraphicsLayerChromium::setContentsNeedsDisplay):
    (WebCore::GraphicsLayerChromium::setNeedsDisplay):
    (WebCore::GraphicsLayerChromium::setNeedsDisplayInRect):
    (WebCore::GraphicsLayerChromium::setContentsToImage):
    (WebCore::GraphicsLayerChromium::setContentsToCanvas):
    (WebCore):
    (WebCore::GraphicsLayerChromium::setContentsToMedia):
    (WebCore::GraphicsLayerChromium::setContentsTo):
    (WebCore::GraphicsLayerChromium::addAnimation):
    (WebCore::GraphicsLayerChromium::pauseAnimation):
    (WebCore::GraphicsLayerChromium::removeAnimation):
    (WebCore::GraphicsLayerChromium::suspendAnimations):
    (WebCore::GraphicsLayerChromium::resumeAnimations):
    (WebCore::GraphicsLayerChromium::addLinkHighlight):
    (WebCore::GraphicsLayerChromium::didFinishLinkHighlight):
    (WebCore::GraphicsLayerChromium::platformLayer):
    (WebCore::GraphicsLayerChromium::setDebugBackgroundColor):
    (WebCore::GraphicsLayerChromium::setDebugBorder):
    (WebCore::GraphicsLayerChromium::updateChildList):
    (WebCore::GraphicsLayerChromium::updateLayerPosition):
    (WebCore::GraphicsLayerChromium::updateLayerSize):
    (WebCore::GraphicsLayerChromium::updateAnchorPoint):
    (WebCore::GraphicsLayerChromium::updateTransform):
    (WebCore::GraphicsLayerChromium::updateChildrenTransform):
    (WebCore::GraphicsLayerChromium::updateMasksToBounds):
    (WebCore::GraphicsLayerChromium::updateLayerPreserves3D):
    (WebCore::GraphicsLayerChromium::updateLayerIsDrawable):
    (WebCore::GraphicsLayerChromium::updateLayerBackgroundColor):
    (WebCore::GraphicsLayerChromium::updateContentsRect):
    (WebCore::GraphicsLayerChromium::updateContentsScale):
    (WebCore::GraphicsLayerChromium::setupContentsLayer):
    * platform/graphics/chromium/GraphicsLayerChromium.h:
    (WebCore::GraphicsLayerChromium::hasContentsLayer):
    (WebCore::GraphicsLayerChromium::contentLayer):
    (GraphicsLayerChromium):
    (WebCore::GraphicsLayerChromium::contentsLayer):
    * platform/graphics/chromium/LayerChromium.cpp:
    (WebCore::LayerChromium::rootLayer):
    * platform/graphics/chromium/LayerChromium.h:
    
    Source/WebKit/chromium:
    
    This updates the implementation of the Web*Layer family to the new design and updates callers in WebViewImpl /
    NonCompositedContentHost.
    
    * WebKit.gyp:
    * src/NonCompositedContentHost.cpp:
    (WebKit::NonCompositedContentHost::NonCompositedContentHost):
    (WebKit::NonCompositedContentHost::setScrollLayer):
    (WebKit::NonCompositedContentHost::setViewport):
    (WebKit::NonCompositedContentHost::scrollLayer):
    * src/NonCompositedContentHost.h:
    * src/WebContentLayerImpl.cpp:
    (WebKit::WebContentLayer::create):
    (WebKit::WebContentLayerImpl::WebContentLayerImpl):
    (WebKit::WebContentLayerImpl::~WebContentLayerImpl):
    (WebKit::WebContentLayerImpl::layer):
    (WebKit):
    (WebKit::WebContentLayerImpl::clearClient):
    (WebKit::WebContentLayerImpl::setDoubleSided):
    (WebKit::WebContentLayerImpl::setContentsScale):
    (WebKit::WebContentLayerImpl::setUseLCDText):
    (WebKit::WebContentLayerImpl::setDrawCheckerboardForMissingTiles):
    (WebKit::WebContentLayerImpl::paintContents):
    * src/WebContentLayerImpl.h:
    (WebContentLayerImpl):
    * src/WebExternalTextureLayer.cpp: Removed.
    * src/WebExternalTextureLayerImpl.cpp: Added.
    (WebKit):
    (WebKit::WebExternalTextureLayer::create):
    (WebKit::WebExternalTextureLayerImpl::WebExternalTextureLayerImpl):
    (WebKit::WebExternalTextureLayerImpl::~WebExternalTextureLayerImpl):
    (WebKit::WebExternalTextureLayerImpl::layer):
    (WebKit::WebExternalTextureLayerImpl::clearClient):
    (WebKit::WebExternalTextureLayerImpl::setTextureId):
    (WebKit::WebExternalTextureLayerImpl::setFlipped):
    (WebKit::WebExternalTextureLayerImpl::setUVRect):
    (WebKit::WebExternalTextureLayerImpl::setOpaque):
    (WebKit::WebExternalTextureLayerImpl::setPremultipliedAlpha):
    (WebKit::WebExternalTextureLayerImpl::willModifyTexture):
    (WebKit::WebExternalTextureLayerImpl::setRateLimitContext):
    (WebTextureUpdaterImpl):
    (WebKit::WebTextureUpdaterImpl::WebTextureUpdaterImpl):
    (WebKit::WebExternalTextureLayerImpl::prepareTexture):
    (WebKit::WebExternalTextureLayerImpl::context):
    * src/WebExternalTextureLayerImpl.h: Renamed from Source/WebKit/chromium/src/WebContentLayer.cpp.
    (WebKit):
    (WebExternalTextureLayerImpl):
    * src/WebIOSurfaceLayerImpl.cpp: Renamed from Source/WebKit/chromium/src/WebIOSurfaceLayer.cpp.
    (WebKit):
    (WebKit::WebIOSurfaceLayer::create):
    (WebKit::WebIOSurfaceLayerImpl::WebIOSurfaceLayerImpl):
    (WebKit::WebIOSurfaceLayerImpl::~WebIOSurfaceLayerImpl):
    (WebKit::WebIOSurfaceLayerImpl::setIOSurfaceProperties):
    (WebKit::WebIOSurfaceLayerImpl::layer):
    * src/WebIOSurfaceLayerImpl.h: Copied from Source/Platform/chromium/public/WebImageLayer.h.
    (WebCore):
    (WebKit):
    (WebIOSurfaceLayerImpl):
    * src/WebImageLayerImpl.cpp: Renamed from Source/WebKit/chromium/src/WebSolidColorLayer.cpp.
    (WebKit):
    (WebKit::WebImageLayer::create):
    (WebKit::WebImageLayerImpl::WebImageLayerImpl):
    (WebKit::WebImageLayerImpl::~WebImageLayerImpl):
    (WebKit::WebImageLayerImpl::layer):
    (WebKit::WebImageLayerImpl::setBitmap):
    * src/WebImageLayerImpl.h: Renamed from Source/WebKit/chromium/src/WebImageLayer.cpp.
    (WebCore):
    (WebKit):
    (WebImageLayerImpl):
    * src/WebLayer.cpp: Removed.
    * src/WebLayerImpl.cpp:
    (WebKit::WebLayer::create):
    (WebKit::WebLayerImpl::WebLayerImpl):
    (WebKit::WebLayerImpl::~WebLayerImpl):
    (WebKit):
    (WebKit::WebLayerImpl::invalidateRect):
    (WebKit::WebLayerImpl::invalidate):
    (WebKit::WebLayerImpl::addChild):
    (WebKit::WebLayerImpl::insertChild):
    (WebKit::WebLayerImpl::replaceChild):
    (WebKit::WebLayerImpl::setChildren):
    (WebKit::WebLayerImpl::removeFromParent):
    (WebKit::WebLayerImpl::removeAllChildren):
    (WebKit::WebLayerImpl::setAnchorPoint):
    (WebKit::WebLayerImpl::anchorPoint):
    (WebKit::WebLayerImpl::setAnchorPointZ):
    (WebKit::WebLayerImpl::anchorPointZ):
    (WebKit::WebLayerImpl::setBounds):
    (WebKit::WebLayerImpl::bounds):
    (WebKit::WebLayerImpl::setMasksToBounds):
    (WebKit::WebLayerImpl::masksToBounds):
    (WebKit::WebLayerImpl::setMaskLayer):
    (WebKit::WebLayerImpl::setReplicaLayer):
    (WebKit::WebLayerImpl::setOpacity):
    (WebKit::WebLayerImpl::opacity):
    (WebKit::WebLayerImpl::setOpaque):
    (WebKit::WebLayerImpl::opaque):
    (WebKit::WebLayerImpl::setPosition):
    (WebKit::WebLayerImpl::position):
    (WebKit::WebLayerImpl::setSublayerTransform):
    (WebKit::WebLayerImpl::sublayerTransform):
    (WebKit::WebLayerImpl::setTransform):
    (WebKit::WebLayerImpl::transform):
    (WebKit::WebLayerImpl::setDrawsContent):
    (WebKit::WebLayerImpl::drawsContent):
    (WebKit::WebLayerImpl::setPreserves3D):
    (WebKit::WebLayerImpl::setUseParentBackfaceVisibility):
    (WebKit::WebLayerImpl::setBackgroundColor):
    (WebKit::WebLayerImpl::setFilters):
    (WebKit::WebLayerImpl::setBackgroundFilters):
    (WebKit::WebLayerImpl::setDebugBorderColor):
    (WebKit::WebLayerImpl::setDebugBorderWidth):
    (WebKit::WebLayerImpl::setDebugName):
    (WebKit::WebLayerImpl::setAnimationDelegate):
    (WebKit::WebLayerImpl::addAnimation):
    (WebKit::WebLayerImpl::removeAnimation):
    (WebKit::WebLayerImpl::pauseAnimation):
    (WebKit::WebLayerImpl::suspendAnimations):
    (WebKit::WebLayerImpl::resumeAnimations):
    (WebKit::WebLayerImpl::hasActiveAnimation):
    (WebKit::WebLayerImpl::transferAnimationsTo):
    (WebKit::WebLayerImpl::setForceRenderSurface):
    (WebKit::WebLayerImpl::clearRenderSurface):
    (WebKit::WebLayerImpl::setScrollPosition):
    (WebKit::WebLayerImpl::setScrollable):
    (WebKit::WebLayerImpl::setHaveWheelEventHandlers):
    (WebKit::WebLayerImpl::setShouldScrollOnMainThread):
    (WebKit::WebLayerImpl::setNonFastScrollableRegion):
    (WebKit::WebLayerImpl::setIsContainerForFixedPositionLayers):
    (WebKit::WebLayerImpl::setFixedToContainerLayer):
    (WebKit::WebLayerImpl::layer):
    * src/WebLayerImpl.h:
    (WebCore):
    (WebLayerImpl):
    * src/WebLayerTreeView.cpp:
    (WebKit::WebLayerTreeView::setRootLayer):
    * src/WebLayerTreeViewImpl.cpp:
    (WebKit::WebLayerTreeViewImpl::create):
    * src/WebMediaPlayerClientImpl.cpp:
    (WebKit::WebMediaPlayerClientImpl::readyStateChanged):
    (WebKit::WebMediaPlayerClientImpl::repaint):
    (WebKit::WebMediaPlayerClientImpl::setOpaque):
    (WebKit::WebMediaPlayerClientImpl::platformLayer):
    (WebKit::WebMediaPlayerClientImpl::acceleratedRenderingInUse):
    * src/WebMediaPlayerClientImpl.h:
    (WebMediaPlayerClientImpl):
    * src/WebPluginContainerImpl.cpp:
    (WebKit::WebPluginContainerImpl::setBackingTextureId):
    (WebKit::WebPluginContainerImpl::setBackingIOSurfaceId):
    (WebKit::WebPluginContainerImpl::commitBackingTexture):
    (WebKit::WebPluginContainerImpl::setOpaque):
    (WebKit::WebPluginContainerImpl::platformLayer):
    * src/WebPluginContainerImpl.h:
    (WebPluginContainerImpl):
    * src/WebScrollableLayerImpl.cpp: Renamed from Source/WebKit/chromium/src/WebScrollableLayer.cpp.
    (WebKit):
    (WebKit::WebScrollableLayer::setScrollPosition):
    (WebKit::WebScrollableLayer::setScrollable):
    (WebKit::WebScrollableLayer::setHaveWheelEventHandlers):
    (WebKit::WebScrollableLayer::setShouldScrollOnMainThread):
    (WebKit::WebScrollableLayer::setNonFastScrollableRegion):
    (WebKit::WebScrollableLayer::setIsContainerForFixedPositionLayers):
    (WebKit::WebScrollableLayer::setFixedToContainerLayer):
    * src/WebScrollbarLayerImpl.cpp: Renamed from Source/WebKit/chromium/src/WebScrollbarLayer.cpp.
    (WebKit):
    (WebKit::WebScrollbarLayer::create):
    (WebKit::WebScrollbarLayerImpl::WebScrollbarLayerImpl):
    (WebKit::WebScrollbarLayerImpl::~WebScrollbarLayerImpl):
    (WebKit::WebScrollbarLayerImpl::layer):
    (WebKit::WebScrollbarLayerImpl::setScrollLayer):
    * src/WebScrollbarLayerImpl.h: Copied from Source/WebKit/chromium/src/WebSolidColorLayerImpl.h.
    (WebCore):
    (WebKit):
    (WebScrollbarLayerImpl):
    * src/WebSolidColorLayerImpl.cpp:
    (WebKit::WebSolidColorLayer::create):
    (WebKit::WebSolidColorLayerImpl::WebSolidColorLayerImpl):
    (WebKit::WebSolidColorLayerImpl::layer):
    (WebKit):
    (WebKit::WebSolidColorLayerImpl::setBackgroundColor):
    * src/WebSolidColorLayerImpl.h:
    (WebCore):
    (WebKit):
    (WebSolidColorLayerImpl):
    * src/WebVideoLayerImpl.cpp: Copied from Source/WebKit/chromium/src/WebVideoLayer.cpp.
    (WebKit):
    (WebKit::WebVideoLayer::create):
    (WebKit::WebVideoLayerImpl::WebVideoLayerImpl):
    (WebKit::WebVideoLayerImpl::~WebVideoLayerImpl):
    (WebKit::WebVideoLayerImpl::layer):
    (WebKit::WebVideoLayerImpl::active):
    * src/WebVideoLayerImpl.h: Renamed from Source/WebKit/chromium/src/WebVideoLayer.cpp.
    (WebCore):
    (WebKit):
    (WebVideoLayerImpl):
    * src/WebViewImpl.cpp:
    (WebKit::WebViewImpl::WebViewImpl):
    (WebKit::WebViewImpl::setRootGraphicsLayer):
    (WebKit::WebViewImpl::setIsAcceleratedCompositingActive):
    (WebKit):
    * src/WebViewImpl.h:
    * tests/ImageLayerChromiumTest.cpp:
    (WebCore::TEST):
    * tests/WebLayerTest.cpp:
    * tests/WebLayerTreeViewTest.cpp:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@126076 268f45cc-cd09-0410-ab3c-d52691b4dbfc
    d11fbbaa