diff options
Diffstat (limited to 'WebCore/page')
-rw-r--r-- | WebCore/page/ChromeClient.h | 13 | ||||
-rw-r--r-- | WebCore/page/Frame.cpp | 2 | ||||
-rw-r--r-- | WebCore/page/FrameView.cpp | 11 | ||||
-rw-r--r-- | WebCore/page/Settings.cpp | 30 | ||||
-rw-r--r-- | WebCore/page/Settings.h | 20 | ||||
-rw-r--r-- | WebCore/page/mac/WebCoreFrameView.h | 2 |
6 files changed, 76 insertions, 2 deletions
diff --git a/WebCore/page/ChromeClient.h b/WebCore/page/ChromeClient.h index 0725f46..d224726 100644 --- a/WebCore/page/ChromeClient.h +++ b/WebCore/page/ChromeClient.h @@ -236,6 +236,19 @@ namespace WebCore { // Returns whether or not the client can render the composited layer, // regardless of the settings. virtual bool allowsAcceleratedCompositing() const { return true; } + + enum CompositingTrigger { + ThreeDTransformTrigger = 1 << 0, + VideoTrigger = 1 << 1, + PluginTrigger = 1 << 2, + CanvasTrigger = 1 << 3, + AnimationTrigger = 1 << 4, + AllTriggers = 0xFFFFFFFF + }; + typedef unsigned CompositingTriggerFlags; + + // Returns a bitfield indicating conditions that can trigger the compositor. + virtual CompositingTriggerFlags allowedCompositingTriggers() const { return static_cast<CompositingTriggerFlags>(AllTriggers); } #endif virtual bool supportsFullscreenForNode(const Node*) { return false; } diff --git a/WebCore/page/Frame.cpp b/WebCore/page/Frame.cpp index ae987b4..17062c5 100644 --- a/WebCore/page/Frame.cpp +++ b/WebCore/page/Frame.cpp @@ -738,7 +738,7 @@ void Frame::transferChildFrameToNewDocument() } // Update the frame tree. - didTransfer = newParent->tree()->transferChild(this); + didTransfer = newParent->tree()->transferChild(this) || didTransfer; // Avoid unnecessary calls to client and frame subtree if the frame ended // up on the same page and under the same parent frame. diff --git a/WebCore/page/FrameView.cpp b/WebCore/page/FrameView.cpp index 65c9920..92ee051 100644 --- a/WebCore/page/FrameView.cpp +++ b/WebCore/page/FrameView.cpp @@ -444,7 +444,16 @@ void FrameView::adjustViewSize() if (!root) return; - setContentsSize(IntSize(root->rightLayoutOverflow(), root->bottomLayoutOverflow())); + int prevScrollOriginX = scrollOriginX(); + ScrollView::setScrollOriginX(-root->leftLayoutOverflow()); + IntSize size = IntSize(root->rightLayoutOverflow() - root->leftLayoutOverflow(), root->bottomLayoutOverflow()); + // Take care of the case when contents remain but the RenderView's direction has changed. + // In which case, we need to update scroller position, for example, from leftmost to + // rightmost when direction changes from left-to-right to right-to-left. + bool directionChanged = (!prevScrollOriginX || !scrollOriginX()) && (scrollOriginX() != prevScrollOriginX); + if (size == contentsSize() && directionChanged) + ScrollView::updateScrollbars(); + setContentsSize(size); } void FrameView::applyOverflowToViewport(RenderObject* o, ScrollbarMode& hMode, ScrollbarMode& vMode) diff --git a/WebCore/page/Settings.cpp b/WebCore/page/Settings.cpp index 23103d5..d150033 100644 --- a/WebCore/page/Settings.cpp +++ b/WebCore/page/Settings.cpp @@ -159,6 +159,11 @@ Settings::Settings(Page* page) , m_downloadableBinaryFontsEnabled(true) , m_xssAuditorEnabled(false) , m_acceleratedCompositingEnabled(true) + , m_acceleratedCompositingFor3DTransformsEnabled(true) + , m_acceleratedCompositingForVideoEnabled(true) + , m_acceleratedCompositingForPluginsEnabled(true) + , m_acceleratedCompositingForCanvasEnabled(true) + , m_acceleratedCompositingForAnimationEnabled(true) , m_showDebugBorders(false) , m_showRepaintCounter(false) , m_experimentalNotificationsEnabled(false) @@ -786,6 +791,31 @@ void Settings::setAcceleratedCompositingEnabled(bool enabled) setNeedsRecalcStyleInAllFrames(m_page); } +void Settings::setAcceleratedCompositingFor3DTransformsEnabled(bool enabled) +{ + m_acceleratedCompositingFor3DTransformsEnabled = enabled; +} + +void Settings::setAcceleratedCompositingForVideoEnabled(bool enabled) +{ + m_acceleratedCompositingForVideoEnabled = enabled; +} + +void Settings::setAcceleratedCompositingForPluginsEnabled(bool enabled) +{ + m_acceleratedCompositingForPluginsEnabled = enabled; +} + +void Settings::setAcceleratedCompositingForCanvasEnabled(bool enabled) +{ + m_acceleratedCompositingForCanvasEnabled = enabled; +} + +void Settings::setAcceleratedCompositingForAnimationEnabled(bool enabled) +{ + m_acceleratedCompositingForAnimationEnabled = enabled; +} + void Settings::setShowDebugBorders(bool enabled) { if (m_showDebugBorders == enabled) diff --git a/WebCore/page/Settings.h b/WebCore/page/Settings.h index 4a761e8..5b42e89 100644 --- a/WebCore/page/Settings.h +++ b/WebCore/page/Settings.h @@ -347,6 +347,21 @@ namespace WebCore { void setAcceleratedCompositingEnabled(bool); bool acceleratedCompositingEnabled() const { return m_acceleratedCompositingEnabled; } + void setAcceleratedCompositingFor3DTransformsEnabled(bool); + bool acceleratedCompositingFor3DTransformsEnabled() const { return m_acceleratedCompositingFor3DTransformsEnabled; } + + void setAcceleratedCompositingForVideoEnabled(bool); + bool acceleratedCompositingForVideoEnabled() const { return m_acceleratedCompositingForVideoEnabled; } + + void setAcceleratedCompositingForPluginsEnabled(bool); + bool acceleratedCompositingForPluginsEnabled() const { return m_acceleratedCompositingForPluginsEnabled; } + + void setAcceleratedCompositingForCanvasEnabled(bool); + bool acceleratedCompositingForCanvasEnabled() const { return m_acceleratedCompositingForCanvasEnabled; } + + void setAcceleratedCompositingForAnimationEnabled(bool); + bool acceleratedCompositingForAnimationEnabled() const { return m_acceleratedCompositingForAnimationEnabled; } + void setShowDebugBorders(bool); bool showDebugBorders() const { return m_showDebugBorders; } @@ -517,6 +532,11 @@ namespace WebCore { bool m_downloadableBinaryFontsEnabled : 1; bool m_xssAuditorEnabled : 1; bool m_acceleratedCompositingEnabled : 1; + bool m_acceleratedCompositingFor3DTransformsEnabled : 1; + bool m_acceleratedCompositingForVideoEnabled : 1; + bool m_acceleratedCompositingForPluginsEnabled : 1; + bool m_acceleratedCompositingForCanvasEnabled : 1; + bool m_acceleratedCompositingForAnimationEnabled : 1; bool m_showDebugBorders : 1; bool m_showRepaintCounter : 1; bool m_experimentalNotificationsEnabled : 1; diff --git a/WebCore/page/mac/WebCoreFrameView.h b/WebCore/page/mac/WebCoreFrameView.h index 977b1a7..8b25102 100644 --- a/WebCore/page/mac/WebCoreFrameView.h +++ b/WebCore/page/mac/WebCoreFrameView.h @@ -33,6 +33,8 @@ namespace WebCore { - (void)setScrollingModes:(WebCore::ScrollbarMode)hMode vertical:(WebCore::ScrollbarMode)vMode andLock:(BOOL)lock; - (void)scrollingModes:(WebCore::ScrollbarMode*)hMode vertical:(WebCore::ScrollbarMode*)vMode; - (void)setScrollBarsSuppressed:(BOOL)suppressed repaintOnUnsuppress:(BOOL)repaint; +- (void)setScrollOriginX:(int)scrollOriginX; +- (int)scrollOriginX; @end @protocol WebCoreFrameView |