| Index: third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp | 
| diff --git a/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp b/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp | 
| index a703076d843449e1c822eebbbb27d2e0d3e3ffc9..0f9980266fa5593bd7375c8ef62c4066d50125e8 100644 | 
| --- a/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp | 
| +++ b/third_party/WebKit/Source/platform/graphics/paint/PaintController.cpp | 
| @@ -16,6 +16,8 @@ | 
| #include <stdio.h> | 
| #endif | 
|  | 
| +static constexpr int kMaxNumberOfSlowPathsBeforeVeto = 5; | 
| + | 
| namespace blink { | 
|  | 
| void PaintController::SetTracksRasterInvalidations(bool value) { | 
| @@ -536,7 +538,7 @@ void PaintController::CommitNewDisplayItems( | 
| !new_display_item_list_.IsEmpty()) | 
| GenerateChunkRasterInvalidationRects(new_paint_chunks_.LastChunk()); | 
|  | 
| -  SkPictureGpuAnalyzer gpu_analyzer; | 
| +  int num_slow_paths = 0; | 
|  | 
| current_cache_generation_ = | 
| DisplayItemClient::CacheGenerationOrInvalidationReason::Next(); | 
| @@ -555,8 +557,8 @@ void PaintController::CommitNewDisplayItems( | 
| Vector<const DisplayItemClient*> skipped_cache_clients; | 
| for (const auto& item : new_display_item_list_) { | 
| // No reason to continue the analysis once we have a veto. | 
| -    if (gpu_analyzer.suitableForGpuRasterization()) | 
| -      item.AnalyzeForGpuRasterization(gpu_analyzer); | 
| +    if (num_slow_paths <= kMaxNumberOfSlowPathsBeforeVeto) | 
| +      num_slow_paths += item.NumberOfSlowPaths(); | 
|  | 
| // TODO(wkorman): Only compute and append visual rect for drawings. | 
| new_display_item_list_.AppendVisualRect( | 
| @@ -594,7 +596,7 @@ void PaintController::CommitNewDisplayItems( | 
| new_display_item_list_.ShrinkToFit(); | 
| current_paint_artifact_ = PaintArtifact( | 
| std::move(new_display_item_list_), new_paint_chunks_.ReleasePaintChunks(), | 
| -      gpu_analyzer.suitableForGpuRasterization()); | 
| +      num_slow_paths <= kMaxNumberOfSlowPathsBeforeVeto); | 
| ResetCurrentListIndices(); | 
| out_of_order_item_indices_.clear(); | 
| out_of_order_chunk_indices_.clear(); | 
|  |