| Index: third_party/WebKit/Source/modules/csspaint/PaintWorkletGlobalScope.cpp
 | 
| diff --git a/third_party/WebKit/Source/modules/csspaint/PaintWorkletGlobalScope.cpp b/third_party/WebKit/Source/modules/csspaint/PaintWorkletGlobalScope.cpp
 | 
| index 20c8688b9b8949bd3a2610b857ddb814d70c7b69..253e21493dc82ae0687383daaf38fe8338d4c2fa 100644
 | 
| --- a/third_party/WebKit/Source/modules/csspaint/PaintWorkletGlobalScope.cpp
 | 
| +++ b/third_party/WebKit/Source/modules/csspaint/PaintWorkletGlobalScope.cpp
 | 
| @@ -23,10 +23,12 @@ PaintWorkletGlobalScope* PaintWorkletGlobalScope::Create(
 | 
|      const KURL& url,
 | 
|      const String& user_agent,
 | 
|      PassRefPtr<SecurityOrigin> security_origin,
 | 
| -    v8::Isolate* isolate) {
 | 
| +    v8::Isolate* isolate,
 | 
| +    PaintWorkletPendingGeneratorRegistry* pending_generator_registry) {
 | 
|    PaintWorkletGlobalScope* paint_worklet_global_scope =
 | 
|        new PaintWorkletGlobalScope(frame, url, user_agent,
 | 
| -                                  std::move(security_origin), isolate);
 | 
| +                                  std::move(security_origin), isolate,
 | 
| +                                  pending_generator_registry);
 | 
|    paint_worklet_global_scope->ScriptController()->InitializeContextIfNeeded();
 | 
|    MainThreadDebugger::Instance()->ContextCreated(
 | 
|        paint_worklet_global_scope->ScriptController()->GetScriptState(),
 | 
| @@ -40,22 +42,26 @@ PaintWorkletGlobalScope::PaintWorkletGlobalScope(
 | 
|      const KURL& url,
 | 
|      const String& user_agent,
 | 
|      PassRefPtr<SecurityOrigin> security_origin,
 | 
| -    v8::Isolate* isolate)
 | 
| +    v8::Isolate* isolate,
 | 
| +    PaintWorkletPendingGeneratorRegistry* pending_generator_registry)
 | 
|      : MainThreadWorkletGlobalScope(frame,
 | 
|                                     url,
 | 
|                                     user_agent,
 | 
|                                     std::move(security_origin),
 | 
| -                                   isolate) {}
 | 
| +                                   isolate),
 | 
| +      pending_generator_registry_(pending_generator_registry) {}
 | 
|  
 | 
|  PaintWorkletGlobalScope::~PaintWorkletGlobalScope() {}
 | 
|  
 | 
|  void PaintWorkletGlobalScope::Dispose() {
 | 
|    MainThreadDebugger::Instance()->ContextWillBeDestroyed(
 | 
|        ScriptController()->GetScriptState());
 | 
| +
 | 
|    // Explicitly clear the paint defininitions to break a reference cycle
 | 
|    // between them and this global scope.
 | 
|    paint_definitions_.clear();
 | 
|  
 | 
| +  pending_generator_registry_ = nullptr;
 | 
|    WorkletGlobalScope::Dispose();
 | 
|  }
 | 
|  
 | 
| @@ -193,17 +199,7 @@ void PaintWorkletGlobalScope::registerPaint(const String& name,
 | 
|        native_invalidation_properties, custom_invalidation_properties,
 | 
|        input_argument_types, has_alpha);
 | 
|    paint_definitions_.Set(name, definition);
 | 
| -
 | 
| -  // Set the definition on any pending generators.
 | 
| -  GeneratorHashSet* set = pending_generators_.at(name);
 | 
| -  if (set) {
 | 
| -    for (const auto& generator : *set) {
 | 
| -      if (generator) {
 | 
| -        generator->SetDefinition(definition);
 | 
| -      }
 | 
| -    }
 | 
| -  }
 | 
| -  pending_generators_.erase(name);
 | 
| +  pending_generator_registry_->SetDefinition(name, definition);
 | 
|  }
 | 
|  
 | 
|  CSSPaintDefinition* PaintWorkletGlobalScope::FindDefinition(
 | 
| @@ -211,19 +207,9 @@ CSSPaintDefinition* PaintWorkletGlobalScope::FindDefinition(
 | 
|    return paint_definitions_.at(name);
 | 
|  }
 | 
|  
 | 
| -void PaintWorkletGlobalScope::AddPendingGenerator(
 | 
| -    const String& name,
 | 
| -    CSSPaintImageGeneratorImpl* generator) {
 | 
| -  Member<GeneratorHashSet>& set =
 | 
| -      pending_generators_.insert(name, nullptr).stored_value->value;
 | 
| -  if (!set)
 | 
| -    set = new GeneratorHashSet;
 | 
| -  set->insert(generator);
 | 
| -}
 | 
| -
 | 
|  DEFINE_TRACE(PaintWorkletGlobalScope) {
 | 
|    visitor->Trace(paint_definitions_);
 | 
| -  visitor->Trace(pending_generators_);
 | 
| +  visitor->Trace(pending_generator_registry_);
 | 
|    MainThreadWorkletGlobalScope::Trace(visitor);
 | 
|  }
 | 
|  
 | 
| 
 |