OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> | 2 * Copyright (C) 1998, 1999 Torben Weis <weis@kde.org> |
3 * 1999 Lars Knoll <knoll@kde.org> | 3 * 1999 Lars Knoll <knoll@kde.org> |
4 * 1999 Antti Koivisto <koivisto@kde.org> | 4 * 1999 Antti Koivisto <koivisto@kde.org> |
5 * 2000 Dirk Mueller <mueller@kde.org> | 5 * 2000 Dirk Mueller <mueller@kde.org> |
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. | 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) | 7 * (C) 2006 Graham Dennis (graham.dennis@gmail.com) |
8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) | 8 * (C) 2006 Alexey Proskuryakov (ap@nypop.com) |
9 * Copyright (C) 2009 Google Inc. All rights reserved. | 9 * Copyright (C) 2009 Google Inc. All rights reserved. |
10 * | 10 * |
(...skipping 29 matching lines...) Expand all Loading... |
40 #include "core/fetch/ResourceFetcher.h" | 40 #include "core/fetch/ResourceFetcher.h" |
41 #include "core/fetch/ResourceLoadPriorityOptimizer.h" | 41 #include "core/fetch/ResourceLoadPriorityOptimizer.h" |
42 #include "core/frame/FrameHost.h" | 42 #include "core/frame/FrameHost.h" |
43 #include "core/frame/LocalFrame.h" | 43 #include "core/frame/LocalFrame.h" |
44 #include "core/frame/Settings.h" | 44 #include "core/frame/Settings.h" |
45 #include "core/html/HTMLFrameElement.h" | 45 #include "core/html/HTMLFrameElement.h" |
46 #include "core/html/HTMLPlugInElement.h" | 46 #include "core/html/HTMLPlugInElement.h" |
47 #include "core/html/parser/TextResourceDecoder.h" | 47 #include "core/html/parser/TextResourceDecoder.h" |
48 #include "core/inspector/InspectorInstrumentation.h" | 48 #include "core/inspector/InspectorInstrumentation.h" |
49 #include "core/inspector/InspectorTraceEvents.h" | 49 #include "core/inspector/InspectorTraceEvents.h" |
| 50 #include "core/layout/Layer.h" |
50 #include "core/layout/LayoutCounter.h" | 51 #include "core/layout/LayoutCounter.h" |
51 #include "core/layout/LayoutTheme.h" | 52 #include "core/layout/LayoutTheme.h" |
52 #include "core/layout/compositing/CompositedLayerMapping.h" | 53 #include "core/layout/compositing/CompositedLayerMapping.h" |
53 #include "core/layout/compositing/CompositedSelectionBound.h" | 54 #include "core/layout/compositing/CompositedSelectionBound.h" |
54 #include "core/layout/compositing/RenderLayerCompositor.h" | 55 #include "core/layout/compositing/LayerCompositor.h" |
55 #include "core/loader/FrameLoader.h" | 56 #include "core/loader/FrameLoader.h" |
56 #include "core/loader/FrameLoaderClient.h" | 57 #include "core/loader/FrameLoaderClient.h" |
57 #include "core/page/Chrome.h" | 58 #include "core/page/Chrome.h" |
58 #include "core/page/ChromeClient.h" | 59 #include "core/page/ChromeClient.h" |
59 #include "core/page/EventHandler.h" | 60 #include "core/page/EventHandler.h" |
60 #include "core/page/FocusController.h" | 61 #include "core/page/FocusController.h" |
61 #include "core/page/FrameTree.h" | 62 #include "core/page/FrameTree.h" |
62 #include "core/page/Page.h" | 63 #include "core/page/Page.h" |
63 #include "core/page/scrolling/ScrollingCoordinator.h" | 64 #include "core/page/scrolling/ScrollingCoordinator.h" |
64 #include "core/paint/FramePainter.h" | 65 #include "core/paint/FramePainter.h" |
65 #include "core/rendering/RenderEmbeddedObject.h" | 66 #include "core/rendering/RenderEmbeddedObject.h" |
66 #include "core/rendering/RenderLayer.h" | |
67 #include "core/rendering/RenderListBox.h" | 67 #include "core/rendering/RenderListBox.h" |
68 #include "core/rendering/RenderPart.h" | 68 #include "core/rendering/RenderPart.h" |
69 #include "core/rendering/RenderScrollbar.h" | 69 #include "core/rendering/RenderScrollbar.h" |
70 #include "core/rendering/RenderScrollbarPart.h" | 70 #include "core/rendering/RenderScrollbarPart.h" |
71 #include "core/rendering/RenderView.h" | 71 #include "core/rendering/RenderView.h" |
72 #include "core/rendering/TextAutosizer.h" | 72 #include "core/rendering/TextAutosizer.h" |
73 #include "core/rendering/style/RenderStyle.h" | 73 #include "core/rendering/style/RenderStyle.h" |
74 #include "core/rendering/svg/RenderSVGRoot.h" | 74 #include "core/rendering/svg/RenderSVGRoot.h" |
75 #include "core/svg/SVGDocumentExtensions.h" | 75 #include "core/svg/SVGDocumentExtensions.h" |
76 #include "core/svg/SVGSVGElement.h" | 76 #include "core/svg/SVGSVGElement.h" |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
378 setScrollbarsSuppressed(true); | 378 setScrollbarsSuppressed(true); |
379 } | 379 } |
380 | 380 |
381 bool FrameView::didFirstLayout() const | 381 bool FrameView::didFirstLayout() const |
382 { | 382 { |
383 return !m_firstLayout; | 383 return !m_firstLayout; |
384 } | 384 } |
385 | 385 |
386 void FrameView::invalidateRect(const IntRect& rect) | 386 void FrameView::invalidateRect(const IntRect& rect) |
387 { | 387 { |
388 // For querying RenderLayer::compositingState() when invalidating scrollbars
. | 388 // For querying Layer::compositingState() when invalidating scrollbars. |
389 // FIXME: do all scrollbar invalidations after layout of all frames is compl
ete. It's currently not recursively true. | 389 // FIXME: do all scrollbar invalidations after layout of all frames is compl
ete. It's currently not recursively true. |
390 DisableCompositingQueryAsserts disabler; | 390 DisableCompositingQueryAsserts disabler; |
391 if (!parent()) { | 391 if (!parent()) { |
392 if (HostWindow* window = hostWindow()) | 392 if (HostWindow* window = hostWindow()) |
393 window->invalidateRect(rect); | 393 window->invalidateRect(rect); |
394 return; | 394 return; |
395 } | 395 } |
396 | 396 |
397 RenderPart* renderer = m_frame->ownerRenderer(); | 397 RenderPart* renderer = m_frame->ownerRenderer(); |
398 if (!renderer) | 398 if (!renderer) |
(...skipping 535 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
934 Document* document = m_frame->document(); | 934 Document* document = m_frame->document(); |
935 bool inSubtreeLayout = isSubtreeLayout(); | 935 bool inSubtreeLayout = isSubtreeLayout(); |
936 RenderObject* rootForThisLayout = inSubtreeLayout ? m_layoutSubtreeRoot : do
cument->renderView(); | 936 RenderObject* rootForThisLayout = inSubtreeLayout ? m_layoutSubtreeRoot : do
cument->renderView(); |
937 if (!rootForThisLayout) { | 937 if (!rootForThisLayout) { |
938 // FIXME: Do we need to set m_size here? | 938 // FIXME: Do we need to set m_size here? |
939 ASSERT_NOT_REACHED(); | 939 ASSERT_NOT_REACHED(); |
940 return; | 940 return; |
941 } | 941 } |
942 | 942 |
943 FontCachePurgePreventer fontCachePurgePreventer; | 943 FontCachePurgePreventer fontCachePurgePreventer; |
944 RenderLayer* layer; | 944 Layer* layer; |
945 { | 945 { |
946 TemporaryChange<bool> changeSchedulingEnabled(m_layoutSchedulingEnabled,
false); | 946 TemporaryChange<bool> changeSchedulingEnabled(m_layoutSchedulingEnabled,
false); |
947 | 947 |
948 m_nestedLayoutCount++; | 948 m_nestedLayoutCount++; |
949 if (!inSubtreeLayout) { | 949 if (!inSubtreeLayout) { |
950 Document* document = m_frame->document(); | 950 Document* document = m_frame->document(); |
951 Node* body = document->body(); | 951 Node* body = document->body(); |
952 if (body && body->renderer()) { | 952 if (body && body->renderer()) { |
953 if (isHTMLFrameSetElement(*body)) { | 953 if (isHTMLFrameSetElement(*body)) { |
954 body->renderer()->setChildNeedsLayout(); | 954 body->renderer()->setChildNeedsLayout(); |
(...skipping 378 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1333 | 1333 |
1334 for (Frame* child = m_frame->tree().firstChild(); child; child = child->tree
().nextSibling()) { | 1334 for (Frame* child = m_frame->tree().firstChild(); child; child = child->tree
().nextSibling()) { |
1335 if (!child->isLocalFrame()) | 1335 if (!child->isLocalFrame()) |
1336 continue; | 1336 continue; |
1337 if (FrameView* view = toLocalFrame(child)->view()) | 1337 if (FrameView* view = toLocalFrame(child)->view()) |
1338 view->scrollContentsIfNeededRecursive(); | 1338 view->scrollContentsIfNeededRecursive(); |
1339 } | 1339 } |
1340 } | 1340 } |
1341 | 1341 |
1342 // FIXME: If we had a flag to force invalidations in a whole subtree, we could g
et rid of this function (crbug.com/410097). | 1342 // FIXME: If we had a flag to force invalidations in a whole subtree, we could g
et rid of this function (crbug.com/410097). |
1343 static void setShouldDoFullPaintInvalidationIncludingNonCompositingDescendants(c
onst RenderLayer* layer) | 1343 static void setShouldDoFullPaintInvalidationIncludingNonCompositingDescendants(c
onst Layer* layer) |
1344 { | 1344 { |
1345 layer->renderer()->setShouldDoFullPaintInvalidation(); | 1345 layer->renderer()->setShouldDoFullPaintInvalidation(); |
1346 | 1346 |
1347 for (RenderLayer* child = layer->firstChild(); child; child = child->nextSib
ling()) { | 1347 for (Layer* child = layer->firstChild(); child; child = child->nextSibling()
) { |
1348 // Don't include paint invalidation rects for composited child layers; t
hey will paint themselves and have a different origin. | 1348 // Don't include paint invalidation rects for composited child layers; t
hey will paint themselves and have a different origin. |
1349 if (child->isPaintInvalidationContainer()) | 1349 if (child->isPaintInvalidationContainer()) |
1350 continue; | 1350 continue; |
1351 | 1351 |
1352 setShouldDoFullPaintInvalidationIncludingNonCompositingDescendants(child
); | 1352 setShouldDoFullPaintInvalidationIncludingNonCompositingDescendants(child
); |
1353 } | 1353 } |
1354 } | 1354 } |
1355 | 1355 |
1356 bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta) | 1356 bool FrameView::scrollContentsFastPath(const IntSize& scrollDelta) |
1357 { | 1357 { |
1358 if (!contentsInCompositedLayer() || hasSlowRepaintObjects()) | 1358 if (!contentsInCompositedLayer() || hasSlowRepaintObjects()) |
1359 return false; | 1359 return false; |
1360 | 1360 |
1361 if (!m_viewportConstrainedObjects || m_viewportConstrainedObjects->isEmpty()
) { | 1361 if (!m_viewportConstrainedObjects || m_viewportConstrainedObjects->isEmpty()
) { |
1362 InspectorInstrumentation::didScroll(m_frame.get()); | 1362 InspectorInstrumentation::didScroll(m_frame.get()); |
1363 return true; | 1363 return true; |
1364 } | 1364 } |
1365 | 1365 |
1366 for (const auto& viewportConstrainedObject : *m_viewportConstrainedObjects)
{ | 1366 for (const auto& viewportConstrainedObject : *m_viewportConstrainedObjects)
{ |
1367 RenderObject* renderer = viewportConstrainedObject; | 1367 RenderObject* renderer = viewportConstrainedObject; |
1368 ASSERT(renderer->style()->hasViewportConstrainedPosition()); | 1368 ASSERT(renderer->style()->hasViewportConstrainedPosition()); |
1369 ASSERT(renderer->hasLayer()); | 1369 ASSERT(renderer->hasLayer()); |
1370 RenderLayer* layer = toRenderBoxModelObject(renderer)->layer(); | 1370 Layer* layer = toRenderBoxModelObject(renderer)->layer(); |
1371 | 1371 |
1372 if (layer->isPaintInvalidationContainer()) | 1372 if (layer->isPaintInvalidationContainer()) |
1373 continue; | 1373 continue; |
1374 | 1374 |
1375 if (layer->subtreeIsInvisible()) | 1375 if (layer->subtreeIsInvisible()) |
1376 continue; | 1376 continue; |
1377 | 1377 |
1378 // If the fixed layer has a blur/drop-shadow filter applied on at least
one of its parents, we cannot | 1378 // If the fixed layer has a blur/drop-shadow filter applied on at least
one of its parents, we cannot |
1379 // scroll using the fast path, otherwise the outsets of the filter will
be moved around the page. | 1379 // scroll using the fast path, otherwise the outsets of the filter will
be moved around the page. |
1380 if (layer->hasAncestorWithFilterOutsets()) | 1380 if (layer->hasAncestorWithFilterOutsets()) |
(...skipping 833 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2214 } | 2214 } |
2215 | 2215 |
2216 IntRect FrameView::windowClipRectForFrameOwner(const HTMLFrameOwnerElement* owne
rElement) const | 2216 IntRect FrameView::windowClipRectForFrameOwner(const HTMLFrameOwnerElement* owne
rElement) const |
2217 { | 2217 { |
2218 // The renderer can sometimes be null when style="display:none" interacts | 2218 // The renderer can sometimes be null when style="display:none" interacts |
2219 // with external content and plugins. | 2219 // with external content and plugins. |
2220 if (!ownerElement->renderer()) | 2220 if (!ownerElement->renderer()) |
2221 return windowClipRect(); | 2221 return windowClipRect(); |
2222 | 2222 |
2223 // If we have no layer, just return our window clip rect. | 2223 // If we have no layer, just return our window clip rect. |
2224 const RenderLayer* enclosingLayer = ownerElement->renderer()->enclosingLayer
(); | 2224 const Layer* enclosingLayer = ownerElement->renderer()->enclosingLayer(); |
2225 if (!enclosingLayer) | 2225 if (!enclosingLayer) |
2226 return windowClipRect(); | 2226 return windowClipRect(); |
2227 | 2227 |
2228 // FIXME: childrenClipRect relies on compositingState, which is not necessar
ily up to date. | 2228 // FIXME: childrenClipRect relies on compositingState, which is not necessar
ily up to date. |
2229 // https://code.google.com/p/chromium/issues/detail?id=343769 | 2229 // https://code.google.com/p/chromium/issues/detail?id=343769 |
2230 DisableCompositingQueryAsserts disabler; | 2230 DisableCompositingQueryAsserts disabler; |
2231 | 2231 |
2232 // Apply the clip from the layer. | 2232 // Apply the clip from the layer. |
2233 IntRect clipRect = contentsToWindow(pixelSnappedIntRect(enclosingLayer->clip
per().childrenClipRect())); | 2233 IntRect clipRect = contentsToWindow(pixelSnappedIntRect(enclosingLayer->clip
per().childrenClipRect())); |
2234 return intersection(clipRect, windowClipRect()); | 2234 return intersection(clipRect, windowClipRect()); |
(...skipping 1804 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4039 { | 4039 { |
4040 Settings* settings = frame().settings(); | 4040 Settings* settings = frame().settings(); |
4041 if (!settings || !settings->rootLayerScrolls()) | 4041 if (!settings || !settings->rootLayerScrolls()) |
4042 return this; | 4042 return this; |
4043 | 4043 |
4044 RenderView* renderView = this->renderView(); | 4044 RenderView* renderView = this->renderView(); |
4045 return renderView ? renderView->scrollableArea() : nullptr; | 4045 return renderView ? renderView->scrollableArea() : nullptr; |
4046 } | 4046 } |
4047 | 4047 |
4048 } // namespace blink | 4048 } // namespace blink |
OLD | NEW |