void ScrollingCoordinator::updateShouldUpdateScrollLayerPositionOnMainThread() { FrameView* frameView = m_page->mainFrame()->view(); // FIXME: Having fixed objects on the page should not trigger the slow path. setShouldUpdateScrollLayerPositionOnMainThread(frameView->hasSlowRepaintObjects() || frameView->hasFixedObjects()); }
void ScrollingCoordinator::updateShouldUpdateScrollLayerPositionOnMainThread() { FrameView* frameView = m_page->mainFrame()->view(); // FIXME: Having fixed objects on the page should not trigger the slow path. bool shouldUpdateScrollLayerPositionOnMainThread = frameView->hasSlowRepaintObjects() || frameView->hasFixedObjects(); m_scrollingTreeState->setShouldUpdateScrollLayerPositionOnMainThread(shouldUpdateScrollLayerPositionOnMainThread); scheduleTreeStateCommit(); }
MainThreadScrollingReasons ScrollingCoordinator::mainThreadScrollingReasons() const { FrameView* frameView = m_page->mainFrame()->view(); MainThreadScrollingReasons mainThreadScrollingReasons = (MainThreadScrollingReasons)0; if (m_forceMainThreadScrollLayerPositionUpdates) mainThreadScrollingReasons |= ForcedOnMainThread; if (frameView->hasSlowRepaintObjects()) mainThreadScrollingReasons |= HasSlowRepaintObjects; if (!supportsFixedPositionLayers() && frameView->hasViewportConstrainedObjects()) mainThreadScrollingReasons |= HasViewportConstrainedObjectsWithoutSupportingFixedLayers; if (supportsFixedPositionLayers() && hasNonLayerFixedObjects(frameView)) mainThreadScrollingReasons |= HasNonLayerFixedObjects; if (m_page->mainFrame()->document()->isImageDocument()) mainThreadScrollingReasons |= IsImageDocument; return mainThreadScrollingReasons; }
SynchronousScrollingReasons ScrollingCoordinator::synchronousScrollingReasons() const { FrameView* frameView = m_page->mainFrame().view(); if (!frameView) return static_cast<SynchronousScrollingReasons>(0); SynchronousScrollingReasons synchronousScrollingReasons = (SynchronousScrollingReasons)0; if (m_forceSynchronousScrollLayerPositionUpdates) synchronousScrollingReasons |= ForcedOnMainThread; if (frameView->hasSlowRepaintObjects()) synchronousScrollingReasons |= HasSlowRepaintObjects; if (!supportsFixedPositionLayers() && frameView->hasViewportConstrainedObjects()) synchronousScrollingReasons |= HasViewportConstrainedObjectsWithoutSupportingFixedLayers; if (supportsFixedPositionLayers() && hasVisibleSlowRepaintViewportConstrainedObjects(frameView)) synchronousScrollingReasons |= HasNonLayerViewportConstrainedObjects; if (m_page->mainFrame().document() && m_page->mainFrame().document()->isImageDocument()) synchronousScrollingReasons |= IsImageDocument; return synchronousScrollingReasons; }
SynchronousScrollingReasons ScrollingCoordinator::synchronousScrollingReasons(const FrameView& frameView) const { SynchronousScrollingReasons synchronousScrollingReasons = (SynchronousScrollingReasons)0; if (m_forceSynchronousScrollLayerPositionUpdates) synchronousScrollingReasons |= ForcedOnMainThread; #if ENABLE(WEB_REPLAY) InputCursor& cursor = m_page->replayController().activeInputCursor(); if (cursor.isCapturing() || cursor.isReplaying()) synchronousScrollingReasons |= ForcedOnMainThread; #endif if (frameView.hasSlowRepaintObjects()) synchronousScrollingReasons |= HasSlowRepaintObjects; if (!supportsFixedPositionLayers() && frameView.hasViewportConstrainedObjects()) synchronousScrollingReasons |= HasViewportConstrainedObjectsWithoutSupportingFixedLayers; if (supportsFixedPositionLayers() && hasVisibleSlowRepaintViewportConstrainedObjects(frameView)) synchronousScrollingReasons |= HasNonLayerViewportConstrainedObjects; if (frameView.frame().mainFrame().document() && frameView.frame().document()->isImageDocument()) synchronousScrollingReasons |= IsImageDocument; return synchronousScrollingReasons; }