summaryrefslogtreecommitdiff
path: root/Source/WebCore/rendering/RenderLayerModelObject.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-10-16 14:56:46 +0200
committerSimon Hausmann <simon.hausmann@digia.com>2012-10-16 14:57:30 +0200
commitb297e0fa5c217c9467033b7c8b46891a52870120 (patch)
tree43fc14689295e9e64f2719d05aad94e3049f6cd7 /Source/WebCore/rendering/RenderLayerModelObject.cpp
parent69d517dbfa69903d8593cc1737f0474b21e3251e (diff)
downloadqtwebkit-b297e0fa5c217c9467033b7c8b46891a52870120.tar.gz
Revert "Imported WebKit commit 0dc6cd75e1d4836eaffbb520be96fac4847cc9d2 (http://svn.webkit.org/repository/webkit/trunk@131300)"
This reverts commit 5466563f4b5b6b86523e3f89bb7f77e5b5270c78. Caused OOM issues on some CI machines :(
Diffstat (limited to 'Source/WebCore/rendering/RenderLayerModelObject.cpp')
-rw-r--r--Source/WebCore/rendering/RenderLayerModelObject.cpp178
1 files changed, 0 insertions, 178 deletions
diff --git a/Source/WebCore/rendering/RenderLayerModelObject.cpp b/Source/WebCore/rendering/RenderLayerModelObject.cpp
deleted file mode 100644
index aeb32b7a2..000000000
--- a/Source/WebCore/rendering/RenderLayerModelObject.cpp
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
- * (C) 1999 Antti Koivisto (koivisto@kde.org)
- * (C) 2005 Allan Sandfeld Jensen (kde@carewolf.com)
- * (C) 2005, 2006 Samuel Weinig (sam.weinig@gmail.com)
- * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
- * Copyright (C) 2010, 2012 Google Inc. All rights reserved.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
-
-#include "config.h"
-#include "RenderLayerModelObject.h"
-
-#include "RenderLayer.h"
-#include "RenderView.h"
-
-using namespace std;
-
-namespace WebCore {
-
-bool RenderLayerModelObject::s_wasFloating = false;
-bool RenderLayerModelObject::s_hadLayer = false;
-bool RenderLayerModelObject::s_hadTransform = false;
-bool RenderLayerModelObject::s_layerWasSelfPainting = false;
-
-RenderLayerModelObject::RenderLayerModelObject(Node* node)
- : RenderObject(node)
- , m_layer(0)
-{
-}
-
-RenderLayerModelObject::~RenderLayerModelObject()
-{
- // Our layer should have been destroyed and cleared by now
- ASSERT(!hasLayer());
- ASSERT(!m_layer);
-}
-
-void RenderLayerModelObject::destroyLayer()
-{
- ASSERT(!hasLayer()); // Callers should have already called setHasLayer(false)
- ASSERT(m_layer);
- m_layer->destroy(renderArena());
- m_layer = 0;
-}
-
-void RenderLayerModelObject::ensureLayer()
-{
- if (m_layer)
- return;
-
- m_layer = new (renderArena()) RenderLayer(this);
- setHasLayer(true);
- m_layer->insertOnlyThisLayer();
-}
-
-bool RenderLayerModelObject::hasSelfPaintingLayer() const
-{
- return m_layer && m_layer->isSelfPaintingLayer();
-}
-
-void RenderLayerModelObject::willBeDestroyed()
-{
- // RenderObject::willBeDestroyed calls back to destroyLayer() for layer destruction
- RenderObject::willBeDestroyed();
-}
-
-void RenderLayerModelObject::styleWillChange(StyleDifference diff, const RenderStyle* newStyle)
-{
- s_wasFloating = isFloating();
- s_hadLayer = hasLayer();
- s_hadTransform = hasTransform();
- if (s_hadLayer)
- s_layerWasSelfPainting = layer()->isSelfPaintingLayer();
-
- // If our z-index changes value or our visibility changes,
- // we need to dirty our stacking context's z-order list.
- RenderStyle* oldStyle = style();
- if (oldStyle && newStyle) {
- if (parent()) {
- // Do a repaint with the old style first, e.g., for example if we go from
- // having an outline to not having an outline.
- if (diff == StyleDifferenceRepaintLayer) {
- layer()->repaintIncludingDescendants();
- if (!(oldStyle->clip() == newStyle->clip()))
- layer()->clearClipRectsIncludingDescendants();
- } else if (diff == StyleDifferenceRepaint || newStyle->outlineSize() < oldStyle->outlineSize())
- repaint();
- }
-
- if (diff == StyleDifferenceLayout || diff == StyleDifferenceSimplifiedLayout) {
- // When a layout hint happens, we go ahead and do a repaint of the layer, since the layer could
- // end up being destroyed.
- if (hasLayer()) {
- if (oldStyle->position() != newStyle->position()
- || oldStyle->zIndex() != newStyle->zIndex()
- || oldStyle->hasAutoZIndex() != newStyle->hasAutoZIndex()
- || !(oldStyle->clip() == newStyle->clip())
- || oldStyle->hasClip() != newStyle->hasClip()
- || oldStyle->opacity() != newStyle->opacity()
- || oldStyle->transform() != newStyle->transform()
-#if ENABLE(CSS_FILTERS)
- || oldStyle->filter() != newStyle->filter()
-#endif
- )
- layer()->repaintIncludingDescendants();
- } else if (newStyle->hasTransform() || newStyle->opacity() < 1 || newStyle->hasFilter()) {
- // If we don't have a layer yet, but we are going to get one because of transform or opacity,
- // then we need to repaint the old position of the object.
- repaint();
- }
- }
- }
-
- RenderObject::styleWillChange(diff, newStyle);
-}
-
-void RenderLayerModelObject::styleDidChange(StyleDifference diff, const RenderStyle* oldStyle)
-{
- RenderObject::styleDidChange(diff, oldStyle);
- updateFromStyle();
-
- if (requiresLayer()) {
- if (!layer() && layerCreationAllowedForSubtree()) {
- if (s_wasFloating && isFloating())
- setChildNeedsLayout(true);
- ensureLayer();
- if (parent() && !needsLayout() && containingBlock()) {
- layer()->setRepaintStatus(NeedsFullRepaint);
- // There is only one layer to update, it is not worth using |cachedOffset| since
- // we are not sure the value will be used.
- layer()->updateLayerPositions(0);
- }
- }
- } else if (layer() && layer()->parent()) {
- setHasTransform(false); // Either a transform wasn't specified or the object doesn't support transforms, so just null out the bit.
- setHasReflection(false);
- layer()->removeOnlyThisLayer(); // calls destroyLayer() which clears m_layer
- if (s_wasFloating && isFloating())
- setChildNeedsLayout(true);
- if (s_hadTransform)
- setNeedsLayoutAndPrefWidthsRecalc();
- }
-
- if (layer()) {
- layer()->styleChanged(diff, oldStyle);
- if (s_hadLayer && layer()->isSelfPaintingLayer() != s_layerWasSelfPainting)
- setChildNeedsLayout(true);
- }
-
- if (FrameView *frameView = view()->frameView()) {
- bool newStyleIsViewportConstained = style()->hasViewportConstrainedPosition();
- bool oldStyleIsViewportConstrained = oldStyle && oldStyle->hasViewportConstrainedPosition();
- if (newStyleIsViewportConstained != oldStyleIsViewportConstrained) {
- if (newStyleIsViewportConstained && layer())
- frameView->addViewportConstrainedObject(this);
- else
- frameView->removeViewportConstrainedObject(this);
- }
- }
-}
-
-} // namespace WebCore
-