summaryrefslogtreecommitdiffstats
path: root/WebCore/page
diff options
context:
space:
mode:
Diffstat (limited to 'WebCore/page')
-rw-r--r--WebCore/page/ChromeClient.h13
-rw-r--r--WebCore/page/Frame.cpp2
-rw-r--r--WebCore/page/FrameView.cpp11
-rw-r--r--WebCore/page/Settings.cpp30
-rw-r--r--WebCore/page/Settings.h20
-rw-r--r--WebCore/page/mac/WebCoreFrameView.h2
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