+2014-06-22 Tim Horton <timothy_horton@apple.com>
+
+ Thread some references through the remote layer tree code
+ https://bugs.webkit.org/show_bug.cgi?id=134177
+
+ Reviewed by Zalan Bujtas.
+
+ A first pass at references for never-null things (first pass because I didn't touch the collections).
+ Things that aren't straightforward reference-threading:
+
+ * Shared/mac/RemoteLayerBackingStoreCollection.h:
+ * Shared/mac/RemoteLayerBackingStoreCollection.mm:
+ Remove the unimplemented/nonexistant RemoteLayerBackingStoreCollection::create.
+ Make RemoteLayerBackingStoreCollection constructor not take a context, because m_context is never used.
+
+ * WebProcess/WebPage/mac/RemoteLayerTreeContext.h:
+ * WebProcess/WebPage/mac/RemoteLayerTreeContext.mm:
+ Factor out grabbing the PlatformLayerID in a few places.
+
+ * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.h:
+ * WebProcess/WebPage/mac/RemoteLayerTreeDrawingArea.mm:
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.h:
+ * WebProcess/WebPage/mac/TiledCoreAnimationDrawingArea.mm:
+ Use WebPage::mainFrameView() instead of WebPage::corePage()->mainFrame().view().
+
+ * Shared/mac/RemoteLayerTreeTransaction.h:
+ * Shared/mac/RemoteLayerTreeTransaction.mm:
+ * WebProcess/WebPage/DrawingArea.cpp:
+ * WebProcess/WebPage/DrawingArea.h:
+ * WebProcess/WebPage/WebPage.cpp:
+ * WebProcess/WebPage/mac/GraphicsLayerCARemote.h:
+ * WebProcess/WebPage/mac/PlatformCALayerRemote.cpp:
+ * WebProcess/WebPage/mac/PlatformCALayerRemote.h:
+ * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.h:
+ * WebProcess/WebPage/mac/PlatformCALayerRemoteCustom.mm:om):
+ * WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.cpp:
+ * WebProcess/WebPage/mac/PlatformCALayerRemoteTiledBacking.h:
+ * Shared/mac/RemoteLayerBackingStore.mm:
+ References.
+
2014-06-22 Anders Carlsson <andersca@apple.com>
Replace a couple of uses of bind with lambdas
if (!m_layer)
return;
if (RemoteLayerTreeContext* context = m_layer->context())
- context->backingStoreWasCreated(this);
+ context->backingStoreWasCreated(*this);
}
RemoteLayerBackingStore::~RemoteLayerBackingStore()
if (!m_layer)
return;
if (RemoteLayerTreeContext* context = m_layer->context())
- context->backingStoreWillBeDestroyed(this);
+ context->backingStoreWillBeDestroyed(*this);
}
void RemoteLayerBackingStore::ensureBackingStore(FloatSize size, float scale, bool acceleratesDrawing, bool isOpaque)
m_lastDisplayTime = std::chrono::steady_clock::now();
if (RemoteLayerTreeContext* context = m_layer->context())
- context->backingStoreWillBeDisplayed(this);
+ context->backingStoreWillBeDisplayed(*this);
// Make the previous front buffer non-volatile early, so that we can dirty the whole layer if it comes back empty.
setBufferVolatility(BufferType::Front, false);
WTF_MAKE_NONCOPYABLE(RemoteLayerBackingStoreCollection);
WTF_MAKE_FAST_ALLOCATED;
public:
- static std::unique_ptr<RemoteLayerBackingStoreCollection> create(RemoteLayerTreeContext*);
- RemoteLayerBackingStoreCollection(RemoteLayerTreeContext*);
+ RemoteLayerBackingStoreCollection();
- void backingStoreWasCreated(RemoteLayerBackingStore*);
- void backingStoreWillBeDestroyed(RemoteLayerBackingStore*);
+ void backingStoreWasCreated(RemoteLayerBackingStore&);
+ void backingStoreWillBeDestroyed(RemoteLayerBackingStore&);
- void backingStoreWillBeDisplayed(RemoteLayerBackingStore*);
- void backingStoreBecameUnreachable(RemoteLayerBackingStore*);
+ void backingStoreWillBeDisplayed(RemoteLayerBackingStore&);
+ void backingStoreBecameUnreachable(RemoteLayerBackingStore&);
void willFlushLayers();
void willCommitLayerTree(RemoteLayerTreeTransaction&);
HashSet<RemoteLayerBackingStore*> m_unparentedBackingStore;
HashSet<RemoteLayerBackingStore*> m_reachableBackingStoreInLatestFlush;
- RemoteLayerTreeContext* m_context;
WebCore::Timer<RemoteLayerBackingStoreCollection> m_volatilityTimer;
bool m_inLayerFlush;
namespace WebKit {
-RemoteLayerBackingStoreCollection::RemoteLayerBackingStoreCollection(RemoteLayerTreeContext* context)
- : m_context(context)
- , m_volatilityTimer(this, &RemoteLayerBackingStoreCollection::volatilityTimerFired)
+RemoteLayerBackingStoreCollection::RemoteLayerBackingStoreCollection()
+ : m_volatilityTimer(this, &RemoteLayerBackingStoreCollection::volatilityTimerFired)
, m_inLayerFlush(false)
{
}
}
for (auto& backingStore : newlyUnreachableBackingStore)
- backingStoreBecameUnreachable(backingStore);
+ backingStoreBecameUnreachable(*backingStore);
if (!newlyUnreachableBackingStore.isEmpty())
scheduleVolatilityTimer();
}
-void RemoteLayerBackingStoreCollection::backingStoreWasCreated(RemoteLayerBackingStore* backingStore)
+void RemoteLayerBackingStoreCollection::backingStoreWasCreated(RemoteLayerBackingStore& backingStore)
{
- m_liveBackingStore.add(backingStore);
+ m_liveBackingStore.add(&backingStore);
}
-void RemoteLayerBackingStoreCollection::backingStoreWillBeDestroyed(RemoteLayerBackingStore* backingStore)
+void RemoteLayerBackingStoreCollection::backingStoreWillBeDestroyed(RemoteLayerBackingStore& backingStore)
{
- m_liveBackingStore.remove(backingStore);
- m_unparentedBackingStore.remove(backingStore);
+ m_liveBackingStore.remove(&backingStore);
+ m_unparentedBackingStore.remove(&backingStore);
}
-void RemoteLayerBackingStoreCollection::backingStoreWillBeDisplayed(RemoteLayerBackingStore* backingStore)
+void RemoteLayerBackingStoreCollection::backingStoreWillBeDisplayed(RemoteLayerBackingStore& backingStore)
{
ASSERT(m_inLayerFlush);
- m_reachableBackingStoreInLatestFlush.add(backingStore);
+ m_reachableBackingStoreInLatestFlush.add(&backingStore);
- auto backingStoreIter = m_unparentedBackingStore.find(backingStore);
+ auto backingStoreIter = m_unparentedBackingStore.find(&backingStore);
if (backingStoreIter == m_unparentedBackingStore.end())
return;
- m_liveBackingStore.add(backingStore);
+ m_liveBackingStore.add(&backingStore);
m_unparentedBackingStore.remove(backingStoreIter);
}
return markBackingStoreVolatileImmediately(backingStore);
}
-void RemoteLayerBackingStoreCollection::backingStoreBecameUnreachable(RemoteLayerBackingStore* backingStore)
+void RemoteLayerBackingStoreCollection::backingStoreBecameUnreachable(RemoteLayerBackingStore& backingStore)
{
- ASSERT(backingStore->layer());
+ ASSERT(backingStore.layer());
- auto backingStoreIter = m_liveBackingStore.find(backingStore);
+ auto backingStoreIter = m_liveBackingStore.find(&backingStore);
if (backingStoreIter == m_liveBackingStore.end())
return;
- m_unparentedBackingStore.add(backingStore);
+ m_unparentedBackingStore.add(&backingStore);
m_liveBackingStore.remove(backingStoreIter);
// If a layer with backing store is removed from the tree, mark it as having changed backing store, so that
// on the commit which returns it to the tree, we serialize the backing store (despite possibly not painting).
- backingStore->layer()->properties().notePropertiesChanged(RemoteLayerTreeTransaction::BackingStoreChanged);
+ backingStore.layer()->properties().notePropertiesChanged(RemoteLayerTreeTransaction::BackingStoreChanged);
// This will not succeed in marking all buffers as volatile, because the commit unparenting the layer hasn't
// made it to the UI process yet. The volatility timer will finish marking the remaining buffers later.
- markBackingStoreVolatileImmediately(*backingStore);
+ markBackingStoreVolatileImmediately(backingStore);
}
void RemoteLayerBackingStoreCollection::volatilityTimerFired(WebCore::Timer<RemoteLayerBackingStoreCollection>&)
WebCore::GraphicsLayer::PlatformLayerID rootLayerID() const { return m_rootLayerID; }
void setRootLayerID(WebCore::GraphicsLayer::PlatformLayerID);
- void layerPropertiesChanged(PlatformCALayerRemote*);
+ void layerPropertiesChanged(PlatformCALayerRemote&);
void setCreatedLayers(Vector<LayerCreationProperties>);
void setDestroyedLayerIDs(Vector<WebCore::GraphicsLayer::PlatformLayerID>);
void setLayerIDsWithNewlyUnreachableBackingStore(Vector<WebCore::GraphicsLayer::PlatformLayerID>);
m_rootLayerID = rootLayerID;
}
-void RemoteLayerTreeTransaction::layerPropertiesChanged(PlatformCALayerRemote* remoteLayer)
+void RemoteLayerTreeTransaction::layerPropertiesChanged(PlatformCALayerRemote& remoteLayer)
{
- m_changedLayers.append(remoteLayer);
+ m_changedLayers.append(&remoteLayer);
}
void RemoteLayerTreeTransaction::setCreatedLayers(Vector<LayerCreationProperties> createdLayers)
namespace WebKit {
-std::unique_ptr<DrawingArea> DrawingArea::create(WebPage* webPage, const WebPageCreationParameters& parameters)
+std::unique_ptr<DrawingArea> DrawingArea::create(WebPage& webPage, const WebPageCreationParameters& parameters)
{
switch (parameters.drawingAreaType) {
#if PLATFORM(COCOA)
return nullptr;
}
-DrawingArea::DrawingArea(DrawingAreaType type, WebPage* webPage)
+DrawingArea::DrawingArea(DrawingAreaType type, WebPage& webPage)
: m_type(type)
, m_webPage(webPage)
{
WTF_MAKE_NONCOPYABLE(DrawingArea);
public:
- static std::unique_ptr<DrawingArea> create(WebPage*, const WebPageCreationParameters&);
+ static std::unique_ptr<DrawingArea> create(WebPage&, const WebPageCreationParameters&);
virtual ~DrawingArea();
DrawingAreaType type() const { return m_type; }
virtual void setLayerHostingMode(LayerHostingMode) { }
protected:
- DrawingArea(DrawingAreaType, WebPage*);
+ DrawingArea(DrawingAreaType, WebPage&);
DrawingAreaType m_type;
- WebPage* m_webPage;
+ WebPage& m_webPage;
private:
// Message handlers.
m_page = std::make_unique<Page>(pageClients);
- m_drawingArea = DrawingArea::create(this, parameters);
+ m_drawingArea = DrawingArea::create(*this, parameters);
m_drawingArea->setPaintingEnabled(false);
m_pageOverlayController.initialize();
class GraphicsLayerCARemote final : public WebCore::GraphicsLayerCA {
public:
- GraphicsLayerCARemote(WebCore::GraphicsLayerClient& client, RemoteLayerTreeContext* context)
+ GraphicsLayerCARemote(WebCore::GraphicsLayerClient& client, RemoteLayerTreeContext& context)
: GraphicsLayerCA(client)
, m_context(context)
{
// PlatformCALayerRemote can't currently proxy directly composited image contents, so opt out of this optimization.
virtual bool shouldDirectlyCompositeImage(WebCore::Image*) const override { return false; }
- RemoteLayerTreeContext* m_context;
+ RemoteLayerTreeContext& m_context;
};
GRAPHICSLAYER_TYPE_CASTS(GraphicsLayerCARemote, isGraphicsLayerCARemote());
namespace WebKit {
-PassRefPtr<PlatformCALayerRemote> PlatformCALayerRemote::create(LayerType layerType, PlatformCALayerClient* owner, RemoteLayerTreeContext* context)
+PassRefPtr<PlatformCALayerRemote> PlatformCALayerRemote::create(LayerType layerType, PlatformCALayerClient* owner, RemoteLayerTreeContext& context)
{
RefPtr<PlatformCALayerRemote> layer;
else
layer = adoptRef(new PlatformCALayerRemote(layerType, owner, context));
- context->layerWasCreated(layer.get(), layerType);
+ context.layerWasCreated(*layer, layerType);
return layer.release();
}
-PassRefPtr<PlatformCALayerRemote> PlatformCALayerRemote::create(PlatformLayer *platformLayer, PlatformCALayerClient* owner, RemoteLayerTreeContext* context)
+PassRefPtr<PlatformCALayerRemote> PlatformCALayerRemote::create(PlatformLayer *platformLayer, PlatformCALayerClient* owner, RemoteLayerTreeContext& context)
{
RefPtr<PlatformCALayerRemote> layer = adoptRef(new PlatformCALayerRemoteCustom(static_cast<PlatformLayer*>(platformLayer), owner, context));
- context->layerWasCreated(layer.get(), LayerTypeCustom);
+ context.layerWasCreated(*layer, LayerTypeCustom);
return layer.release();
}
-PassRefPtr<PlatformCALayerRemote> PlatformCALayerRemote::create(const PlatformCALayerRemote& other, WebCore::PlatformCALayerClient* owner, RemoteLayerTreeContext* context)
+PassRefPtr<PlatformCALayerRemote> PlatformCALayerRemote::create(const PlatformCALayerRemote& other, WebCore::PlatformCALayerClient* owner, RemoteLayerTreeContext& context)
{
RefPtr<PlatformCALayerRemote> layer = adoptRef(new PlatformCALayerRemote(other, owner, context));
- context->layerWasCreated(layer.get(), other.layerType());
+ context.layerWasCreated(*layer, other.layerType());
return layer.release();
}
-PlatformCALayerRemote::PlatformCALayerRemote(LayerType layerType, PlatformCALayerClient* owner, RemoteLayerTreeContext* context)
+PlatformCALayerRemote::PlatformCALayerRemote(LayerType layerType, PlatformCALayerClient* owner, RemoteLayerTreeContext& context)
: PlatformCALayer(layerType, owner)
, m_superlayer(nullptr)
, m_maskLayer(nullptr)
, m_acceleratesDrawing(false)
- , m_context(context)
+ , m_context(&context)
{
if (owner)
m_properties.contentsScale = owner->platformCALayerDeviceScaleFactor();
}
-PlatformCALayerRemote::PlatformCALayerRemote(const PlatformCALayerRemote& other, PlatformCALayerClient* owner, RemoteLayerTreeContext* context)
+PlatformCALayerRemote::PlatformCALayerRemote(const PlatformCALayerRemote& other, PlatformCALayerClient* owner, RemoteLayerTreeContext& context)
: PlatformCALayer(other.layerType(), owner)
, m_properties(other.m_properties)
, m_superlayer(nullptr)
, m_maskLayer(nullptr)
, m_acceleratesDrawing(other.acceleratesDrawing())
- , m_context(context)
+ , m_context(&context)
{
}
PassRefPtr<PlatformCALayer> PlatformCALayerRemote::clone(PlatformCALayerClient* client) const
{
- RefPtr<PlatformCALayerRemote> clone = PlatformCALayerRemote::create(*this, client, m_context);
+ RefPtr<PlatformCALayerRemote> clone = PlatformCALayerRemote::create(*this, client, *m_context);
clone->m_properties.notePropertiesChanged(static_cast<RemoteLayerTreeTransaction::LayerChange>(m_properties.everChangedProperties & ~RemoteLayerTreeTransaction::BackingStoreChanged));
toPlatformCALayerRemote(layer.get())->m_superlayer = nullptr;
if (m_context)
- m_context->layerWillBeDestroyed(this);
+ m_context->layerWillBeDestroyed(*this);
}
void PlatformCALayerRemote::recursiveBuildTransaction(RemoteLayerTreeContext& context, RemoteLayerTreeTransaction& transaction)
return;
}
- transaction.layerPropertiesChanged(this);
+ transaction.layerPropertiesChanged(*this);
}
for (size_t i = 0; i < m_children.size(); ++i) {
ASSERT(m_properties.clonedLayerID == layer->layerID());
if (!m_properties.changedProperties)
- m_context->layerPropertyChangedWhileBuildingTransaction(this);
+ m_context->layerPropertyChangedWhileBuildingTransaction(*this);
m_properties.notePropertiesChanged(RemoteLayerTreeTransaction::ClonedContentsChanged);
}
m_properties.notePropertiesChanged(RemoteLayerTreeTransaction::AnimationsChanged);
if (m_context)
- m_context->willStartAnimationOnLayer(this);
+ m_context->willStartAnimationOnLayer(*this);
}
void PlatformCALayerRemote::removeAnimationForKey(const String& key)
PassRefPtr<PlatformCALayer> PlatformCALayerRemote::createCompatibleLayer(PlatformCALayer::LayerType layerType, PlatformCALayerClient* client) const
{
- return PlatformCALayerRemote::create(layerType, client, m_context);
+ return PlatformCALayerRemote::create(layerType, client, *m_context);
}
void PlatformCALayerRemote::enumerateRectsBeingDrawn(CGContextRef context, void (^block)(CGRect))
class PlatformCALayerRemote : public WebCore::PlatformCALayer {
public:
- static PassRefPtr<PlatformCALayerRemote> create(WebCore::PlatformCALayer::LayerType, WebCore::PlatformCALayerClient*, RemoteLayerTreeContext*);
- static PassRefPtr<PlatformCALayerRemote> create(PlatformLayer *, WebCore::PlatformCALayerClient*, RemoteLayerTreeContext*);
- static PassRefPtr<PlatformCALayerRemote> create(const PlatformCALayerRemote&, WebCore::PlatformCALayerClient*, RemoteLayerTreeContext*);
+ static PassRefPtr<PlatformCALayerRemote> create(WebCore::PlatformCALayer::LayerType, WebCore::PlatformCALayerClient*, RemoteLayerTreeContext&);
+ static PassRefPtr<PlatformCALayerRemote> create(PlatformLayer *, WebCore::PlatformCALayerClient*, RemoteLayerTreeContext&);
+ static PassRefPtr<PlatformCALayerRemote> create(const PlatformCALayerRemote&, WebCore::PlatformCALayerClient*, RemoteLayerTreeContext&);
virtual ~PlatformCALayerRemote();
RemoteLayerTreeContext* context() const { return m_context; }
protected:
- PlatformCALayerRemote(WebCore::PlatformCALayer::LayerType, WebCore::PlatformCALayerClient* owner, RemoteLayerTreeContext* context);
- PlatformCALayerRemote(const PlatformCALayerRemote&, WebCore::PlatformCALayerClient*, RemoteLayerTreeContext*);
+ PlatformCALayerRemote(WebCore::PlatformCALayer::LayerType, WebCore::PlatformCALayerClient* owner, RemoteLayerTreeContext& context);
+ PlatformCALayerRemote(const PlatformCALayerRemote&, WebCore::PlatformCALayerClient*, RemoteLayerTreeContext&);
private:
virtual bool isPlatformCALayerRemote() const override { return true; }
virtual void setNeedsDisplay(const WebCore::FloatRect* dirtyRect = 0) override;
private:
- PlatformCALayerRemoteCustom(PlatformLayer*, WebCore::PlatformCALayerClient* owner, RemoteLayerTreeContext*);
+ PlatformCALayerRemoteCustom(PlatformLayer*, WebCore::PlatformCALayerClient* owner, RemoteLayerTreeContext&);
std::unique_ptr<LayerHostingContext> m_layerHostingContext;
RetainPtr<PlatformLayer> m_platformLayer;
namespace WebKit {
static NSString * const platformCALayerPointer = @"WKPlatformCALayer";
-PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom(PlatformLayer* customLayer, PlatformCALayerClient* owner, RemoteLayerTreeContext* context)
+PlatformCALayerRemoteCustom::PlatformCALayerRemoteCustom(PlatformLayer* customLayer, PlatformCALayerClient* owner, RemoteLayerTreeContext& context)
: PlatformCALayerRemote(LayerTypeCustom, owner, context)
{
- switch (context->layerHostingMode()) {
+ switch (context.layerHostingMode()) {
case LayerHostingMode::InProcess:
m_layerHostingContext = LayerHostingContext::createForPort(WebProcess::shared().compositingRenderServerPort());
break;
namespace WebKit {
-PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking(LayerType layerType, PlatformCALayerClient* owner, RemoteLayerTreeContext* context)
+PlatformCALayerRemoteTiledBacking::PlatformCALayerRemoteTiledBacking(LayerType layerType, PlatformCALayerClient* owner, RemoteLayerTreeContext& context)
: PlatformCALayerRemote(layerType, owner, context)
{
m_tileController = TileController::create(this);
virtual ~PlatformCALayerRemoteTiledBacking();
private:
- PlatformCALayerRemoteTiledBacking(WebCore::PlatformCALayer::LayerType, WebCore::PlatformCALayerClient* owner, RemoteLayerTreeContext*);
+ PlatformCALayerRemoteTiledBacking(WebCore::PlatformCALayer::LayerType, WebCore::PlatformCALayerClient* owner, RemoteLayerTreeContext&);
virtual WebCore::TiledBacking* tiledBacking() override { return m_tileController.get(); }
// FIXME: This class doesn't do much now. Roll into RemoteLayerTreeDrawingArea?
class RemoteLayerTreeContext : public WebCore::GraphicsLayerFactory {
public:
- explicit RemoteLayerTreeContext(WebPage*);
+ explicit RemoteLayerTreeContext(WebPage&);
~RemoteLayerTreeContext();
- void layerWasCreated(PlatformCALayerRemote*, WebCore::PlatformCALayer::LayerType);
- void layerWillBeDestroyed(PlatformCALayerRemote*);
+ void layerWasCreated(PlatformCALayerRemote&, WebCore::PlatformCALayer::LayerType);
+ void layerWillBeDestroyed(PlatformCALayerRemote&);
- void backingStoreWasCreated(RemoteLayerBackingStore*);
- void backingStoreWillBeDestroyed(RemoteLayerBackingStore*);
- void backingStoreWillBeDisplayed(RemoteLayerBackingStore*);
+ void backingStoreWasCreated(RemoteLayerBackingStore&);
+ void backingStoreWillBeDestroyed(RemoteLayerBackingStore&);
+ void backingStoreWillBeDisplayed(RemoteLayerBackingStore&);
WebCore::LayerPool& layerPool() { return m_layerPool; }
- LayerHostingMode layerHostingMode() const { return m_webPage->layerHostingMode(); }
+ LayerHostingMode layerHostingMode() const { return m_webPage.layerHostingMode(); }
void buildTransaction(RemoteLayerTreeTransaction&, WebCore::PlatformCALayer& rootLayer);
- void layerPropertyChangedWhileBuildingTransaction(PlatformCALayerRemote*);
+ void layerPropertyChangedWhileBuildingTransaction(PlatformCALayerRemote&);
// From the UI process
void animationDidStart(WebCore::GraphicsLayer::PlatformLayerID, const String& key, double startTime);
- void willStartAnimationOnLayer(PlatformCALayerRemote*);
+ void willStartAnimationOnLayer(PlatformCALayerRemote&);
RemoteLayerBackingStoreCollection& backingStoreCollection() { return m_backingStoreCollection; }
// WebCore::GraphicsLayerFactory
virtual std::unique_ptr<WebCore::GraphicsLayer> createGraphicsLayer(WebCore::GraphicsLayerClient&) override;
- WebPage* m_webPage;
+ WebPage& m_webPage;
Vector<RemoteLayerTreeTransaction::LayerCreationProperties> m_createdLayers;
Vector<WebCore::GraphicsLayer::PlatformLayerID> m_destroyedLayers;
namespace WebKit {
-RemoteLayerTreeContext::RemoteLayerTreeContext(WebPage* webPage)
+RemoteLayerTreeContext::RemoteLayerTreeContext(WebPage& webPage)
: m_webPage(webPage)
- , m_backingStoreCollection(this)
, m_currentTransaction(nullptr)
{
}
layer->clearContext();
}
-void RemoteLayerTreeContext::layerWasCreated(PlatformCALayerRemote* layer, PlatformCALayer::LayerType type)
+void RemoteLayerTreeContext::layerWasCreated(PlatformCALayerRemote& layer, PlatformCALayer::LayerType type)
{
+ GraphicsLayer::PlatformLayerID layerID = layer.layerID();
+
RemoteLayerTreeTransaction::LayerCreationProperties creationProperties;
- creationProperties.layerID = layer->layerID();
+ creationProperties.layerID = layerID;
creationProperties.type = type;
if (type == PlatformCALayer::LayerTypeCustom)
- creationProperties.hostingContextID = layer->hostingContextID();
+ creationProperties.hostingContextID = layer.hostingContextID();
m_createdLayers.append(creationProperties);
- m_liveLayers.add(layer->layerID(), layer);
+ m_liveLayers.add(layerID, &layer);
}
-void RemoteLayerTreeContext::layerWillBeDestroyed(PlatformCALayerRemote* layer)
+void RemoteLayerTreeContext::layerWillBeDestroyed(PlatformCALayerRemote& layer)
{
- m_liveLayers.remove(layer->layerID());
+ GraphicsLayer::PlatformLayerID layerID = layer.layerID();
+
+ m_liveLayers.remove(layerID);
- ASSERT(!m_destroyedLayers.contains(layer->layerID()));
- m_destroyedLayers.append(layer->layerID());
+ ASSERT(!m_destroyedLayers.contains(layerID));
+ m_destroyedLayers.append(layerID);
- m_layersAwaitingAnimationStart.remove(layer->layerID());
+ m_layersAwaitingAnimationStart.remove(layerID);
}
-void RemoteLayerTreeContext::backingStoreWasCreated(RemoteLayerBackingStore* backingStore)
+void RemoteLayerTreeContext::backingStoreWasCreated(RemoteLayerBackingStore& backingStore)
{
m_backingStoreCollection.backingStoreWasCreated(backingStore);
}
-void RemoteLayerTreeContext::backingStoreWillBeDestroyed(RemoteLayerBackingStore* backingStore)
+void RemoteLayerTreeContext::backingStoreWillBeDestroyed(RemoteLayerBackingStore& backingStore)
{
m_backingStoreCollection.backingStoreWillBeDestroyed(backingStore);
}
-void RemoteLayerTreeContext::backingStoreWillBeDisplayed(RemoteLayerBackingStore* backingStore)
+void RemoteLayerTreeContext::backingStoreWillBeDisplayed(RemoteLayerBackingStore& backingStore)
{
m_backingStoreCollection.backingStoreWillBeDisplayed(backingStore);
}
std::unique_ptr<GraphicsLayer> RemoteLayerTreeContext::createGraphicsLayer(GraphicsLayerClient& client)
{
- return std::make_unique<GraphicsLayerCARemote>(client, this);
+ return std::make_unique<GraphicsLayerCARemote>(client, *this);
}
void RemoteLayerTreeContext::buildTransaction(RemoteLayerTreeTransaction& transaction, PlatformCALayer& rootLayer)
transaction.setDestroyedLayerIDs(std::move(m_destroyedLayers));
}
-void RemoteLayerTreeContext::layerPropertyChangedWhileBuildingTransaction(PlatformCALayerRemote* layer)
+void RemoteLayerTreeContext::layerPropertyChangedWhileBuildingTransaction(PlatformCALayerRemote& layer)
{
if (m_currentTransaction)
m_currentTransaction->layerPropertiesChanged(layer);
}
-void RemoteLayerTreeContext::willStartAnimationOnLayer(PlatformCALayerRemote* layer)
+void RemoteLayerTreeContext::willStartAnimationOnLayer(PlatformCALayerRemote& layer)
{
- m_layersAwaitingAnimationStart.add(layer->layerID(), layer);
+ m_layersAwaitingAnimationStart.add(layer.layerID(), &layer);
}
void RemoteLayerTreeContext::animationDidStart(WebCore::GraphicsLayer::PlatformLayerID layerID, const String& key, double startTime)
class RemoteLayerTreeDrawingArea : public DrawingArea, public WebCore::GraphicsLayerClient {
friend class RemoteLayerTreeDisplayRefreshMonitor;
public:
- RemoteLayerTreeDrawingArea(WebPage*, const WebPageCreationParameters&);
+ RemoteLayerTreeDrawingArea(WebPage&, const WebPageCreationParameters&);
virtual ~RemoteLayerTreeDrawingArea();
private:
namespace WebKit {
-RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea(WebPage* webPage, const WebPageCreationParameters&)
+RemoteLayerTreeDrawingArea::RemoteLayerTreeDrawingArea(WebPage& webPage, const WebPageCreationParameters&)
: DrawingArea(DrawingAreaTypeRemoteLayerTree, webPage)
, m_remoteLayerTreeContext(std::make_unique<RemoteLayerTreeContext>(webPage))
, m_rootLayer(GraphicsLayer::create(graphicsLayerFactory(), *this))
, m_displayRefreshMonitorsToNotify(nullptr)
, m_currentTransactionID(0)
{
- webPage->corePage()->settings().setForceCompositingMode(true);
+ webPage.corePage()->settings().setForceCompositingMode(true);
#if PLATFORM(IOS)
- webPage->corePage()->settings().setDelegatesPageScaling(true);
+ webPage.corePage()->settings().setDelegatesPageScaling(true);
#endif
m_commitQueue = dispatch_queue_create("com.apple.WebKit.WebContent.RemoteLayerTreeDrawingArea.CommitQueue", nullptr);
Vector<GraphicsLayer *> children;
if (rootLayer) {
children.append(rootLayer);
- children.append(m_webPage->pageOverlayController().viewOverlayRootLayer());
+ children.append(m_webPage.pageOverlayController().viewOverlayRootLayer());
}
m_rootLayer->setChildren(children);
}
void RemoteLayerTreeDrawingArea::updateGeometry(const IntSize& viewSize, const IntSize& layerPosition)
{
m_viewSize = viewSize;
- m_webPage->setSize(viewSize);
+ m_webPage.setSize(viewSize);
scheduleCompositingLayerFlush();
- m_webPage->send(Messages::DrawingAreaProxy::DidUpdateGeometry());
+ m_webPage.send(Messages::DrawingAreaProxy::DidUpdateGeometry());
}
bool RemoteLayerTreeDrawingArea::shouldUseTiledBackingForFrameView(const FrameView* frameView)
void RemoteLayerTreeDrawingArea::updatePreferences(const WebPreferencesStore&)
{
- Settings& settings = m_webPage->corePage()->settings();
+ Settings& settings = m_webPage.corePage()->settings();
// Fixed position elements need to be composited and create stacking contexts
// in order to be scrolled by the ScrollingCoordinator.
#if PLATFORM(IOS)
void RemoteLayerTreeDrawingArea::setDeviceScaleFactor(float deviceScaleFactor)
{
- m_webPage->setDeviceScaleFactor(deviceScaleFactor);
+ m_webPage.setDeviceScaleFactor(deviceScaleFactor);
}
#endif
if (m_isFlushingSuspended)
return;
- for (Frame* frame = &m_webPage->corePage()->mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ for (Frame* frame = &m_webPage.corePage()->mainFrame(); frame; frame = frame->tree().traverseNext()) {
FrameView* frameView = frame->view();
if (!frameView || !frameView->tiledBacking())
continue;
#if PLATFORM(IOS)
void RemoteLayerTreeDrawingArea::setExposedContentRect(const FloatRect& exposedContentRect)
{
- FrameView* frameView = m_webPage->corePage()->mainFrame().view();
+ FrameView* frameView = m_webPage.mainFrameView();
if (!frameView)
return;
void RemoteLayerTreeDrawingArea::updateScrolledExposedRect()
{
- FrameView* frameView = m_webPage->corePage()->mainFrame().view();
+ FrameView* frameView = m_webPage.mainFrameView();
if (!frameView)
return;
frameView->setExposedRect(m_scrolledExposedRect);
frameView->adjustTiledBackingCoverage();
- m_webPage->pageOverlayController().didChangeExposedRect();
+ m_webPage.pageOverlayController().didChangeExposedRect();
}
TiledBacking* RemoteLayerTreeDrawingArea::mainFrameTiledBacking() const
{
- FrameView* frameView = m_webPage->corePage()->mainFrame().view();
- return frameView ? frameView->tiledBacking() : 0;
+ FrameView* frameView = m_webPage.mainFrameView();
+ return frameView ? frameView->tiledBacking() : nullptr;
}
void RemoteLayerTreeDrawingArea::scheduleCompositingLayerFlush()
RemoteLayerBackingStoreCollection& backingStoreCollection = m_remoteLayerTreeContext->backingStoreCollection();
backingStoreCollection.willFlushLayers();
- m_webPage->layoutIfNeeded();
+ m_webPage.layoutIfNeeded();
FloatRect visibleRect(FloatPoint(), m_viewSize);
visibleRect.intersect(m_scrolledExposedRect);
- m_webPage->pageOverlayController().flushPageOverlayLayers(visibleRect);
- m_webPage->corePage()->mainFrame().view()->flushCompositingStateIncludingSubframes();
+ m_webPage.pageOverlayController().flushPageOverlayLayers(visibleRect);
+ m_webPage.mainFrameView()->flushCompositingStateIncludingSubframes();
m_rootLayer->flushCompositingStateForThisLayerOnly();
// FIXME: Minimize these transactions if nothing changed.
layerTransaction.setTransactionID(takeNextTransactionID());
m_remoteLayerTreeContext->buildTransaction(layerTransaction, *toGraphicsLayerCARemote(m_rootLayer.get())->platformCALayer());
backingStoreCollection.willCommitLayerTree(layerTransaction);
- m_webPage->willCommitLayerTree(layerTransaction);
+ m_webPage.willCommitLayerTree(layerTransaction);
RemoteScrollingCoordinatorTransaction scrollingTransaction;
#if ENABLE(ASYNC_SCROLLING)
- if (m_webPage->scrollingCoordinator())
- toRemoteScrollingCoordinator(m_webPage->scrollingCoordinator())->buildTransaction(scrollingTransaction);
+ if (m_webPage.scrollingCoordinator())
+ toRemoteScrollingCoordinator(m_webPage.scrollingCoordinator())->buildTransaction(scrollingTransaction);
#endif
m_waitingForBackingStoreSwap = true;
- m_webPage->send(Messages::RemoteLayerTreeDrawingAreaProxy::WillCommitLayerTree(layerTransaction.transactionID()));
+ m_webPage.send(Messages::RemoteLayerTreeDrawingAreaProxy::WillCommitLayerTree(layerTransaction.transactionID()));
Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree message(layerTransaction, scrollingTransaction);
- auto commitEncoder = std::make_unique<IPC::MessageEncoder>(Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree::receiverName(), Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree::name(), m_webPage->pageID());
+ auto commitEncoder = std::make_unique<IPC::MessageEncoder>(Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree::receiverName(), Messages::RemoteLayerTreeDrawingAreaProxy::CommitLayerTree::name(), m_webPage.pageID());
commitEncoder->encode(message.arguments());
// FIXME: Move all backing store flushing management to RemoteLayerBackingStoreCollection.
void RemoteLayerTreeDrawingArea::mainFrameContentSizeChanged(const IntSize& contentsSize)
{
m_rootLayer->setSize(contentsSize);
- m_webPage->pageOverlayController().didChangeDocumentSize();
+ m_webPage.pageOverlayController().didChangeDocumentSize();
}
PassRefPtr<RemoteLayerTreeDrawingArea::BackingStoreFlusher> RemoteLayerTreeDrawingArea::BackingStoreFlusher::create(IPC::Connection* connection, std::unique_ptr<IPC::MessageEncoder> encoder, Vector<RetainPtr<CGContextRef>> contextsToFlush)
class TiledCoreAnimationDrawingArea : public DrawingArea, WebCore::LayerFlushSchedulerClient {
public:
- TiledCoreAnimationDrawingArea(WebPage*, const WebPageCreationParameters&);
+ TiledCoreAnimationDrawingArea(WebPage&, const WebPageCreationParameters&);
virtual ~TiledCoreAnimationDrawingArea();
virtual void viewStateDidChange(WebCore::ViewState::Flags changed) override;
namespace WebKit {
-TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea(WebPage* webPage, const WebPageCreationParameters& parameters)
+TiledCoreAnimationDrawingArea::TiledCoreAnimationDrawingArea(WebPage& webPage, const WebPageCreationParameters& parameters)
: DrawingArea(DrawingAreaTypeTiledCoreAnimation, webPage)
, m_layerTreeStateIsFrozen(false)
, m_layerFlushScheduler(this)
, m_scrolledExposedRect(FloatRect::infiniteRect())
, m_transientZoomScale(1)
{
- m_webPage->corePage()->settings().setForceCompositingMode(true);
+ m_webPage.corePage()->settings().setForceCompositingMode(true);
m_hostingLayer = [CALayer layer];
- [m_hostingLayer setFrame:m_webPage->bounds()];
+ [m_hostingLayer setFrame:m_webPage.bounds()];
[m_hostingLayer setOpaque:YES];
[m_hostingLayer setGeometryFlipped:YES];
LayerTreeContext layerTreeContext;
layerTreeContext.contextID = m_layerHostingContext->contextID();
- m_webPage->send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(0, layerTreeContext));
+ m_webPage.send(Messages::DrawingAreaProxy::EnterAcceleratedCompositingMode(0, layerTreeContext));
}
TiledCoreAnimationDrawingArea::~TiledCoreAnimationDrawingArea()
if (m_layerTreeStateIsFrozen)
return;
- for (Frame* frame = &m_webPage->corePage()->mainFrame(); frame; frame = frame->tree().traverseNext()) {
+ for (Frame* frame = &m_webPage.corePage()->mainFrame(); frame; frame = frame->tree().traverseNext()) {
FrameView* frameView = frame->view();
if (!frameView || !frameView->tiledBacking())
continue;
return false;
dispatchAfterEnsuringUpdatedScrollPosition([this, callbackID] {
- m_webPage->drawingArea()->forceRepaint();
- m_webPage->send(Messages::WebPageProxy::VoidCallback(callbackID));
+ m_webPage.drawingArea()->forceRepaint();
+ m_webPage.send(Messages::WebPageProxy::VoidCallback(callbackID));
});
return true;
}
void TiledCoreAnimationDrawingArea::updatePreferences(const WebPreferencesStore&)
{
- Settings& settings = m_webPage->corePage()->settings();
+ Settings& settings = m_webPage.corePage()->settings();
#if ENABLE(ASYNC_SCROLLING)
- if (AsyncScrollingCoordinator* scrollingCoordinator = toAsyncScrollingCoordinator(m_webPage->corePage()->scrollingCoordinator())) {
- bool scrollingPerformanceLoggingEnabled = m_webPage->scrollingPerformanceLoggingEnabled();
+ if (AsyncScrollingCoordinator* scrollingCoordinator = toAsyncScrollingCoordinator(m_webPage.corePage()->scrollingCoordinator())) {
+ bool scrollingPerformanceLoggingEnabled = m_webPage.scrollingPerformanceLoggingEnabled();
ScrollingThread::dispatch(bind(&ScrollingTree::setScrollingPerformanceLoggingEnabled, scrollingCoordinator->scrollingTree(), scrollingPerformanceLoggingEnabled));
}
#endif
void TiledCoreAnimationDrawingArea::mainFrameContentSizeChanged(const IntSize& size)
{
- m_webPage->pageOverlayController().didChangeDocumentSize();
+ m_webPage.pageOverlayController().didChangeDocumentSize();
}
void TiledCoreAnimationDrawingArea::updateIntrinsicContentSizeIfNeeded()
{
- if (!m_webPage->minimumLayoutSize().width())
+ if (!m_webPage.minimumLayoutSize().width())
return;
- FrameView* frameView = m_webPage->mainFrameView();
+ FrameView* frameView = m_webPage.mainFrameView();
if (!frameView)
return;
return;
m_lastSentIntrinsicContentSize = contentSize;
- m_webPage->send(Messages::DrawingAreaProxy::IntrinsicContentSizeDidChange(contentSize));
+ m_webPage.send(Messages::DrawingAreaProxy::IntrinsicContentSizeDidChange(contentSize));
}
void TiledCoreAnimationDrawingArea::dispatchAfterEnsuringUpdatedScrollPosition(std::function<void ()> function)
{
#if ENABLE(ASYNC_SCROLLING)
- if (!m_webPage->corePage()->scrollingCoordinator()) {
+ if (!m_webPage.corePage()->scrollingCoordinator()) {
function();
return;
}
- m_webPage->ref();
- m_webPage->corePage()->scrollingCoordinator()->commitTreeStateIfNeeded();
+ m_webPage.ref();
+ m_webPage.corePage()->scrollingCoordinator()->commitTreeStateIfNeeded();
if (!m_layerTreeStateIsFrozen)
m_layerFlushScheduler.suspend();
// It is possible for the drawing area to be destroyed before the bound block
// is invoked, so grab a reference to the web page here so we can access the drawing area through it.
// (The web page is already kept alive by dispatchAfterEnsuringUpdatedScrollPosition).
- WebPage* webPage = m_webPage;
+ WebPage* webPage = &m_webPage;
ScrollingThread::dispatchBarrier([this, webPage, function] {
DrawingArea* drawingArea = webPage->drawingArea();
// This gets called outside of the normal event loop so wrap in an autorelease pool
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
- m_webPage->layoutIfNeeded();
+ m_webPage.layoutIfNeeded();
updateIntrinsicContentSizeIfNeeded();
FloatRect visibleRect = [m_hostingLayer frame];
visibleRect.intersect(m_scrolledExposedRect);
- m_webPage->pageOverlayController().flushPageOverlayLayers(visibleRect);
+ m_webPage.pageOverlayController().flushPageOverlayLayers(visibleRect);
- bool returnValue = m_webPage->corePage()->mainFrame().view()->flushCompositingStateIncludingSubframes();
+ bool returnValue = m_webPage.mainFrameView()->flushCompositingStateIncludingSubframes();
#if ENABLE(ASYNC_SCROLLING)
- if (ScrollingCoordinator* scrollingCoordinator = m_webPage->corePage()->scrollingCoordinator())
+ if (ScrollingCoordinator* scrollingCoordinator = m_webPage.corePage()->scrollingCoordinator())
scrollingCoordinator->commitTreeStateIfNeeded();
#endif
void TiledCoreAnimationDrawingArea::viewStateDidChange(ViewState::Flags changed)
{
if (changed & ViewState::IsVisible) {
- if (m_webPage->isVisible())
+ if (m_webPage.isVisible())
resumePainting();
else
suspendPainting();
void TiledCoreAnimationDrawingArea::updateScrolledExposedRect()
{
- FrameView* frameView = m_webPage->corePage()->mainFrame().view();
+ FrameView* frameView = m_webPage.mainFrameView();
if (!frameView)
return;
frameView->setExposedRect(m_scrolledExposedRect);
frameView->adjustTiledBackingCoverage();
- m_webPage->pageOverlayController().didChangeExposedRect();
+ m_webPage.pageOverlayController().didChangeExposedRect();
}
void TiledCoreAnimationDrawingArea::updateGeometry(const IntSize& viewSize, const IntSize& layerPosition)
IntSize size = viewSize;
IntSize contentSize = IntSize(-1, -1);
- if (!m_webPage->minimumLayoutSize().width() || m_webPage->autoSizingShouldExpandToViewHeight())
- m_webPage->setSize(size);
+ if (!m_webPage.minimumLayoutSize().width() || m_webPage.autoSizingShouldExpandToViewHeight())
+ m_webPage.setSize(size);
- FrameView* frameView = m_webPage->mainFrameView();
+ FrameView* frameView = m_webPage.mainFrameView();
- if (m_webPage->autoSizingShouldExpandToViewHeight() && frameView)
+ if (m_webPage.autoSizingShouldExpandToViewHeight() && frameView)
frameView->setAutoSizeFixedMinimumHeight(viewSize.height());
- m_webPage->layoutIfNeeded();
+ m_webPage.layoutIfNeeded();
- if (m_webPage->minimumLayoutSize().width() && frameView) {
+ if (m_webPage.minimumLayoutSize().width() && frameView) {
contentSize = frameView->autoSizingIntrinsicContentSize();
size = contentSize;
}
[CATransaction flush];
[CATransaction synchronize];
- m_webPage->send(Messages::DrawingAreaProxy::DidUpdateGeometry());
+ m_webPage.send(Messages::DrawingAreaProxy::DidUpdateGeometry());
m_inUpdateGeometry = false;
}
void TiledCoreAnimationDrawingArea::setDeviceScaleFactor(float deviceScaleFactor)
{
- m_webPage->setDeviceScaleFactor(deviceScaleFactor);
+ m_webPage.setDeviceScaleFactor(deviceScaleFactor);
}
void TiledCoreAnimationDrawingArea::setLayerHostingMode(LayerHostingMode)
// Finally, inform the UIProcess that the context has changed.
LayerTreeContext layerTreeContext;
layerTreeContext.contextID = m_layerHostingContext->contextID();
- m_webPage->send(Messages::DrawingAreaProxy::UpdateAcceleratedCompositingMode(0, layerTreeContext));
+ m_webPage.send(Messages::DrawingAreaProxy::UpdateAcceleratedCompositingMode(0, layerTreeContext));
}
void TiledCoreAnimationDrawingArea::setColorSpace(const ColorSpaceData& colorSpace)
}
// Create a new context and set it up.
- switch (m_webPage->layerHostingMode()) {
+ switch (m_webPage.layerHostingMode()) {
case LayerHostingMode::InProcess:
m_layerHostingContext = LayerHostingContext::createForPort(WebProcess::shared().compositingRenderServerPort());
break;
[CATransaction begin];
[CATransaction setDisableActions:YES];
- [m_hostingLayer setSublayers:layer ? @[ layer, m_webPage->pageOverlayController().viewOverlayRootLayer()->platformLayer() ] : @[ ]];
+ [m_hostingLayer setSublayers:layer ? @[ layer, m_webPage.pageOverlayController().viewOverlayRootLayer()->platformLayer() ] : @[ ]];
bool hadRootLayer = !!m_rootLayer;
m_rootLayer = layer;
if (hadRootLayer != !!layer)
m_layerHostingContext->setRootLayer(layer ? m_hostingLayer.get() : 0);
- updateDebugInfoLayer(m_webPage->corePage()->settings().showTiledScrollingIndicator());
+ updateDebugInfoLayer(m_webPage.corePage()->settings().showTiledScrollingIndicator());
[CATransaction commit];
}
TiledBacking* TiledCoreAnimationDrawingArea::mainFrameTiledBacking() const
{
- FrameView* frameView = m_webPage->corePage()->mainFrame().view();
- return frameView ? frameView->tiledBacking() : 0;
+ FrameView* frameView = m_webPage.mainFrameView();
+ return frameView ? frameView->tiledBacking() : nullptr;
}
void TiledCoreAnimationDrawingArea::updateDebugInfoLayer(bool showLayer)
PlatformCALayer* TiledCoreAnimationDrawingArea::layerForTransientZoom() const
{
- RenderLayerBacking* renderViewBacking = m_webPage->mainFrameView()->renderView()->layer()->backing();
+ RenderLayerBacking* renderViewBacking = m_webPage.mainFrameView()->renderView()->layer()->backing();
if (GraphicsLayer* contentsContainmentLayer = renderViewBacking->contentsContainmentLayer())
return toGraphicsLayerCA(contentsContainmentLayer)->platformCALayer();
PlatformCALayer* TiledCoreAnimationDrawingArea::shadowLayerForTransientZoom() const
{
- RenderLayerCompositor& renderLayerCompositor = m_webPage->mainFrameView()->renderView()->compositor();
+ RenderLayerCompositor& renderLayerCompositor = m_webPage.mainFrameView()->renderView()->compositor();
if (GraphicsLayer* shadowGraphicsLayer = renderLayerCompositor.layerForContentShadow())
return toGraphicsLayerCA(shadowGraphicsLayer)->platformCALayer();
zoomLayer->setPosition(FloatPoint3D());
if (PlatformCALayer* shadowLayer = shadowLayerForTransientZoom()) {
- RenderView* renderView = m_webPage->mainFrameView()->renderView();
+ RenderView* renderView = m_webPage.mainFrameView()->renderView();
FloatRect shadowBounds = FloatRect(FloatPoint(), toFloatSize(renderView->layoutOverflowRect().maxXMaxYCorner()));
shadowBounds.scale(scale);
{
applyTransientZoomToLayers(scale, origin);
- double currentPageScale = m_webPage->pageScaleFactor();
+ double currentPageScale = m_webPage.pageScaleFactor();
if (scale > currentPageScale)
return;
- FrameView* frameView = m_webPage->mainFrameView();
+ FrameView* frameView = m_webPage.mainFrameView();
FloatRect tileCoverageRect = frameView->visibleContentRectIncludingScrollbars();
tileCoverageRect.moveBy(-origin);
tileCoverageRect.scale(currentPageScale / scale);
void TiledCoreAnimationDrawingArea::commitTransientZoom(double scale, FloatPoint origin)
{
- FrameView* frameView = m_webPage->mainFrameView();
+ FrameView* frameView = m_webPage.mainFrameView();
FloatRect visibleContentRect = frameView->visibleContentRectIncludingScrollbars();
FloatPoint constrainedOrigin = visibleContentRect.location();
layerForTransientZoom()->setTransform(finalTransform);
if (PlatformCALayer* shadowLayer = shadowLayerForTransientZoom()) {
- RenderView* renderView = m_webPage->mainFrameView()->renderView();
+ RenderView* renderView = m_webPage.mainFrameView()->renderView();
IntRect overflowRect = renderView->pixelSnappedLayoutOverflowRect();
shadowLayer->setBounds(IntRect(IntPoint(), toIntSize(overflowRect.maxXMaxYCorner())));
shadowLayer->setPosition(shadowLayer->bounds().center());
}
FloatPoint unscrolledOrigin(origin);
- FloatRect unobscuredContentRect = m_webPage->mainFrameView()->unobscuredContentRectIncludingScrollbars();
+ FloatRect unobscuredContentRect = m_webPage.mainFrameView()->unobscuredContentRectIncludingScrollbars();
unscrolledOrigin.moveBy(-unobscuredContentRect.location());
- m_webPage->scalePage(scale, roundedIntPoint(-unscrolledOrigin));
+ m_webPage.scalePage(scale, roundedIntPoint(-unscrolledOrigin));
m_transientZoomScale = 1;
flushLayers();
}