diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-09-27 12:48:26 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2018-09-27 11:11:56 +0000 |
commit | c69fdae9c762b7bdf45016bf8398f6050b7699ba (patch) | |
tree | 7f95460374822dbb18bba1f0bad1c09a1427c8a5 /chromium/third_party/blink/renderer/core/paint | |
parent | 2a19c63448c84c1805fb1a585c3651318bb86ca7 (diff) | |
download | qtwebengine-chromium-c69fdae9c762b7bdf45016bf8398f6050b7699ba.tar.gz |
BASELINE: Update Chromium to 69.0.3497.113
Change-Id: I4fb3f077682cc7eda51e9046981dcd40e0183cd6
Reviewed-by: Michal Klocek <michal.klocek@qt.io>
Diffstat (limited to 'chromium/third_party/blink/renderer/core/paint')
5 files changed, 35 insertions, 5 deletions
diff --git a/chromium/third_party/blink/renderer/core/paint/box_model_object_painter.cc b/chromium/third_party/blink/renderer/core/paint/box_model_object_painter.cc index 7cfd64eec43..526970b70ad 100644 --- a/chromium/third_party/blink/renderer/core/paint/box_model_object_painter.cc +++ b/chromium/third_party/blink/renderer/core/paint/box_model_object_painter.cc @@ -4,10 +4,12 @@ #include "third_party/blink/renderer/core/paint/box_model_object_painter.h" +#include "third_party/blink/renderer/core/layout/layout_block_flow.h" #include "third_party/blink/renderer/core/layout/layout_box_model_object.h" -#include "third_party/blink/renderer/core/layout/layout_object.h" +#include "third_party/blink/renderer/core/layout/layout_inline.h" #include "third_party/blink/renderer/core/layout/line/root_inline_box.h" #include "third_party/blink/renderer/core/paint/background_image_geometry.h" +#include "third_party/blink/renderer/core/paint/line_box_list_painter.h" #include "third_party/blink/renderer/core/paint/object_painter.h" #include "third_party/blink/renderer/core/paint/paint_info.h" #include "third_party/blink/renderer/core/paint/paint_layer.h" @@ -84,9 +86,14 @@ void BoxModelObjectPainter::PaintTextClipMask(GraphicsContext& context, flow_box_->Paint(paint_info, paint_offset - local_offset, root.LineTop(), root.LineBottom()); } else { - // FIXME: this should only have an effect for the line box list within - // |box_model_|. Change this to create a LineBoxListPainter directly. - box_model_.Paint(paint_info); + const LineBoxList* line_boxes = nullptr; + if (box_model_.IsLayoutBlockFlow()) + line_boxes = &ToLayoutBlockFlow(box_model_).LineBoxes(); + else if (box_model_.IsLayoutInline()) + line_boxes = ToLayoutInline(box_model_).LineBoxes(); + if (!line_boxes) + return; + LineBoxListPainter(*line_boxes).Paint(box_model_, paint_info, paint_offset); } } diff --git a/chromium/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc b/chromium/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc index c900e894b44..5f13a443aff 100644 --- a/chromium/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc +++ b/chromium/third_party/blink/renderer/core/paint/compositing/composited_layer_mapping.cc @@ -1447,6 +1447,11 @@ void CompositedLayerMapping::UpdateOverflowControlsHostLayerGeometry( LayoutPoint host_layer_position; if (NeedsToReparentOverflowControls()) { + // This should never be true, but for some reason it is. + // See https://crbug.com/880930. + if (!compositing_stacking_context) + return; + CompositedLayerMapping* stacking_clm = compositing_stacking_context->GetCompositedLayerMapping(); DCHECK(stacking_clm); diff --git a/chromium/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc b/chromium/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc index e50a69a5f2e..9b87b5cd9eb 100644 --- a/chromium/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc +++ b/chromium/third_party/blink/renderer/core/paint/compositing/paint_layer_compositor.cc @@ -403,6 +403,16 @@ GraphicsLayer* PaintLayerCompositor::ParentForContentLayers( return GetVisualViewport().ScrollLayer(); } +#if DCHECK_IS_ON() +static void AssertWholeTreeNotComposited(const PaintLayer& paint_layer) { + DCHECK(paint_layer.GetCompositingState() == kNotComposited); + for (PaintLayer* child = paint_layer.FirstChild(); child; + child = child->NextSibling()) { + AssertWholeTreeNotComposited(*child); + } +} +#endif + void PaintLayerCompositor::UpdateIfNeeded( DocumentLifecycle::LifecycleState target_state, CompositingReasonsStats& compositing_reasons_stats) { @@ -500,6 +510,12 @@ void PaintLayerCompositor::UpdateIfNeeded( ->Parent(); } +#if DCHECK_IS_ON() + if (update_root->GetCompositingState() != kPaintsIntoOwnBacking) { + AssertWholeTreeNotComposited(*update_root); + } +#endif + GraphicsLayerUpdater updater; updater.Update(*update_root, layers_needing_paint_invalidation); diff --git a/chromium/third_party/blink/renderer/core/paint/paint_layer.h b/chromium/third_party/blink/renderer/core/paint/paint_layer.h index 2b6736933d7..2f8f0bf9288 100644 --- a/chromium/third_party/blink/renderer/core/paint/paint_layer.h +++ b/chromium/third_party/blink/renderer/core/paint/paint_layer.h @@ -384,6 +384,8 @@ class CORE_EXPORT PaintLayer : public DisplayItemClient { // Layer::paint*() methods. PaintLayer* EnclosingLayerForPaintInvalidation() const; + // https://crbug.com/751768, this function can return nullptr sometimes. + // Always check the result before using it, don't just DCHECK. PaintLayer* EnclosingLayerForPaintInvalidationCrossingFrameBoundaries() const; bool HasAncestorWithFilterThatMovesPixels() const; diff --git a/chromium/third_party/blink/renderer/core/paint/paint_layer_stacking_node.cc b/chromium/third_party/blink/renderer/core/paint/paint_layer_stacking_node.cc index e61e03b2bdb..ae441293400 100644 --- a/chromium/third_party/blink/renderer/core/paint/paint_layer_stacking_node.cc +++ b/chromium/third_party/blink/renderer/core/paint/paint_layer_stacking_node.cc @@ -240,7 +240,7 @@ bool PaintLayerStackingNode::StyleDidChange(PaintLayer* paint_layer, const ComputedStyle* old_style) { bool was_stacking_context = false; bool was_stacked = false; - bool old_z_index = 0; + int old_z_index = 0; if (old_style) { was_stacking_context = old_style->IsStackingContext(); old_z_index = old_style->ZIndex(); |