Convert P*, R* class allocations to MakeGarbageCollected

Convert P*, R* class allocations from new to MakeGarbageCollected

Bug: 757708
Change-Id: I9df78f5d474752188412e07c880074b7f722207e
Reviewed-on: https://chromium-review.googlesource.com/c/1350428
Commit-Queue: Keishi Hattori <keishi@chromium.org>
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Cr-Commit-Position: refs/heads/master@{#612103}
diff --git a/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc b/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc
index 2a4efb8..d667ffa 100644
--- a/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc
+++ b/third_party/blink/renderer/bindings/core/v8/rejected_promises.cc
@@ -39,6 +39,22 @@
                                         sanitize_script_errors));
   }
 
+  Message(ScriptState* script_state,
+          v8::Local<v8::Promise> promise,
+          v8::Local<v8::Value> exception,
+          const String& error_message,
+          std::unique_ptr<SourceLocation> location,
+          SanitizeScriptErrors sanitize_script_errors)
+      : script_state_(script_state),
+        promise_(script_state->GetIsolate(), promise),
+        exception_(script_state->GetIsolate(), exception),
+        error_message_(error_message),
+        location_(std::move(location)),
+        promise_rejection_id_(0),
+        collected_(false),
+        should_log_to_console_(true),
+        sanitize_script_errors_(sanitize_script_errors) {}
+
   bool IsCollected() { return collected_ || !script_state_->ContextIsValid(); }
 
   bool HasPromise(v8::Local<v8::Value> promise) {
@@ -152,22 +168,6 @@
   }
 
  private:
-  Message(ScriptState* script_state,
-          v8::Local<v8::Promise> promise,
-          v8::Local<v8::Value> exception,
-          const String& error_message,
-          std::unique_ptr<SourceLocation> location,
-          SanitizeScriptErrors sanitize_script_errors)
-      : script_state_(script_state),
-        promise_(script_state->GetIsolate(), promise),
-        exception_(script_state->GetIsolate(), exception),
-        error_message_(error_message),
-        location_(std::move(location)),
-        promise_rejection_id_(0),
-        collected_(false),
-        should_log_to_console_(true),
-        sanitize_script_errors_(sanitize_script_errors) {}
-
   static void DidCollectPromise(const v8::WeakCallbackInfo<Message>& data) {
     data.GetParameter()->collected_ = true;
     data.GetParameter()->promise_.Clear();
diff --git a/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h b/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h
index 8b1231c90..8cbe4da 100644
--- a/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h
+++ b/third_party/blink/renderer/bindings/core/v8/window_proxy_manager.h
@@ -113,10 +113,9 @@
     : public WindowProxyManagerImplHelper<RemoteFrame, RemoteWindowProxy> {
  public:
   static RemoteWindowProxyManager* Create(RemoteFrame& frame) {
-    return new RemoteWindowProxyManager(frame);
+    return MakeGarbageCollected<RemoteWindowProxyManager>(frame);
   }
 
- private:
   explicit RemoteWindowProxyManager(RemoteFrame& frame)
       : WindowProxyManagerImplHelper<RemoteFrame, RemoteWindowProxy>(
             frame,
diff --git a/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_deserializer_for_modules.cc b/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_deserializer_for_modules.cc
index 8840687..88e2a40f 100644
--- a/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_deserializer_for_modules.cc
+++ b/third_party/blink/renderer/bindings/modules/v8/serialization/v8_script_value_deserializer_for_modules.cc
@@ -59,7 +59,7 @@
           certificate_generator->FromPEM(pem_private_key, pem_certificate);
       if (!certificate)
         return nullptr;
-      return new RTCCertificate(std::move(certificate));
+      return MakeGarbageCollected<RTCCertificate>(std::move(certificate));
     }
     case kDetectedBarcodeTag: {
       String raw_value;
diff --git a/third_party/blink/renderer/core/css/css_property_value_set.cc b/third_party/blink/renderer/core/css/css_property_value_set.cc
index 2e68a95..97ca29e6 100644
--- a/third_party/blink/renderer/core/css/css_property_value_set.cc
+++ b/third_party/blink/renderer/core/css/css_property_value_set.cc
@@ -611,7 +611,7 @@
     DCHECK(!cssom_wrapper_->ParentElement());
     return cssom_wrapper_.Get();
   }
-  cssom_wrapper_ = new PropertySetCSSStyleDeclaration(*this);
+  cssom_wrapper_ = MakeGarbageCollected<PropertySetCSSStyleDeclaration>(*this);
   return cssom_wrapper_.Get();
 }
 
diff --git a/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map_test.cc b/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map_test.cc
index 3ba2bc2..30e93f2 100644
--- a/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map_test.cc
+++ b/third_party/blink/renderer/core/css/cssom/prepopulated_computed_style_property_map_test.cc
@@ -43,7 +43,7 @@
   Node* node = PageNode();
 
   PrepopulatedComputedStylePropertyMap* map =
-      new PrepopulatedComputedStylePropertyMap(
+      MakeGarbageCollected<PrepopulatedComputedStylePropertyMap>(
           GetDocument(), node->ComputedStyleRef(), node, native_properties,
           empty_custom_properties);
 
@@ -79,7 +79,7 @@
   Node* node = PageNode();
 
   PrepopulatedComputedStylePropertyMap* map =
-      new PrepopulatedComputedStylePropertyMap(
+      MakeGarbageCollected<PrepopulatedComputedStylePropertyMap>(
           GetDocument(), node->ComputedStyleRef(), node,
           empty_native_properties, custom_properties);
 
diff --git a/third_party/blink/renderer/core/css/font_face.cc b/third_party/blink/renderer/core/css/font_face.cc
index 15a5b99..85cb342a 100644
--- a/third_party/blink/renderer/core/css/font_face.cc
+++ b/third_party/blink/renderer/core/css/font_face.cc
@@ -714,8 +714,9 @@
           NOTREACHED();
         }
         RemoteFontFaceSource* source =
-            new RemoteFontFaceSource(css_font_face_, font_selector,
-                                     CSSValueToFontDisplay(display_.Get()));
+            MakeGarbageCollected<RemoteFontFaceSource>(
+                css_font_face_, font_selector,
+                CSSValueToFontDisplay(display_.Get()));
         item.Fetch(context, source);
         css_font_face_->AddSource(source);
       }
diff --git a/third_party/blink/renderer/core/css/property_registration.cc b/third_party/blink/renderer/core/css/property_registration.cc
index 7beccea..883f87f 100644
--- a/third_party/blink/renderer/core/css/property_registration.cc
+++ b/third_party/blink/renderer/core/css/property_registration.cc
@@ -160,9 +160,9 @@
     }
   }
   registry.RegisterProperty(
-      atomic_name, *new PropertyRegistration(atomic_name, syntax_descriptor,
-                                             descriptor->inherits(), initial,
-                                             std::move(initial_variable_data)));
+      atomic_name, *MakeGarbageCollected<PropertyRegistration>(
+                       atomic_name, syntax_descriptor, descriptor->inherits(),
+                       initial, std::move(initial_variable_data)));
 
   document->GetStyleEngine().CustomPropertyRegistered();
 }
diff --git a/third_party/blink/renderer/core/css/property_registration.h b/third_party/blink/renderer/core/css/property_registration.h
index 089a1b4..2986ee0 100644
--- a/third_party/blink/renderer/core/css/property_registration.h
+++ b/third_party/blink/renderer/core/css/property_registration.h
@@ -32,6 +32,12 @@
   static const PropertyRegistration* From(const ExecutionContext*,
                                           const AtomicString& property_name);
 
+  PropertyRegistration(const AtomicString& name,
+                       const CSSSyntaxDescriptor&,
+                       bool inherits,
+                       const CSSValue* initial,
+                       scoped_refptr<CSSVariableData> initial_variable_data);
+
   const CSSSyntaxDescriptor& Syntax() const { return syntax_; }
   bool Inherits() const { return inherits_; }
   const CSSValue* Initial() const { return initial_; }
@@ -47,12 +53,6 @@
  private:
   friend class ::blink::PropertyRegistry;
 
-  PropertyRegistration(const AtomicString& name,
-                       const CSSSyntaxDescriptor&,
-                       bool inherits,
-                       const CSSValue* initial,
-                       scoped_refptr<CSSVariableData> initial_variable_data);
-
   const CSSSyntaxDescriptor syntax_;
   const bool inherits_;
   const Member<const CSSValue> initial_;
diff --git a/third_party/blink/renderer/core/css/property_registry.h b/third_party/blink/renderer/core/css/property_registry.h
index cbb806a..6f7f050 100644
--- a/third_party/blink/renderer/core/css/property_registry.h
+++ b/third_party/blink/renderer/core/css/property_registry.h
@@ -16,7 +16,9 @@
   using RegistrationMap =
       HeapHashMap<AtomicString, Member<PropertyRegistration>>;
 
-  static PropertyRegistry* Create() { return new PropertyRegistry(); }
+  static PropertyRegistry* Create() {
+    return MakeGarbageCollected<PropertyRegistry>();
+  }
 
   void RegisterProperty(const AtomicString&, PropertyRegistration&);
   const PropertyRegistration* Registration(const AtomicString&) const;
diff --git a/third_party/blink/renderer/core/css/resolver/css_variable_resolver_test.cc b/third_party/blink/renderer/core/css/resolver/css_variable_resolver_test.cc
index 851f2c5..bd5d4b6 100644
--- a/third_party/blink/renderer/core/css/resolver/css_variable_resolver_test.cc
+++ b/third_party/blink/renderer/core/css/resolver/css_variable_resolver_test.cc
@@ -261,9 +261,10 @@
       token_syntax.Parse(CSSParserTokenRange(tokens), context, false);
   ASSERT_TRUE(initial_value);
   ASSERT_TRUE(initial_value->IsVariableReferenceValue());
-  PropertyRegistration* registration = new PropertyRegistration(
-      "--prop3", token_syntax, false, initial_value,
-      ToCSSVariableReferenceValue(*initial_value).VariableDataValue());
+  PropertyRegistration* registration =
+      MakeGarbageCollected<PropertyRegistration>(
+          "--prop3", token_syntax, false, initial_value,
+          ToCSSVariableReferenceValue(*initial_value).VariableDataValue());
   ASSERT_TRUE(GetDocument().GetPropertyRegistry());
   GetDocument().GetPropertyRegistry()->RegisterProperty("--prop3",
                                                         *registration);
diff --git a/third_party/blink/renderer/core/css/rule_set.h b/third_party/blink/renderer/core/css/rule_set.h
index 48ae031..6f57a02 100644
--- a/third_party/blink/renderer/core/css/rule_set.h
+++ b/third_party/blink/renderer/core/css/rule_set.h
@@ -170,7 +170,9 @@
 // ElementRuleCollector::CollectMatchingRules.
 class CORE_EXPORT RuleSet : public GarbageCollectedFinalized<RuleSet> {
  public:
-  static RuleSet* Create() { return new RuleSet; }
+  static RuleSet* Create() { return MakeGarbageCollected<RuleSet>(); }
+
+  RuleSet() : rule_count_(0) {}
 
   void AddRulesFromSheet(StyleSheetContents*,
                          const MediaQueryEvaluator&,
@@ -288,8 +290,6 @@
   using CompactRuleMap =
       HeapHashMap<AtomicString, Member<HeapVector<Member<const RuleData>>>>;
 
-  RuleSet() : rule_count_(0) {}
-
   void AddToRuleSet(const AtomicString& key, PendingRuleMap&, const RuleData*);
   void AddPageRule(StyleRulePage*);
   void AddViewportRule(StyleRuleViewport*);
@@ -307,7 +307,11 @@
 
   class PendingRuleMaps : public GarbageCollected<PendingRuleMaps> {
    public:
-    static PendingRuleMaps* Create() { return new PendingRuleMaps; }
+    static PendingRuleMaps* Create() {
+      return MakeGarbageCollected<PendingRuleMaps>();
+    }
+
+    PendingRuleMaps() = default;
 
     PendingRuleMap id_rules;
     PendingRuleMap class_rules;
@@ -315,9 +319,6 @@
     PendingRuleMap shadow_pseudo_element_rules;
 
     void Trace(blink::Visitor*);
-
-   private:
-    PendingRuleMaps() = default;
   };
 
   PendingRuleMaps* EnsurePendingRules() {
diff --git a/third_party/blink/renderer/core/dom/document.cc b/third_party/blink/renderer/core/dom/document.cc
index 67899ff..6366bf4 100644
--- a/third_party/blink/renderer/core/dom/document.cc
+++ b/third_party/blink/renderer/core/dom/document.cc
@@ -674,7 +674,7 @@
           this,
           &Document::ElementDataCacheClearTimerFired),
       timeline_(DocumentTimeline::Create(this)),
-      pending_animations_(new PendingAnimations(*this)),
+      pending_animations_(MakeGarbageCollected<PendingAnimations>(*this)),
       worklet_animation_controller_(
           MakeGarbageCollected<WorkletAnimationController>(this)),
       template_document_host_(nullptr),
@@ -6709,8 +6709,10 @@
 }
 
 ResizeObserverController& Document::EnsureResizeObserverController() {
-  if (!resize_observer_controller_)
-    resize_observer_controller_ = new ResizeObserverController();
+  if (!resize_observer_controller_) {
+    resize_observer_controller_ =
+        MakeGarbageCollected<ResizeObserverController>();
+  }
   return *resize_observer_controller_;
 }
 
@@ -7703,8 +7705,8 @@
           (disposition == mojom::FeaturePolicyDisposition::kReport ? "report"
                                                                    : "enforce"),
           SourceLocation::Capture());
-  Report* report =
-      new Report("feature-policy-violation", Url().GetString(), body);
+  Report* report = MakeGarbageCollected<Report>("feature-policy-violation",
+                                                Url().GetString(), body);
   ReportingContext::From(this)->QueueReport(report);
 
   bool is_null;
diff --git a/third_party/blink/renderer/core/dom/processing_instruction.cc b/third_party/blink/renderer/core/dom/processing_instruction.cc
index 83e4afe9..8178485 100644
--- a/third_party/blink/renderer/core/dom/processing_instruction.cc
+++ b/third_party/blink/renderer/core/dom/processing_instruction.cc
@@ -53,7 +53,7 @@
 ProcessingInstruction* ProcessingInstruction::Create(Document& document,
                                                      const String& target,
                                                      const String& data) {
-  return new ProcessingInstruction(document, target, data);
+  return MakeGarbageCollected<ProcessingInstruction>(document, target, data);
 }
 
 ProcessingInstruction::~ProcessingInstruction() = default;
diff --git a/third_party/blink/renderer/core/dom/processing_instruction.h b/third_party/blink/renderer/core/dom/processing_instruction.h
index e30343c..8341102c 100644
--- a/third_party/blink/renderer/core/dom/processing_instruction.h
+++ b/third_party/blink/renderer/core/dom/processing_instruction.h
@@ -41,6 +41,8 @@
   static ProcessingInstruction* Create(Document&,
                                        const String& target,
                                        const String& data);
+
+  ProcessingInstruction(Document&, const String& target, const String& data);
   ~ProcessingInstruction() override;
   void Trace(blink::Visitor*) override;
 
@@ -72,8 +74,6 @@
   void ClearEventListenerForXSLT();
 
  private:
-  ProcessingInstruction(Document&, const String& target, const String& data);
-
   String nodeName() const override;
   NodeType getNodeType() const override;
   Node* Clone(Document&, CloneChildrenFlag) const override;
diff --git a/third_party/blink/renderer/core/dom/pseudo_element.cc b/third_party/blink/renderer/core/dom/pseudo_element.cc
index 0d0d73a..805af53 100644
--- a/third_party/blink/renderer/core/dom/pseudo_element.cc
+++ b/third_party/blink/renderer/core/dom/pseudo_element.cc
@@ -41,7 +41,7 @@
 PseudoElement* PseudoElement::Create(Element* parent, PseudoId pseudo_id) {
   if (pseudo_id == kPseudoIdFirstLetter)
     return FirstLetterPseudoElement::Create(parent);
-  return new PseudoElement(parent, pseudo_id);
+  return MakeGarbageCollected<PseudoElement>(parent, pseudo_id);
 }
 
 const QualifiedName& PseudoElementTagName(PseudoId pseudo_id) {
diff --git a/third_party/blink/renderer/core/dom/pseudo_element.h b/third_party/blink/renderer/core/dom/pseudo_element.h
index 20f7d3e..d3da1693 100644
--- a/third_party/blink/renderer/core/dom/pseudo_element.h
+++ b/third_party/blink/renderer/core/dom/pseudo_element.h
@@ -38,6 +38,8 @@
  public:
   static PseudoElement* Create(Element* parent, PseudoId);
 
+  PseudoElement(Element*, PseudoId);
+
   scoped_refptr<ComputedStyle> CustomStyleForLayoutObject() override;
   void AttachLayoutTree(AttachContext&) override;
   bool LayoutObjectIsNeeded(const ComputedStyle&) const override;
@@ -58,9 +60,6 @@
 
   virtual void Dispose();
 
- protected:
-  PseudoElement(Element*, PseudoId);
-
  private:
   PseudoId pseudo_id_;
 };
diff --git a/third_party/blink/renderer/core/dom/pseudo_element_data.h b/third_party/blink/renderer/core/dom/pseudo_element_data.h
index 2ab87d4..76db5ac 100644
--- a/third_party/blink/renderer/core/dom/pseudo_element_data.h
+++ b/third_party/blink/renderer/core/dom/pseudo_element_data.h
@@ -14,6 +14,9 @@
 class PseudoElementData final : public GarbageCollected<PseudoElementData> {
  public:
   static PseudoElementData* Create();
+
+  PseudoElementData() = default;
+
   void SetPseudoElement(PseudoId, PseudoElement*);
   PseudoElement* GetPseudoElement(PseudoId) const;
   bool HasPseudoElements() const;
@@ -26,7 +29,6 @@
   }
 
  private:
-  PseudoElementData() = default;
   Member<PseudoElement> generated_before_;
   Member<PseudoElement> generated_after_;
   Member<PseudoElement> generated_first_letter_;
@@ -35,7 +37,7 @@
 };
 
 inline PseudoElementData* PseudoElementData::Create() {
-  return new PseudoElementData();
+  return MakeGarbageCollected<PseudoElementData>();
 }
 
 inline bool PseudoElementData::HasPseudoElements() const {
diff --git a/third_party/blink/renderer/core/dom/range.cc b/third_party/blink/renderer/core/dom/range.cc
index fd5aabf..2a626e8 100644
--- a/third_party/blink/renderer/core/dom/range.cc
+++ b/third_party/blink/renderer/core/dom/range.cc
@@ -129,7 +129,7 @@
 }
 
 Range* Range::Create(Document& owner_document) {
-  return new Range(owner_document);
+  return MakeGarbageCollected<Range>(owner_document);
 }
 
 inline Range::Range(Document& owner_document,
@@ -153,17 +153,17 @@
                      unsigned start_offset,
                      Node* end_container,
                      unsigned end_offset) {
-  return new Range(owner_document, start_container, start_offset, end_container,
-                   end_offset);
+  return MakeGarbageCollected<Range>(owner_document, start_container,
+                                     start_offset, end_container, end_offset);
 }
 
 Range* Range::Create(Document& owner_document,
                      const Position& start,
                      const Position& end) {
-  return new Range(owner_document, start.ComputeContainerNode(),
-                   start.ComputeOffsetInContainerNode(),
-                   end.ComputeContainerNode(),
-                   end.ComputeOffsetInContainerNode());
+  return MakeGarbageCollected<Range>(
+      owner_document, start.ComputeContainerNode(),
+      start.ComputeOffsetInContainerNode(), end.ComputeContainerNode(),
+      end.ComputeOffsetInContainerNode());
 }
 
 void Range::Dispose() {
diff --git a/third_party/blink/renderer/core/dom/range.h b/third_party/blink/renderer/core/dom/range.h
index 6b85d17..ec46883 100644
--- a/third_party/blink/renderer/core/dom/range.h
+++ b/third_party/blink/renderer/core/dom/range.h
@@ -61,6 +61,13 @@
                        unsigned end_offset);
   static Range* Create(Document&, const Position&, const Position&);
 
+  explicit Range(Document&);
+  Range(Document&,
+        Node* start_container,
+        unsigned start_offset,
+        Node* end_container,
+        unsigned end_offset);
+
   void Dispose();
 
   Document& OwnerDocument() const {
@@ -172,13 +179,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit Range(Document&);
-  Range(Document&,
-        Node* start_container,
-        unsigned start_offset,
-        Node* end_container,
-        unsigned end_offset);
-
   void SetDocument(Document&);
 
   void CheckNodeBA(Node*, ExceptionState&) const;
diff --git a/third_party/blink/renderer/core/editing/commands/remove_css_property_command.h b/third_party/blink/renderer/core/editing/commands/remove_css_property_command.h
index 5428e07..056f77c9 100644
--- a/third_party/blink/renderer/core/editing/commands/remove_css_property_command.h
+++ b/third_party/blink/renderer/core/editing/commands/remove_css_property_command.h
@@ -38,13 +38,15 @@
   static RemoveCSSPropertyCommand* Create(Document& document,
                                           Element* element,
                                           CSSPropertyID property) {
-    return new RemoveCSSPropertyCommand(document, element, property);
+    return MakeGarbageCollected<RemoveCSSPropertyCommand>(document, element,
+                                                          property);
   }
 
+  RemoveCSSPropertyCommand(Document&, Element*, CSSPropertyID);
+
   void Trace(blink::Visitor*) override;
 
  private:
-  RemoveCSSPropertyCommand(Document&, Element*, CSSPropertyID);
   ~RemoveCSSPropertyCommand() override;
 
   void DoApply(EditingState*) override;
diff --git a/third_party/blink/renderer/core/editing/commands/remove_format_command.h b/third_party/blink/renderer/core/editing/commands/remove_format_command.h
index 31a9e05..fcf1265 100644
--- a/third_party/blink/renderer/core/editing/commands/remove_format_command.h
+++ b/third_party/blink/renderer/core/editing/commands/remove_format_command.h
@@ -33,12 +33,12 @@
 class RemoveFormatCommand final : public CompositeEditCommand {
  public:
   static RemoveFormatCommand* Create(Document& document) {
-    return new RemoveFormatCommand(document);
+    return MakeGarbageCollected<RemoveFormatCommand>(document);
   }
 
- private:
   explicit RemoveFormatCommand(Document&);
 
+ private:
   void DoApply(EditingState*) override;
   InputEvent::InputType GetInputType() const override;
 };
diff --git a/third_party/blink/renderer/core/editing/commands/remove_node_command.h b/third_party/blink/renderer/core/editing/commands/remove_node_command.h
index 0cd1114..f4435cd 100644
--- a/third_party/blink/renderer/core/editing/commands/remove_node_command.h
+++ b/third_party/blink/renderer/core/editing/commands/remove_node_command.h
@@ -36,15 +36,15 @@
       Node* node,
       ShouldAssumeContentIsAlwaysEditable
           should_assume_content_is_always_editable) {
-    return new RemoveNodeCommand(node,
-                                 should_assume_content_is_always_editable);
+    return MakeGarbageCollected<RemoveNodeCommand>(
+        node, should_assume_content_is_always_editable);
   }
 
+  explicit RemoveNodeCommand(Node*, ShouldAssumeContentIsAlwaysEditable);
+
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit RemoveNodeCommand(Node*, ShouldAssumeContentIsAlwaysEditable);
-
   void DoApply(EditingState*) override;
   void DoUnapply() override;
 
diff --git a/third_party/blink/renderer/core/editing/commands/remove_node_preserving_children_command.h b/third_party/blink/renderer/core/editing/commands/remove_node_preserving_children_command.h
index 99aaadc3..06fc182 100644
--- a/third_party/blink/renderer/core/editing/commands/remove_node_preserving_children_command.h
+++ b/third_party/blink/renderer/core/editing/commands/remove_node_preserving_children_command.h
@@ -36,16 +36,16 @@
       Node* node,
       ShouldAssumeContentIsAlwaysEditable
           should_assume_content_is_always_editable) {
-    return new RemoveNodePreservingChildrenCommand(
+    return MakeGarbageCollected<RemoveNodePreservingChildrenCommand>(
         node, should_assume_content_is_always_editable);
   }
 
+  RemoveNodePreservingChildrenCommand(Node*,
+                                      ShouldAssumeContentIsAlwaysEditable);
+
   void Trace(blink::Visitor*) override;
 
  private:
-  RemoveNodePreservingChildrenCommand(Node*,
-                                      ShouldAssumeContentIsAlwaysEditable);
-
   void DoApply(EditingState*) override;
 
   Member<Node> node_;
diff --git a/third_party/blink/renderer/core/editing/commands/replace_node_with_span_command.h b/third_party/blink/renderer/core/editing/commands/replace_node_with_span_command.h
index 61168d6..3a07c17 100644
--- a/third_party/blink/renderer/core/editing/commands/replace_node_with_span_command.h
+++ b/third_party/blink/renderer/core/editing/commands/replace_node_with_span_command.h
@@ -43,16 +43,16 @@
 class ReplaceNodeWithSpanCommand final : public SimpleEditCommand {
  public:
   static ReplaceNodeWithSpanCommand* Create(HTMLElement* element) {
-    return new ReplaceNodeWithSpanCommand(element);
+    return MakeGarbageCollected<ReplaceNodeWithSpanCommand>(element);
   }
 
+  explicit ReplaceNodeWithSpanCommand(HTMLElement*);
+
   HTMLSpanElement* SpanElement() { return span_element_.Get(); }
 
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit ReplaceNodeWithSpanCommand(HTMLElement*);
-
   void DoApply(EditingState*) override;
   void DoUnapply() override;
 
diff --git a/third_party/blink/renderer/core/editing/commands/replace_selection_command.h b/third_party/blink/renderer/core/editing/commands/replace_selection_command.h
index f5b9a7ff..b6f1789 100644
--- a/third_party/blink/renderer/core/editing/commands/replace_selection_command.h
+++ b/third_party/blink/renderer/core/editing/commands/replace_selection_command.h
@@ -53,19 +53,20 @@
       DocumentFragment* fragment,
       CommandOptions options,
       InputEvent::InputType input_type = InputEvent::InputType::kNone) {
-    return new ReplaceSelectionCommand(document, fragment, options, input_type);
+    return MakeGarbageCollected<ReplaceSelectionCommand>(document, fragment,
+                                                         options, input_type);
   }
 
+  ReplaceSelectionCommand(Document&,
+                          DocumentFragment*,
+                          CommandOptions,
+                          InputEvent::InputType);
+
   EphemeralRange InsertedRange() const;
 
   void Trace(blink::Visitor*) override;
 
  private:
-  ReplaceSelectionCommand(Document&,
-                          DocumentFragment*,
-                          CommandOptions,
-                          InputEvent::InputType);
-
   void DoApply(EditingState*) override;
   InputEvent::InputType GetInputType() const override;
   bool IsReplaceSelectionCommand() const override;
diff --git a/third_party/blink/renderer/core/events/page_transition_event.h b/third_party/blink/renderer/core/events/page_transition_event.h
index bcfb45a..9570909 100644
--- a/third_party/blink/renderer/core/events/page_transition_event.h
+++ b/third_party/blink/renderer/core/events/page_transition_event.h
@@ -35,16 +35,21 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static PageTransitionEvent* Create() { return new PageTransitionEvent; }
+  static PageTransitionEvent* Create() {
+    return MakeGarbageCollected<PageTransitionEvent>();
+  }
   static PageTransitionEvent* Create(const AtomicString& type, bool persisted) {
-    return new PageTransitionEvent(type, persisted);
+    return MakeGarbageCollected<PageTransitionEvent>(type, persisted);
   }
   static PageTransitionEvent* Create(
       const AtomicString& type,
       const PageTransitionEventInit* initializer) {
-    return new PageTransitionEvent(type, initializer);
+    return MakeGarbageCollected<PageTransitionEvent>(type, initializer);
   }
 
+  PageTransitionEvent();
+  PageTransitionEvent(const AtomicString& type, bool persisted);
+  PageTransitionEvent(const AtomicString&, const PageTransitionEventInit*);
   ~PageTransitionEvent() override;
 
   const AtomicString& InterfaceName() const override;
@@ -54,10 +59,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PageTransitionEvent();
-  PageTransitionEvent(const AtomicString& type, bool persisted);
-  PageTransitionEvent(const AtomicString&, const PageTransitionEventInit*);
-
   bool persisted_;
 };
 
diff --git a/third_party/blink/renderer/core/events/picture_in_picture_control_event.cc b/third_party/blink/renderer/core/events/picture_in_picture_control_event.cc
index b5315ddb..17e4158 100644
--- a/third_party/blink/renderer/core/events/picture_in_picture_control_event.cc
+++ b/third_party/blink/renderer/core/events/picture_in_picture_control_event.cc
@@ -9,13 +9,13 @@
 PictureInPictureControlEvent* PictureInPictureControlEvent::Create(
     const AtomicString& type,
     String id) {
-  return new PictureInPictureControlEvent(type, id);
+  return MakeGarbageCollected<PictureInPictureControlEvent>(type, id);
 }
 
 PictureInPictureControlEvent* PictureInPictureControlEvent::Create(
     const AtomicString& type,
     const PictureInPictureControlEventInit* initializer) {
-  return new PictureInPictureControlEvent(type, initializer);
+  return MakeGarbageCollected<PictureInPictureControlEvent>(type, initializer);
 }
 
 String PictureInPictureControlEvent::id() const {
diff --git a/third_party/blink/renderer/core/events/picture_in_picture_control_event.h b/third_party/blink/renderer/core/events/picture_in_picture_control_event.h
index e4273c0c..718b80317 100644
--- a/third_party/blink/renderer/core/events/picture_in_picture_control_event.h
+++ b/third_party/blink/renderer/core/events/picture_in_picture_control_event.h
@@ -22,14 +22,14 @@
       const AtomicString&,
       const PictureInPictureControlEventInit*);
 
-  String id() const;
-  void setId(String id);
-
- private:
   PictureInPictureControlEvent(AtomicString const&, String);
   PictureInPictureControlEvent(AtomicString const&,
                                const PictureInPictureControlEventInit*);
 
+  String id() const;
+  void setId(String id);
+
+ private:
   // id_ holds the id of a PictureIncPictureControlEvent, which is used to
   // convey which custom control fired the event by being clicked.
   String id_;
diff --git a/third_party/blink/renderer/core/events/pointer_event.h b/third_party/blink/renderer/core/events/pointer_event.h
index 7f7bacb..2262640 100644
--- a/third_party/blink/renderer/core/events/pointer_event.h
+++ b/third_party/blink/renderer/core/events/pointer_event.h
@@ -17,13 +17,18 @@
   static PointerEvent* Create(const AtomicString& type,
                               const PointerEventInit* initializer,
                               TimeTicks platform_time_stamp) {
-    return new PointerEvent(type, initializer, platform_time_stamp);
+    return MakeGarbageCollected<PointerEvent>(type, initializer,
+                                              platform_time_stamp);
   }
   static PointerEvent* Create(const AtomicString& type,
                               const PointerEventInit* initializer) {
     return PointerEvent::Create(type, initializer, CurrentTimeTicks());
   }
 
+  PointerEvent(const AtomicString&,
+               const PointerEventInit*,
+               TimeTicks platform_time_stamp);
+
   int32_t pointerId() const { return pointer_id_; }
   double width() const { return width_; }
   double height() const { return height_; }
@@ -65,10 +70,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PointerEvent(const AtomicString&,
-               const PointerEventInit*,
-               TimeTicks platform_time_stamp);
-
   int32_t pointer_id_;
   double width_;
   double height_;
diff --git a/third_party/blink/renderer/core/events/pop_state_event.cc b/third_party/blink/renderer/core/events/pop_state_event.cc
index a65b3a11..c7190b0 100644
--- a/third_party/blink/renderer/core/events/pop_state_event.cc
+++ b/third_party/blink/renderer/core/events/pop_state_event.cc
@@ -71,19 +71,20 @@
 }
 
 PopStateEvent* PopStateEvent::Create() {
-  return new PopStateEvent;
+  return MakeGarbageCollected<PopStateEvent>();
 }
 
 PopStateEvent* PopStateEvent::Create(
     scoped_refptr<SerializedScriptValue> serialized_state,
     History* history) {
-  return new PopStateEvent(std::move(serialized_state), history);
+  return MakeGarbageCollected<PopStateEvent>(std::move(serialized_state),
+                                             history);
 }
 
 PopStateEvent* PopStateEvent::Create(ScriptState* script_state,
                                      const AtomicString& type,
                                      const PopStateEventInit* initializer) {
-  return new PopStateEvent(script_state, type, initializer);
+  return MakeGarbageCollected<PopStateEvent>(script_state, type, initializer);
 }
 
 void PopStateEvent::SetSerializedState(
diff --git a/third_party/blink/renderer/core/events/pop_state_event.h b/third_party/blink/renderer/core/events/pop_state_event.h
index 42c6218..05390ec 100644
--- a/third_party/blink/renderer/core/events/pop_state_event.h
+++ b/third_party/blink/renderer/core/events/pop_state_event.h
@@ -42,7 +42,11 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
+  PopStateEvent();
+  PopStateEvent(ScriptState*, const AtomicString&, const PopStateEventInit*);
+  PopStateEvent(scoped_refptr<SerializedScriptValue>, History*);
   ~PopStateEvent() override;
+
   static PopStateEvent* Create();
   static PopStateEvent* Create(scoped_refptr<SerializedScriptValue>, History*);
   static PopStateEvent* Create(ScriptState*,
@@ -61,10 +65,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PopStateEvent();
-  PopStateEvent(ScriptState*, const AtomicString&, const PopStateEventInit*);
-  PopStateEvent(scoped_refptr<SerializedScriptValue>, History*);
-
   scoped_refptr<SerializedScriptValue> serialized_state_;
   scoped_refptr<DOMWrapperWorld> world_;
   TraceWrapperV8Reference<v8::Value> state_;
diff --git a/third_party/blink/renderer/core/events/progress_event.h b/third_party/blink/renderer/core/events/progress_event.h
index 61bc31478..ca1119f7 100644
--- a/third_party/blink/renderer/core/events/progress_event.h
+++ b/third_party/blink/renderer/core/events/progress_event.h
@@ -36,18 +36,28 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static ProgressEvent* Create() { return new ProgressEvent; }
+  static ProgressEvent* Create() {
+    return MakeGarbageCollected<ProgressEvent>();
+  }
   static ProgressEvent* Create(const AtomicString& type,
                                bool length_computable,
                                unsigned long long loaded,
                                unsigned long long total) {
-    return new ProgressEvent(type, length_computable, loaded, total);
+    return MakeGarbageCollected<ProgressEvent>(type, length_computable, loaded,
+                                               total);
   }
   static ProgressEvent* Create(const AtomicString& type,
                                const ProgressEventInit* initializer) {
-    return new ProgressEvent(type, initializer);
+    return MakeGarbageCollected<ProgressEvent>(type, initializer);
   }
 
+  ProgressEvent();
+  ProgressEvent(const AtomicString& type,
+                bool length_computable,
+                unsigned long long loaded,
+                unsigned long long total);
+  ProgressEvent(const AtomicString&, const ProgressEventInit*);
+
   bool lengthComputable() const { return length_computable_; }
   unsigned long long loaded() const { return loaded_; }
   unsigned long long total() const { return total_; }
@@ -56,14 +66,6 @@
 
   void Trace(blink::Visitor*) override;
 
- protected:
-  ProgressEvent();
-  ProgressEvent(const AtomicString& type,
-                bool length_computable,
-                unsigned long long loaded,
-                unsigned long long total);
-  ProgressEvent(const AtomicString&, const ProgressEventInit*);
-
  private:
   bool length_computable_;
   unsigned long long loaded_;
diff --git a/third_party/blink/renderer/core/events/promise_rejection_event.h b/third_party/blink/renderer/core/events/promise_rejection_event.h
index 8a153a82..afcc54a 100644
--- a/third_party/blink/renderer/core/events/promise_rejection_event.h
+++ b/third_party/blink/renderer/core/events/promise_rejection_event.h
@@ -25,9 +25,14 @@
       ScriptState* state,
       const AtomicString& type,
       const PromiseRejectionEventInit* initializer) {
-    return new PromiseRejectionEvent(state, type, initializer);
+    return MakeGarbageCollected<PromiseRejectionEvent>(state, type,
+                                                       initializer);
   }
 
+  PromiseRejectionEvent(ScriptState*,
+                        const AtomicString&,
+                        const PromiseRejectionEventInit*);
+
   ScriptValue reason(ScriptState*) const;
   ScriptPromise promise(ScriptState*) const;
 
@@ -40,9 +45,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PromiseRejectionEvent(ScriptState*,
-                        const AtomicString&,
-                        const PromiseRejectionEventInit*);
   ~PromiseRejectionEvent() override;
   void Dispose();
 
diff --git a/third_party/blink/renderer/core/events/resource_progress_event.h b/third_party/blink/renderer/core/events/resource_progress_event.h
index ade713d..f38c1a6 100644
--- a/third_party/blink/renderer/core/events/resource_progress_event.h
+++ b/third_party/blink/renderer/core/events/resource_progress_event.h
@@ -52,23 +52,22 @@
                                        unsigned long long loaded,
                                        unsigned long long total,
                                        const String& url) {
-    return new ResourceProgressEvent(type, length_computable, loaded, total,
-                                     url);
+    return MakeGarbageCollected<ResourceProgressEvent>(type, length_computable,
+                                                       loaded, total, url);
   }
 
+  ResourceProgressEvent(const AtomicString& type,
+                        bool length_computable,
+                        unsigned long long loaded,
+                        unsigned long long total,
+                        const String& url);
+
   const String& url() const;
 
   const AtomicString& InterfaceName() const override;
 
   void Trace(blink::Visitor*) override;
 
- protected:
-  ResourceProgressEvent(const AtomicString& type,
-                        bool length_computable,
-                        unsigned long long loaded,
-                        unsigned long long total,
-                        const String& url);
-
  private:
   String url_;
 };
diff --git a/third_party/blink/renderer/core/execution_context/remote_security_context.cc b/third_party/blink/renderer/core/execution_context/remote_security_context.cc
index e1012fb2..7561adc 100644
--- a/third_party/blink/renderer/core/execution_context/remote_security_context.cc
+++ b/third_party/blink/renderer/core/execution_context/remote_security_context.cc
@@ -24,7 +24,7 @@
 }
 
 RemoteSecurityContext* RemoteSecurityContext::Create() {
-  return new RemoteSecurityContext();
+  return MakeGarbageCollected<RemoteSecurityContext>();
 }
 
 void RemoteSecurityContext::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/execution_context/remote_security_context.h b/third_party/blink/renderer/core/execution_context/remote_security_context.h
index 08f0b8e78..3f9b4d7 100644
--- a/third_party/blink/renderer/core/execution_context/remote_security_context.h
+++ b/third_party/blink/renderer/core/execution_context/remote_security_context.h
@@ -17,6 +17,8 @@
   USING_GARBAGE_COLLECTED_MIXIN(RemoteSecurityContext);
 
  public:
+  RemoteSecurityContext();
+
   void Trace(blink::Visitor*) override;
 
   static RemoteSecurityContext* Create();
@@ -26,9 +28,6 @@
 
   // FIXME: implement
   void DidUpdateSecurityOrigin() override {}
-
- private:
-  RemoteSecurityContext();
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
index 7580b4f..37e97dc 100644
--- a/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_page_popup_impl.cc
@@ -72,7 +72,11 @@
 class PagePopupChromeClient final : public EmptyChromeClient {
  public:
   static PagePopupChromeClient* Create(WebPagePopupImpl* popup) {
-    return new PagePopupChromeClient(popup);
+    return MakeGarbageCollected<PagePopupChromeClient>(popup);
+  }
+
+  explicit PagePopupChromeClient(WebPagePopupImpl* popup) : popup_(popup) {
+    DCHECK(popup_->WidgetClient());
   }
 
   void SetWindowRect(const IntRect& rect, LocalFrame&) override {
@@ -82,10 +86,6 @@
   bool IsPopup() override { return true; }
 
  private:
-  explicit PagePopupChromeClient(WebPagePopupImpl* popup) : popup_(popup) {
-    DCHECK(popup_->WidgetClient());
-  }
-
   void CloseWindowSoon() override { popup_->ClosePopup(); }
 
   IntRect RootWindowRect() override { return popup_->WindowRectInScreen(); }
diff --git a/third_party/blink/renderer/core/exported/web_view_impl.cc b/third_party/blink/renderer/core/exported/web_view_impl.cc
index 12817d8..cb35912 100644
--- a/third_party/blink/renderer/core/exported/web_view_impl.cc
+++ b/third_party/blink/renderer/core/exported/web_view_impl.cc
@@ -288,8 +288,8 @@
 void WebViewImpl::SetPrerendererClient(
     WebPrerendererClient* prerenderer_client) {
   DCHECK(page_);
-  ProvidePrerendererClientTo(*page_,
-                             new PrerendererClient(*page_, prerenderer_client));
+  ProvidePrerendererClientTo(*page_, MakeGarbageCollected<PrerendererClient>(
+                                         *page_, prerenderer_client));
 }
 
 WebViewImpl::WebViewImpl(WebViewClient* client,
@@ -355,7 +355,7 @@
   AllInstances().insert(this);
 
   page_importance_signals_.SetObserver(client);
-  resize_viewport_anchor_ = new ResizeViewportAnchor(*page_);
+  resize_viewport_anchor_ = MakeGarbageCollected<ResizeViewportAnchor>(*page_);
 }
 
 WebViewImpl::~WebViewImpl() {
diff --git a/third_party/blink/renderer/core/fetch/body_stream_buffer.cc b/third_party/blink/renderer/core/fetch/body_stream_buffer.cc
index c212d9f..d35b65a 100644
--- a/third_party/blink/renderer/core/fetch/body_stream_buffer.cc
+++ b/third_party/blink/renderer/core/fetch/body_stream_buffer.cc
@@ -521,7 +521,8 @@
       stream_broken_ = true;
       return nullptr;
     }
-    return new ReadableStreamBytesConsumer(script_state_, reader);
+    return MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state_,
+                                                             reader);
   }
   // We need to call these before calling CloseAndLockAndDisturb.
   const base::Optional<bool> is_closed = IsStreamClosed(exception_state);
diff --git a/third_party/blink/renderer/core/fetch/fetch_manager.cc b/third_party/blink/renderer/core/fetch/fetch_manager.cc
index 370ded0..c14847a 100644
--- a/third_party/blink/renderer/core/fetch/fetch_manager.cc
+++ b/third_party/blink/renderer/core/fetch/fetch_manager.cc
@@ -557,7 +557,7 @@
   if (response.UrlListViaServiceWorker().IsEmpty()) {
     // Note: |urlListViaServiceWorker| is empty, unless the response came from a
     // service worker, in which case it will only be empty if it was created
-    // through new Response().
+    // through MakeGarbageCollected<Response>().
     response_data->SetURLList(url_list_);
   } else {
     DCHECK(response.WasFetchedViaServiceWorker());
diff --git a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc
index 2f92f6fb..bb43d5f 100644
--- a/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc
+++ b/third_party/blink/renderer/core/fetch/readable_stream_bytes_consumer.cc
@@ -27,9 +27,13 @@
   static v8::Local<v8::Function> CreateFunction(
       ScriptState* script_state,
       ReadableStreamBytesConsumer* consumer) {
-    return (new OnFulfilled(script_state, consumer))->BindToV8Function();
+    return (MakeGarbageCollected<OnFulfilled>(script_state, consumer))
+        ->BindToV8Function();
   }
 
+  OnFulfilled(ScriptState* script_state, ReadableStreamBytesConsumer* consumer)
+      : ScriptFunction(script_state), consumer_(consumer) {}
+
   ScriptValue Call(ScriptValue v) override {
     bool done;
     v8::Local<v8::Value> item = v.V8Value();
@@ -62,9 +66,6 @@
   }
 
  private:
-  OnFulfilled(ScriptState* script_state, ReadableStreamBytesConsumer* consumer)
-      : ScriptFunction(script_state), consumer_(consumer) {}
-
   Member<ReadableStreamBytesConsumer> consumer_;
 };
 
@@ -73,9 +74,13 @@
   static v8::Local<v8::Function> CreateFunction(
       ScriptState* script_state,
       ReadableStreamBytesConsumer* consumer) {
-    return (new OnRejected(script_state, consumer))->BindToV8Function();
+    return (MakeGarbageCollected<OnRejected>(script_state, consumer))
+        ->BindToV8Function();
   }
 
+  OnRejected(ScriptState* script_state, ReadableStreamBytesConsumer* consumer)
+      : ScriptFunction(script_state), consumer_(consumer) {}
+
   ScriptValue Call(ScriptValue v) override {
     consumer_->OnRejected();
     return v;
@@ -87,9 +92,6 @@
   }
 
  private:
-  OnRejected(ScriptState* script_state, ReadableStreamBytesConsumer* consumer)
-      : ScriptFunction(script_state), consumer_(consumer) {}
-
   Member<ReadableStreamBytesConsumer> consumer_;
 };
 
diff --git a/third_party/blink/renderer/core/fetch/request.cc b/third_party/blink/renderer/core/fetch/request.cc
index fba853a..e420f2d 100644
--- a/third_party/blink/renderer/core/fetch/request.cc
+++ b/third_party/blink/renderer/core/fetch/request.cc
@@ -617,13 +617,13 @@
 }
 
 Request* Request::Create(ScriptState* script_state, FetchRequestData* request) {
-  return new Request(script_state, request);
+  return MakeGarbageCollected<Request>(script_state, request);
 }
 
 Request* Request::Create(ScriptState* script_state,
                          const WebServiceWorkerRequest& web_request) {
   FetchRequestData* data = FetchRequestData::Create(script_state, web_request);
-  return new Request(script_state, data);
+  return MakeGarbageCollected<Request>(script_state, data);
 }
 
 Request* Request::Create(
@@ -631,7 +631,7 @@
     const mojom::blink::FetchAPIRequest& fetch_api_request) {
   FetchRequestData* data =
       FetchRequestData::Create(script_state, fetch_api_request);
-  return new Request(script_state, data);
+  return MakeGarbageCollected<Request>(script_state, data);
 }
 
 bool Request::ParseCredentialsMode(
@@ -875,7 +875,7 @@
   headers->SetGuard(headers_->GetGuard());
   auto* signal = new AbortSignal(ExecutionContext::From(script_state));
   signal->Follow(signal_);
-  return new Request(script_state, request, headers, signal);
+  return MakeGarbageCollected<Request>(script_state, request, headers, signal);
 }
 
 FetchRequestData* Request::PassRequestData(ScriptState* script_state,
diff --git a/third_party/blink/renderer/core/fetch/request.h b/third_party/blink/renderer/core/fetch/request.h
index fea6f2f..e51937d 100644
--- a/third_party/blink/renderer/core/fetch/request.h
+++ b/third_party/blink/renderer/core/fetch/request.h
@@ -55,6 +55,9 @@
   static Request* Create(ScriptState*, const WebServiceWorkerRequest&);
   static Request* Create(ScriptState*, const mojom::blink::FetchAPIRequest&);
 
+  Request(ScriptState*, FetchRequestData*, Headers*, AbortSignal*);
+  Request(ScriptState*, FetchRequestData*);
+
   // Returns false if |credentials_mode| doesn't represent a valid credentials
   // mode.
   static bool ParseCredentialsMode(const String& credentials_mode,
@@ -91,9 +94,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  Request(ScriptState*, FetchRequestData*, Headers*, AbortSignal*);
-  Request(ScriptState*, FetchRequestData*);
-
   const FetchRequestData* GetRequest() const { return request_; }
   static Request* CreateRequestWithRequestOrString(ScriptState*,
                                                    Request*,
diff --git a/third_party/blink/renderer/core/fetch/response.cc b/third_party/blink/renderer/core/fetch/response.cc
index 47475c8..8816b18 100644
--- a/third_party/blink/renderer/core/fetch/response.cc
+++ b/third_party/blink/renderer/core/fetch/response.cc
@@ -246,7 +246,8 @@
   // "3. Let |r| be a new Response object, associated with a new response.
   // "4. Set |r|'s headers to a new Headers object whose list is
   // |r|'s response's header list, and guard is "response" "
-  Response* r = new Response(ExecutionContext::From(script_state));
+  Response* r =
+      MakeGarbageCollected<Response>(ExecutionContext::From(script_state));
   // "5. Set |r|'s response's status to |init|'s status member."
   r->response_->SetStatus(init->status());
 
@@ -319,22 +320,22 @@
 
 Response* Response::Create(ExecutionContext* context,
                            FetchResponseData* response) {
-  return new Response(context, response);
+  return MakeGarbageCollected<Response>(context, response);
 }
 
 Response* Response::Create(ScriptState* script_state,
                            mojom::blink::FetchAPIResponse& response) {
   auto* fetch_response_data =
       CreateFetchResponseDataFromFetchAPIResponse(script_state, response);
-  return new Response(ExecutionContext::From(script_state),
-                      fetch_response_data);
+  return MakeGarbageCollected<Response>(ExecutionContext::From(script_state),
+                                        fetch_response_data);
 }
 
 Response* Response::error(ScriptState* script_state) {
   FetchResponseData* response_data =
       FetchResponseData::CreateNetworkErrorResponse();
-  Response* r =
-      new Response(ExecutionContext::From(script_state), response_data);
+  Response* r = MakeGarbageCollected<Response>(
+      ExecutionContext::From(script_state), response_data);
   r->headers_->SetGuard(Headers::kImmutableGuard);
   return r;
 }
@@ -354,7 +355,8 @@
     return nullptr;
   }
 
-  Response* r = new Response(ExecutionContext::From(script_state));
+  Response* r =
+      MakeGarbageCollected<Response>(ExecutionContext::From(script_state));
   r->headers_->SetGuard(Headers::kImmutableGuard);
   r->response_->SetStatus(status);
   r->response_->HeaderList()->Set("Location", parsed_url);
@@ -438,7 +440,8 @@
     return nullptr;
   Headers* headers = Headers::Create(response->HeaderList());
   headers->SetGuard(headers_->GetGuard());
-  return new Response(GetExecutionContext(), response, headers);
+  return MakeGarbageCollected<Response>(GetExecutionContext(), response,
+                                        headers);
 }
 
 bool Response::HasPendingActivity() const {
diff --git a/third_party/blink/renderer/core/fetch/response.h b/third_party/blink/renderer/core/fetch/response.h
index 8c26302..b8c76fa 100644
--- a/third_party/blink/renderer/core/fetch/response.h
+++ b/third_party/blink/renderer/core/fetch/response.h
@@ -55,6 +55,10 @@
                             unsigned short status,
                             ExceptionState&);
 
+  explicit Response(ExecutionContext*);
+  Response(ExecutionContext*, FetchResponseData*);
+  Response(ExecutionContext*, FetchResponseData*, Headers*);
+
   const FetchResponseData* GetResponse() const { return response_; }
 
   // From Response.idl:
@@ -108,10 +112,6 @@
   bool IsBodyUsedForDCheck(ExceptionState&) override;
 
  private:
-  explicit Response(ExecutionContext*);
-  Response(ExecutionContext*, FetchResponseData*);
-  Response(ExecutionContext*, FetchResponseData*, Headers*);
-
   const TraceWrapperMember<FetchResponseData> response_;
   const Member<Headers> headers_;
   DISALLOW_COPY_AND_ASSIGN(Response);
diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.cc b/third_party/blink/renderer/core/fileapi/public_url_manager.cc
index 8c54d94..e3de27c 100644
--- a/third_party/blink/renderer/core/fileapi/public_url_manager.cc
+++ b/third_party/blink/renderer/core/fileapi/public_url_manager.cc
@@ -100,7 +100,7 @@
 }  // namespace
 
 PublicURLManager* PublicURLManager::Create(ExecutionContext* context) {
-  return new PublicURLManager(context);
+  return MakeGarbageCollected<PublicURLManager>(context);
 }
 
 PublicURLManager::PublicURLManager(ExecutionContext* context)
diff --git a/third_party/blink/renderer/core/fileapi/public_url_manager.h b/third_party/blink/renderer/core/fileapi/public_url_manager.h
index 26c71d7..7c808b2 100644
--- a/third_party/blink/renderer/core/fileapi/public_url_manager.h
+++ b/third_party/blink/renderer/core/fileapi/public_url_manager.h
@@ -50,6 +50,8 @@
  public:
   static PublicURLManager* Create(ExecutionContext*);
 
+  explicit PublicURLManager(ExecutionContext*);
+
   // Generates a new Blob URL and registers the URLRegistrable to the
   // corresponding URLRegistry with the Blob URL. Returns the serialization
   // of the Blob URL.
@@ -76,8 +78,6 @@
   }
 
  private:
-  explicit PublicURLManager(ExecutionContext*);
-
   typedef String URLString;
   // Map from URLs to the URLRegistry they are registered with.
   typedef HashMap<URLString, URLRegistry*> URLToRegistryMap;
diff --git a/third_party/blink/renderer/core/frame/deprecation.cc b/third_party/blink/renderer/core/frame/deprecation.cc
index 04d9568..e8a2f73 100644
--- a/third_party/blink/renderer/core/frame/deprecation.cc
+++ b/third_party/blink/renderer/core/frame/deprecation.cc
@@ -824,7 +824,8 @@
   double removal_date = MilestoneDate(info.anticipated_removal);
   DeprecationReportBody* body = MakeGarbageCollected<DeprecationReportBody>(
       info.id, removal_date, info.message, SourceLocation::Capture());
-  Report* report = new Report("deprecation", document->Url().GetString(), body);
+  Report* report = MakeGarbageCollected<Report>(
+      "deprecation", document->Url().GetString(), body);
 
   // Send the deprecation report to any ReportingObservers.
   ReportingContext::From(document)->QueueReport(report);
diff --git a/third_party/blink/renderer/core/frame/intervention.cc b/third_party/blink/renderer/core/frame/intervention.cc
index b243c517e..1f9c5da 100644
--- a/third_party/blink/renderer/core/frame/intervention.cc
+++ b/third_party/blink/renderer/core/frame/intervention.cc
@@ -35,8 +35,8 @@
   // Construct the intervention report.
   InterventionReportBody* body = MakeGarbageCollected<InterventionReportBody>(
       id, message, SourceLocation::Capture());
-  Report* report =
-      new Report("intervention", document->Url().GetString(), body);
+  Report* report = MakeGarbageCollected<Report>(
+      "intervention", document->Url().GetString(), body);
 
   // Send the intervention report to any ReportingObservers.
   ReportingContext::From(document)->QueueReport(report);
diff --git a/third_party/blink/renderer/core/frame/local_dom_window.cc b/third_party/blink/renderer/core/frame/local_dom_window.cc
index ed064a4..49aa591e 100644
--- a/third_party/blink/renderer/core/frame/local_dom_window.cc
+++ b/third_party/blink/renderer/core/frame/local_dom_window.cc
@@ -603,9 +603,9 @@
   // is problematic; consider imposing a limit or other restriction if this
   // surfaces often as a problem (see crbug.com/587012).
   std::unique_ptr<SourceLocation> location = SourceLocation::Capture(source);
-  PostMessageTimer* timer =
-      new PostMessageTimer(*this, event, std::move(target), std::move(location),
-                           UserGestureIndicator::CurrentToken());
+  PostMessageTimer* timer = MakeGarbageCollected<PostMessageTimer>(
+      *this, event, std::move(target), std::move(location),
+      UserGestureIndicator::CurrentToken());
   timer->StartOneShot(TimeDelta(), FROM_HERE);
   timer->PauseIfNeeded();
   probe::AsyncTaskScheduled(document(), "postMessage", timer);
diff --git a/third_party/blink/renderer/core/frame/local_frame.cc b/third_party/blink/renderer/core/frame/local_frame.cc
index fdaa9d2..2f30ff7 100644
--- a/third_party/blink/renderer/core/frame/local_frame.cc
+++ b/third_party/blink/renderer/core/frame/local_frame.cc
@@ -967,7 +967,7 @@
       interface_registry_(interface_registry) {
   if (IsLocalRoot()) {
     probe_sink_ = new CoreProbeSink();
-    performance_monitor_ = new PerformanceMonitor(this);
+    performance_monitor_ = MakeGarbageCollected<PerformanceMonitor>(this);
     inspector_trace_events_ = MakeGarbageCollected<InspectorTraceEvents>();
     probe_sink_->addInspectorTraceEvents(inspector_trace_events_);
     if (RuntimeEnabledFeatures::AdTaggingEnabled()) {
diff --git a/third_party/blink/renderer/core/frame/local_frame_view.cc b/third_party/blink/renderer/core/frame/local_frame_view.cc
index dd05ebb..ede080e 100644
--- a/third_party/blink/renderer/core/frame/local_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/local_frame_view.cc
@@ -2297,7 +2297,8 @@
   if (frame_->GetDocument()->Printing())
     return;
   if (!print_context_) {
-    print_context_ = new PrintContext(frame_, /*use_printing_layout=*/true);
+    print_context_ = MakeGarbageCollected<PrintContext>(
+        frame_, /*use_printing_layout=*/true);
   }
   if (frame_->GetSettings())
     frame_->GetSettings()->SetShouldPrintBackgrounds(true);
diff --git a/third_party/blink/renderer/core/frame/pausable_script_executor.cc b/third_party/blink/renderer/core/frame/pausable_script_executor.cc
index 7017ecf..322cb06 100644
--- a/third_party/blink/renderer/core/frame/pausable_script_executor.cc
+++ b/third_party/blink/renderer/core/frame/pausable_script_executor.cc
@@ -140,7 +140,7 @@
     bool user_gesture,
     WebScriptExecutionCallback* callback) {
   ScriptState* script_state = ToScriptState(frame, *world);
-  return new PausableScriptExecutor(
+  return MakeGarbageCollected<PausableScriptExecutor>(
       frame, script_state, callback,
       new WebScriptExecutor(sources, world->GetWorldId(), user_gesture));
 }
@@ -160,9 +160,10 @@
       callback->Completed(Vector<v8::Local<v8::Value>>());
     return;
   }
-  PausableScriptExecutor* executor = new PausableScriptExecutor(
-      frame, script_state, callback,
-      new V8FunctionExecutor(isolate, function, receiver, argc, argv));
+  PausableScriptExecutor* executor =
+      MakeGarbageCollected<PausableScriptExecutor>(
+          frame, script_state, callback,
+          new V8FunctionExecutor(isolate, function, receiver, argc, argv));
   executor->Run();
 }
 
diff --git a/third_party/blink/renderer/core/frame/pausable_script_executor.h b/third_party/blink/renderer/core/frame/pausable_script_executor.h
index bc32d08..c268810 100644
--- a/third_party/blink/renderer/core/frame/pausable_script_executor.h
+++ b/third_party/blink/renderer/core/frame/pausable_script_executor.h
@@ -43,13 +43,6 @@
                            int argc,
                            v8::Local<v8::Value> argv[],
                            WebScriptExecutionCallback*);
-  ~PausableScriptExecutor() override;
-
-  void Run();
-  void RunAsync(BlockingOption);
-  void ContextDestroyed(ExecutionContext*) override;
-
-  void Trace(blink::Visitor*) override;
 
   class Executor : public GarbageCollectedFinalized<Executor> {
    public:
@@ -60,12 +53,19 @@
     virtual void Trace(blink::Visitor* visitor) {}
   };
 
- private:
   PausableScriptExecutor(LocalFrame*,
                          ScriptState*,
                          WebScriptExecutionCallback*,
                          Executor*);
+  ~PausableScriptExecutor() override;
 
+  void Run();
+  void RunAsync(BlockingOption);
+  void ContextDestroyed(ExecutionContext*) override;
+
+  void Trace(blink::Visitor*) override;
+
+ private:
   void Fired() override;
 
   void ExecuteAndDestroySelf();
diff --git a/third_party/blink/renderer/core/frame/pausable_task.cc b/third_party/blink/renderer/core/frame/pausable_task.cc
index 292f3a3..99b9d6a3 100644
--- a/third_party/blink/renderer/core/frame/pausable_task.cc
+++ b/third_party/blink/renderer/core/frame/pausable_task.cc
@@ -20,7 +20,7 @@
   } else {
     // Manages its own lifetime and invokes the callback when script is
     // unpaused.
-    new PausableTask(context, std::move(callback));
+    MakeGarbageCollected<PausableTask>(context, std::move(callback));
   }
 }
 
diff --git a/third_party/blink/renderer/core/frame/pausable_task.h b/third_party/blink/renderer/core/frame/pausable_task.h
index 7c7a54c..d5ff5e02 100644
--- a/third_party/blink/renderer/core/frame/pausable_task.h
+++ b/third_party/blink/renderer/core/frame/pausable_task.h
@@ -23,6 +23,8 @@
   USING_GARBAGE_COLLECTED_MIXIN(PausableTask);
 
  public:
+  // Note: This asserts that the context is currently suspended.
+  PausableTask(ExecutionContext*, WebLocalFrame::PausableTaskCallback);
   ~PausableTask() override;
 
   // Checks if the context is paused, and, if not, executes the callback
@@ -35,9 +37,6 @@
   void Fired() override;
 
  private:
-  // Note: This asserts that the context is currently suspended.
-  PausableTask(ExecutionContext*, WebLocalFrame::PausableTaskCallback);
-
   void Dispose();
 
   WebLocalFrame::PausableTaskCallback callback_;
diff --git a/third_party/blink/renderer/core/frame/performance_monitor_test.cc b/third_party/blink/renderer/core/frame/performance_monitor_test.cc
index 4be237c..319bd6e 100644
--- a/third_party/blink/renderer/core/frame/performance_monitor_test.cc
+++ b/third_party/blink/renderer/core/frame/performance_monitor_test.cc
@@ -76,7 +76,7 @@
 void PerformanceMonitorTest::SetUp() {
   page_holder_ = DummyPageHolder::Create(IntSize(800, 600));
   page_holder_->GetDocument().SetURL(KURL("https://example.com/foo"));
-  monitor_ = new PerformanceMonitor(GetFrame());
+  monitor_ = MakeGarbageCollected<PerformanceMonitor>(GetFrame());
 
   // Create another dummy page holder and pretend this is the iframe.
   another_page_holder_ = DummyPageHolder::Create(IntSize(400, 300));
diff --git a/third_party/blink/renderer/core/frame/remote_dom_window.h b/third_party/blink/renderer/core/frame/remote_dom_window.h
index dd3ccb0..ccacdd3 100644
--- a/third_party/blink/renderer/core/frame/remote_dom_window.h
+++ b/third_party/blink/renderer/core/frame/remote_dom_window.h
@@ -14,9 +14,11 @@
 class RemoteDOMWindow final : public DOMWindow {
  public:
   static RemoteDOMWindow* Create(RemoteFrame& frame) {
-    return new RemoteDOMWindow(frame);
+    return MakeGarbageCollected<RemoteDOMWindow>(frame);
   }
 
+  explicit RemoteDOMWindow(RemoteFrame&);
+
   RemoteFrame* GetFrame() const { return ToRemoteFrame(DOMWindow::GetFrame()); }
 
   // EventTarget overrides:
@@ -35,8 +37,6 @@
                            Document* source) override;
 
  private:
-  explicit RemoteDOMWindow(RemoteFrame&);
-
   // Intentionally private to prevent redundant checks when the type is
   // already RemoteDOMWindow.
   bool IsLocalDOMWindow() const override { return false; }
diff --git a/third_party/blink/renderer/core/frame/remote_frame.cc b/third_party/blink/renderer/core/frame/remote_frame.cc
index ad89ac2..1db7ea1 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.cc
+++ b/third_party/blink/renderer/core/frame/remote_frame.cc
@@ -40,7 +40,7 @@
 RemoteFrame* RemoteFrame::Create(RemoteFrameClient* client,
                                  Page& page,
                                  FrameOwner* owner) {
-  RemoteFrame* frame = new RemoteFrame(client, page, owner);
+  RemoteFrame* frame = MakeGarbageCollected<RemoteFrame>(client, page, owner);
   PageScheduler* page_scheduler = page.GetPageScheduler();
   if (frame->IsMainFrame() && page_scheduler)
     page_scheduler->SetIsMainFrameLocal(false);
diff --git a/third_party/blink/renderer/core/frame/remote_frame.h b/third_party/blink/renderer/core/frame/remote_frame.h
index 84173c0..a2d54a2 100644
--- a/third_party/blink/renderer/core/frame/remote_frame.h
+++ b/third_party/blink/renderer/core/frame/remote_frame.h
@@ -25,6 +25,7 @@
  public:
   static RemoteFrame* Create(RemoteFrameClient*, Page&, FrameOwner*);
 
+  RemoteFrame(RemoteFrameClient*, Page&, FrameOwner*);
   ~RemoteFrame() override;
 
   // Frame overrides:
@@ -67,8 +68,6 @@
   bool IsIgnoredForHitTest() const;
 
  private:
-  RemoteFrame(RemoteFrameClient*, Page&, FrameOwner*);
-
   // Frame protected overrides:
   void DetachImpl(FrameDetachType) override;
 
diff --git a/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc b/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc
index b60c1a4..3a840c69 100644
--- a/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc
+++ b/third_party/blink/renderer/core/frame/remote_frame_client_impl.cc
@@ -41,7 +41,7 @@
 
 RemoteFrameClientImpl* RemoteFrameClientImpl::Create(
     WebRemoteFrameImpl* web_frame) {
-  return new RemoteFrameClientImpl(web_frame);
+  return MakeGarbageCollected<RemoteFrameClientImpl>(web_frame);
 }
 
 void RemoteFrameClientImpl::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/frame/remote_frame_client_impl.h b/third_party/blink/renderer/core/frame/remote_frame_client_impl.h
index fa9ad8cb..bfdd480 100644
--- a/third_party/blink/renderer/core/frame/remote_frame_client_impl.h
+++ b/third_party/blink/renderer/core/frame/remote_frame_client_impl.h
@@ -18,6 +18,8 @@
  public:
   static RemoteFrameClientImpl* Create(WebRemoteFrameImpl*);
 
+  explicit RemoteFrameClientImpl(WebRemoteFrameImpl*);
+
   void Trace(blink::Visitor*) override;
 
   // FrameClient overrides:
@@ -56,8 +58,6 @@
   WebRemoteFrameImpl* GetWebFrame() const { return web_frame_; }
 
  private:
-  explicit RemoteFrameClientImpl(WebRemoteFrameImpl*);
-
   Member<WebRemoteFrameImpl> web_frame_;
 };
 
diff --git a/third_party/blink/renderer/core/frame/remote_frame_owner.h b/third_party/blink/renderer/core/frame/remote_frame_owner.h
index 4b15040..2d3a436 100644
--- a/third_party/blink/renderer/core/frame/remote_frame_owner.h
+++ b/third_party/blink/renderer/core/frame/remote_frame_owner.h
@@ -29,10 +29,16 @@
       const ParsedFeaturePolicy& container_policy,
       const WebFrameOwnerProperties& frame_owner_properties,
       FrameOwnerElementType frame_owner_element_type) {
-    return new RemoteFrameOwner(flags, container_policy, frame_owner_properties,
-                                frame_owner_element_type);
+    return MakeGarbageCollected<RemoteFrameOwner>(flags, container_policy,
+                                                  frame_owner_properties,
+                                                  frame_owner_element_type);
   }
 
+  RemoteFrameOwner(SandboxFlags,
+                   const ParsedFeaturePolicy&,
+                   const WebFrameOwnerProperties&,
+                   FrameOwnerElementType frame_owner_element_type);
+
   // FrameOwner overrides:
   Frame* ContentFrame() const override { return frame_.Get(); }
   void SetContentFrame(Frame&) override;
@@ -87,11 +93,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RemoteFrameOwner(SandboxFlags,
-                   const ParsedFeaturePolicy&,
-                   const WebFrameOwnerProperties&,
-                   FrameOwnerElementType frame_owner_element_type);
-
   // Intentionally private to prevent redundant checks when the type is
   // already HTMLFrameOwnerElement.
   bool IsLocal() const override { return false; }
diff --git a/third_party/blink/renderer/core/frame/remote_frame_view.cc b/third_party/blink/renderer/core/frame/remote_frame_view.cc
index e572155..f74fd56 100644
--- a/third_party/blink/renderer/core/frame/remote_frame_view.cc
+++ b/third_party/blink/renderer/core/frame/remote_frame_view.cc
@@ -58,7 +58,7 @@
 }
 
 RemoteFrameView* RemoteFrameView::Create(RemoteFrame* remote_frame) {
-  RemoteFrameView* view = new RemoteFrameView(remote_frame);
+  RemoteFrameView* view = MakeGarbageCollected<RemoteFrameView>(remote_frame);
   view->Show();
   return view;
 }
diff --git a/third_party/blink/renderer/core/frame/remote_frame_view.h b/third_party/blink/renderer/core/frame/remote_frame_view.h
index a9732e5..37e7179 100644
--- a/third_party/blink/renderer/core/frame/remote_frame_view.h
+++ b/third_party/blink/renderer/core/frame/remote_frame_view.h
@@ -30,6 +30,7 @@
  public:
   static RemoteFrameView* Create(RemoteFrame*);
 
+  explicit RemoteFrameView(RemoteFrame*);
   ~RemoteFrameView() override;
 
   void AttachToLayout() override;
@@ -73,8 +74,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit RemoteFrameView(RemoteFrame*);
-
   LocalFrameView* ParentFrameView() const;
 
   void UpdateRenderThrottlingStatus(bool hidden, bool subtree_throttled);
diff --git a/third_party/blink/renderer/core/frame/reporting_context.cc b/third_party/blink/renderer/core/frame/reporting_context.cc
index aac718d..7692ab2 100644
--- a/third_party/blink/renderer/core/frame/reporting_context.cc
+++ b/third_party/blink/renderer/core/frame/reporting_context.cc
@@ -25,7 +25,7 @@
   ReportingContext* reporting_context =
       Supplement<ExecutionContext>::From<ReportingContext>(context);
   if (!reporting_context) {
-    reporting_context = new ReportingContext(*context);
+    reporting_context = MakeGarbageCollected<ReportingContext>(*context);
     Supplement<ExecutionContext>::ProvideTo(*context, reporting_context);
   }
   return reporting_context;
diff --git a/third_party/blink/renderer/core/frame/reporting_observer.cc b/third_party/blink/renderer/core/frame/reporting_observer.cc
index 3f534784..a296b04 100644
--- a/third_party/blink/renderer/core/frame/reporting_observer.cc
+++ b/third_party/blink/renderer/core/frame/reporting_observer.cc
@@ -18,7 +18,8 @@
     ExecutionContext* execution_context,
     V8ReportingObserverCallback* callback,
     ReportingObserverOptions* options) {
-  return new ReportingObserver(execution_context, callback, options);
+  return MakeGarbageCollected<ReportingObserver>(execution_context, callback,
+                                                 options);
 }
 
 ReportingObserver::ReportingObserver(ExecutionContext* execution_context,
diff --git a/third_party/blink/renderer/core/frame/reporting_observer.h b/third_party/blink/renderer/core/frame/reporting_observer.h
index d29c32d0..d0b3722 100644
--- a/third_party/blink/renderer/core/frame/reporting_observer.h
+++ b/third_party/blink/renderer/core/frame/reporting_observer.h
@@ -29,6 +29,10 @@
                                    V8ReportingObserverCallback*,
                                    ReportingObserverOptions*);
 
+  explicit ReportingObserver(ExecutionContext*,
+                             V8ReportingObserverCallback*,
+                             ReportingObserverOptions*);
+
   // ActiveScriptWrappable
   bool HasPendingActivity() const final;
 
@@ -56,10 +60,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit ReportingObserver(ExecutionContext*,
-                             V8ReportingObserverCallback*,
-                             ReportingObserverOptions*);
-
   Member<ExecutionContext> execution_context_;
   TraceWrapperMember<V8ReportingObserverCallback> callback_;
   Member<ReportingObserverOptions> options_;
diff --git a/third_party/blink/renderer/core/frame/root_frame_viewport.h b/third_party/blink/renderer/core/frame/root_frame_viewport.h
index d9c8fe8..a18c1ed 100644
--- a/third_party/blink/renderer/core/frame/root_frame_viewport.h
+++ b/third_party/blink/renderer/core/frame/root_frame_viewport.h
@@ -32,9 +32,13 @@
  public:
   static RootFrameViewport* Create(ScrollableArea& visual_viewport,
                                    ScrollableArea& layout_viewport) {
-    return new RootFrameViewport(visual_viewport, layout_viewport);
+    return MakeGarbageCollected<RootFrameViewport>(visual_viewport,
+                                                   layout_viewport);
   }
 
+  RootFrameViewport(ScrollableArea& visual_viewport,
+                    ScrollableArea& layout_viewport);
+
   void Trace(blink::Visitor*) override;
 
   void SetLayoutViewport(ScrollableArea&);
@@ -121,9 +125,6 @@
   ScrollbarTheme& GetPageScrollbarTheme() const override;
 
  private:
-  RootFrameViewport(ScrollableArea& visual_viewport,
-                    ScrollableArea& layout_viewport);
-
   enum ViewportToScrollFirst { kVisualViewport, kLayoutViewport };
 
   ScrollOffset ScrollOffsetFromScrollAnimators() const;
diff --git a/third_party/blink/renderer/core/frame/root_frame_viewport_test.cc b/third_party/blink/renderer/core/frame/root_frame_viewport_test.cc
index c4049f3..50dfcfc 100644
--- a/third_party/blink/renderer/core/frame/root_frame_viewport_test.cc
+++ b/third_party/blink/renderer/core/frame/root_frame_viewport_test.cc
@@ -144,9 +144,14 @@
  public:
   static RootLayoutViewportStub* Create(const IntSize& viewport_size,
                                         const IntSize& contents_size) {
-    return new RootLayoutViewportStub(viewport_size, contents_size);
+    return MakeGarbageCollected<RootLayoutViewportStub>(viewport_size,
+                                                        contents_size);
   }
 
+  RootLayoutViewportStub(const IntSize& viewport_size,
+                         const IntSize& contents_size)
+      : ScrollableAreaStub(viewport_size, contents_size) {}
+
   ScrollOffset MaximumScrollOffset() const override {
     return ScrollOffset(ContentsSize() - ViewportSize());
   }
@@ -158,10 +163,6 @@
   }
 
  private:
-  RootLayoutViewportStub(const IntSize& viewport_size,
-                         const IntSize& contents_size)
-      : ScrollableAreaStub(viewport_size, contents_size) {}
-
   int VisibleWidth() const override { return viewport_size_.Width(); }
   int VisibleHeight() const override { return viewport_size_.Height(); }
 };
diff --git a/third_party/blink/renderer/core/html/custom/custom_element_reaction_queue_test.cc b/third_party/blink/renderer/core/html/custom/custom_element_reaction_queue_test.cc
index 22c3a933..651efd1e 100644
--- a/third_party/blink/renderer/core/html/custom/custom_element_reaction_queue_test.cc
+++ b/third_party/blink/renderer/core/html/custom/custom_element_reaction_queue_test.cc
@@ -59,7 +59,7 @@
   HeapVector<Member<Command>>* third_commands =
       MakeGarbageCollected<HeapVector<Member<Command>>>();
   third_commands->push_back(MakeGarbageCollected<Log>('c', log));
-  third_commands->push_back(new Recurse(queue));
+  third_commands->push_back(MakeGarbageCollected<Recurse>(queue));
   CustomElementReaction* third =
       MakeGarbageCollected<TestReaction>(third_commands);  // "Empty" recursion
 
@@ -74,7 +74,7 @@
       MakeGarbageCollected<HeapVector<Member<Command>>>();
   first_commands->push_back(MakeGarbageCollected<Log>('a', log));
   first_commands->push_back(MakeGarbageCollected<Enqueue>(queue, second));
-  first_commands->push_back(new Recurse(queue));
+  first_commands->push_back(MakeGarbageCollected<Recurse>(queue));
   CustomElementReaction* first = MakeGarbageCollected<TestReaction>(
       first_commands);  // Non-empty recursion
 
diff --git a/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc b/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
index 214bb72c..12884a0 100644
--- a/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
+++ b/third_party/blink/renderer/core/html/forms/internal_popup_menu.cc
@@ -68,9 +68,11 @@
   static PopupMenuCSSFontSelector* Create(
       Document* document,
       CSSFontSelector* owner_font_selector) {
-    return new PopupMenuCSSFontSelector(document, owner_font_selector);
+    return MakeGarbageCollected<PopupMenuCSSFontSelector>(document,
+                                                          owner_font_selector);
   }
 
+  PopupMenuCSSFontSelector(Document*, CSSFontSelector*);
   ~PopupMenuCSSFontSelector() override;
 
   // We don't override willUseFontData() for now because the old PopupListBox
@@ -81,8 +83,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PopupMenuCSSFontSelector(Document*, CSSFontSelector*);
-
   void FontsNeedUpdate(FontSelector*) override;
 
   Member<CSSFontSelector> owner_font_selector_;
diff --git a/third_party/blink/renderer/core/html/forms/password_input_type.cc b/third_party/blink/renderer/core/html/forms/password_input_type.cc
index b6f8b91e..5260d8f 100644
--- a/third_party/blink/renderer/core/html/forms/password_input_type.cc
+++ b/third_party/blink/renderer/core/html/forms/password_input_type.cc
@@ -45,7 +45,7 @@
 namespace blink {
 
 InputType* PasswordInputType::Create(HTMLInputElement& element) {
-  return new PasswordInputType(element);
+  return MakeGarbageCollected<PasswordInputType>(element);
 }
 
 void PasswordInputType::CountUsage() {
diff --git a/third_party/blink/renderer/core/html/forms/password_input_type.h b/third_party/blink/renderer/core/html/forms/password_input_type.h
index 093a794..3722b54 100644
--- a/third_party/blink/renderer/core/html/forms/password_input_type.h
+++ b/third_party/blink/renderer/core/html/forms/password_input_type.h
@@ -39,9 +39,10 @@
  public:
   static InputType* Create(HTMLInputElement&);
 
- private:
   explicit PasswordInputType(HTMLInputElement& element)
       : BaseTextInputType(element) {}
+
+ private:
   void CountUsage() override;
   const AtomicString& FormControlType() const override;
   bool ShouldSaveAndRestoreFormControlState() const override;
diff --git a/third_party/blink/renderer/core/html/forms/picker_indicator_element.cc b/third_party/blink/renderer/core/html/forms/picker_indicator_element.cc
index 583d803..252e601 100644
--- a/third_party/blink/renderer/core/html/forms/picker_indicator_element.cc
+++ b/third_party/blink/renderer/core/html/forms/picker_indicator_element.cc
@@ -54,7 +54,8 @@
     Document& document,
     PickerIndicatorOwner& picker_indicator_owner) {
   PickerIndicatorElement* element =
-      new PickerIndicatorElement(document, picker_indicator_owner);
+      MakeGarbageCollected<PickerIndicatorElement>(document,
+                                                   picker_indicator_owner);
   element->SetShadowPseudoId(AtomicString("-webkit-calendar-picker-indicator"));
   element->setAttribute(kIdAttr, shadow_element_names::PickerIndicator());
   return element;
diff --git a/third_party/blink/renderer/core/html/forms/picker_indicator_element.h b/third_party/blink/renderer/core/html/forms/picker_indicator_element.h
index 9f675b2..b2d2834 100644
--- a/third_party/blink/renderer/core/html/forms/picker_indicator_element.h
+++ b/third_party/blink/renderer/core/html/forms/picker_indicator_element.h
@@ -58,6 +58,8 @@
   };
 
   static PickerIndicatorElement* Create(Document&, PickerIndicatorOwner&);
+
+  PickerIndicatorElement(Document&, PickerIndicatorOwner&);
   ~PickerIndicatorElement() override;
   void Trace(blink::Visitor*) override;
 
@@ -74,7 +76,6 @@
   void DidEndChooser() override;
 
  private:
-  PickerIndicatorElement(Document&, PickerIndicatorOwner&);
   LayoutObject* CreateLayoutObject(const ComputedStyle&) override;
   void DefaultEventHandler(Event&) override;
   void DetachLayoutTree(const AttachContext& = AttachContext()) override;
diff --git a/third_party/blink/renderer/core/html/forms/radio_button_group_scope.cc b/third_party/blink/renderer/core/html/forms/radio_button_group_scope.cc
index 7f152f3..f4968e4f 100644
--- a/third_party/blink/renderer/core/html/forms/radio_button_group_scope.cc
+++ b/third_party/blink/renderer/core/html/forms/radio_button_group_scope.cc
@@ -30,6 +30,9 @@
 class RadioButtonGroup : public GarbageCollected<RadioButtonGroup> {
  public:
   static RadioButtonGroup* Create();
+
+  RadioButtonGroup();
+
   bool IsEmpty() const { return members_.IsEmpty(); }
   bool IsRequired() const { return required_count_; }
   HTMLInputElement* CheckedButton() const { return checked_button_; }
@@ -43,7 +46,6 @@
   void Trace(blink::Visitor*);
 
  private:
-  RadioButtonGroup();
   void SetNeedsValidityCheckForAllButtons();
   bool IsValid() const;
   void SetCheckedButton(HTMLInputElement*);
@@ -64,7 +66,7 @@
     : checked_button_(nullptr), required_count_(0) {}
 
 RadioButtonGroup* RadioButtonGroup::Create() {
-  return new RadioButtonGroup;
+  return MakeGarbageCollected<RadioButtonGroup>();
 }
 
 inline bool RadioButtonGroup::IsValid() const {
diff --git a/third_party/blink/renderer/core/html/forms/radio_input_type.cc b/third_party/blink/renderer/core/html/forms/radio_input_type.cc
index fefdaac..f12a9a1 100644
--- a/third_party/blink/renderer/core/html/forms/radio_input_type.cc
+++ b/third_party/blink/renderer/core/html/forms/radio_input_type.cc
@@ -46,7 +46,7 @@
 }  // namespace
 
 InputType* RadioInputType::Create(HTMLInputElement& element) {
-  return new RadioInputType(element);
+  return MakeGarbageCollected<RadioInputType>(element);
 }
 
 const AtomicString& RadioInputType::FormControlType() const {
diff --git a/third_party/blink/renderer/core/html/forms/radio_input_type.h b/third_party/blink/renderer/core/html/forms/radio_input_type.h
index 9b9a70a5..e90755f0 100644
--- a/third_party/blink/renderer/core/html/forms/radio_input_type.h
+++ b/third_party/blink/renderer/core/html/forms/radio_input_type.h
@@ -42,8 +42,9 @@
   CORE_EXPORT static HTMLInputElement* NextRadioButtonInGroup(HTMLInputElement*,
                                                               bool forward);
 
- private:
   RadioInputType(HTMLInputElement& element) : BaseCheckableInputType(element) {}
+
+ private:
   const AtomicString& FormControlType() const override;
   bool ValueMissing(const String&) const override;
   String ValueMissingText() const override;
diff --git a/third_party/blink/renderer/core/html/forms/radio_node_list.h b/third_party/blink/renderer/core/html/forms/radio_node_list.h
index 81e76d5..fd958c1 100644
--- a/third_party/blink/renderer/core/html/forms/radio_node_list.h
+++ b/third_party/blink/renderer/core/html/forms/radio_node_list.h
@@ -40,17 +40,16 @@
                                CollectionType type,
                                const AtomicString& name) {
     DCHECK(type == kRadioNodeListType || type == kRadioImgNodeListType);
-    return new RadioNodeList(owner_node, name, type);
+    return MakeGarbageCollected<RadioNodeList>(owner_node, name, type);
   }
 
+  RadioNodeList(ContainerNode&, const AtomicString& name, CollectionType);
   ~RadioNodeList() override;
 
   String value() const;
   void setValue(const String&);
 
  private:
-  RadioNodeList(ContainerNode&, const AtomicString& name, CollectionType);
-
   bool CheckElementMatchesRadioNodeListFilter(const Element&) const;
 
   bool MatchesByIdOrName(const Element&) const;
diff --git a/third_party/blink/renderer/core/html/forms/range_input_type.cc b/third_party/blink/renderer/core/html/forms/range_input_type.cc
index 251a6c3..d32bc57 100644
--- a/third_party/blink/renderer/core/html/forms/range_input_type.cc
+++ b/third_party/blink/renderer/core/html/forms/range_input_type.cc
@@ -71,7 +71,7 @@
 }
 
 InputType* RangeInputType::Create(HTMLInputElement& element) {
-  return new RangeInputType(element);
+  return MakeGarbageCollected<RangeInputType>(element);
 }
 
 RangeInputType::RangeInputType(HTMLInputElement& element)
diff --git a/third_party/blink/renderer/core/html/forms/range_input_type.h b/third_party/blink/renderer/core/html/forms/range_input_type.h
index bbdb85e..a0bd003 100644
--- a/third_party/blink/renderer/core/html/forms/range_input_type.h
+++ b/third_party/blink/renderer/core/html/forms/range_input_type.h
@@ -44,11 +44,13 @@
 
  public:
   static InputType* Create(HTMLInputElement&);
+
+  RangeInputType(HTMLInputElement&);
+
   void Trace(blink::Visitor*) override;
   using InputType::GetElement;
 
  private:
-  RangeInputType(HTMLInputElement&);
   InputTypeView* CreateView() override;
   ValueMode GetValueMode() const override;
   void CountUsage() override;
diff --git a/third_party/blink/renderer/core/html/forms/reset_input_type.cc b/third_party/blink/renderer/core/html/forms/reset_input_type.cc
index e521ea8..f355452 100644
--- a/third_party/blink/renderer/core/html/forms/reset_input_type.cc
+++ b/third_party/blink/renderer/core/html/forms/reset_input_type.cc
@@ -40,7 +40,7 @@
 namespace blink {
 
 InputType* ResetInputType::Create(HTMLInputElement& element) {
-  return new ResetInputType(element);
+  return MakeGarbageCollected<ResetInputType>(element);
 }
 
 const AtomicString& ResetInputType::FormControlType() const {
diff --git a/third_party/blink/renderer/core/html/forms/reset_input_type.h b/third_party/blink/renderer/core/html/forms/reset_input_type.h
index b239a15..0e35bae 100644
--- a/third_party/blink/renderer/core/html/forms/reset_input_type.h
+++ b/third_party/blink/renderer/core/html/forms/reset_input_type.h
@@ -39,8 +39,9 @@
  public:
   static InputType* Create(HTMLInputElement&);
 
- private:
   ResetInputType(HTMLInputElement& element) : BaseButtonInputType(element) {}
+
+ private:
   const AtomicString& FormControlType() const override;
   bool SupportsValidation() const override;
   void HandleDOMActivateEvent(Event&) override;
diff --git a/third_party/blink/renderer/core/html/media/html_video_element.cc b/third_party/blink/renderer/core/html/media/html_video_element.cc
index ae5e8ad..5eebce7 100644
--- a/third_party/blink/renderer/core/html/media/html_video_element.cc
+++ b/third_party/blink/renderer/core/html/media/html_video_element.cc
@@ -698,7 +698,8 @@
 
 void HTMLVideoElement::OnEnteredPictureInPicture() {
   if (!picture_in_picture_interstitial_) {
-    picture_in_picture_interstitial_ = new PictureInPictureInterstitial(*this);
+    picture_in_picture_interstitial_ =
+        MakeGarbageCollected<PictureInPictureInterstitial>(*this);
     ShadowRoot& shadow_root = EnsureUserAgentShadowRoot();
     shadow_root.InsertBefore(picture_in_picture_interstitial_,
                              shadow_root.firstChild());
diff --git a/third_party/blink/renderer/core/html/media/picture_in_picture_interstitial.cc b/third_party/blink/renderer/core/html/media/picture_in_picture_interstitial.cc
index 06712a7..a6d49398 100644
--- a/third_party/blink/renderer/core/html/media/picture_in_picture_interstitial.cc
+++ b/third_party/blink/renderer/core/html/media/picture_in_picture_interstitial.cc
@@ -57,9 +57,9 @@
 PictureInPictureInterstitial::PictureInPictureInterstitial(
     HTMLVideoElement& videoElement)
     : HTMLDivElement(videoElement.GetDocument()),
-      resize_observer_(
-          ResizeObserver::Create(videoElement.GetDocument(),
-                                 new VideoElementResizeObserverDelegate(this))),
+      resize_observer_(ResizeObserver::Create(
+          videoElement.GetDocument(),
+          MakeGarbageCollected<VideoElementResizeObserverDelegate>(this))),
       interstitial_timer_(
           videoElement.GetDocument().GetTaskRunner(TaskType::kInternalMedia),
           this,
@@ -119,9 +119,9 @@
 Node::InsertionNotificationRequest PictureInPictureInterstitial::InsertedInto(
     ContainerNode& root) {
   if (GetVideoElement().isConnected() && !resize_observer_) {
-    resize_observer_ =
-        ResizeObserver::Create(GetVideoElement().GetDocument(),
-                               new VideoElementResizeObserverDelegate(this));
+    resize_observer_ = ResizeObserver::Create(
+        GetVideoElement().GetDocument(),
+        MakeGarbageCollected<VideoElementResizeObserverDelegate>(this));
     resize_observer_->observe(&GetVideoElement());
   }
 
diff --git a/third_party/blink/renderer/core/html/plugin_document.cc b/third_party/blink/renderer/core/html/plugin_document.cc
index 8cbd7cd..70c83c2 100644
--- a/third_party/blink/renderer/core/html/plugin_document.cc
+++ b/third_party/blink/renderer/core/html/plugin_document.cc
@@ -52,9 +52,12 @@
 class PluginDocument::BeforeUnloadEventListener : public EventListener {
  public:
   static BeforeUnloadEventListener* Create(PluginDocument* document) {
-    return new BeforeUnloadEventListener(document);
+    return MakeGarbageCollected<BeforeUnloadEventListener>(document);
   }
 
+  explicit BeforeUnloadEventListener(PluginDocument* document)
+      : EventListener(kCPPEventListenerType), doc_(document) {}
+
   bool operator==(const EventListener& listener) const override {
     return this == &listener;
   }
@@ -69,9 +72,6 @@
   }
 
  private:
-  explicit BeforeUnloadEventListener(PluginDocument* document)
-      : EventListener(kCPPEventListenerType), doc_(document) {}
-
   void Invoke(ExecutionContext*, Event* event) override {
     DCHECK_EQ(event->type(), event_type_names::kBeforeunload);
     if (show_dialog_)
@@ -87,20 +87,21 @@
  public:
   static PluginDocumentParser* Create(PluginDocument* document,
                                       Color background_color) {
-    return new PluginDocumentParser(document, background_color);
+    return MakeGarbageCollected<PluginDocumentParser>(document,
+                                                      background_color);
   }
 
+  PluginDocumentParser(Document* document, Color background_color)
+      : RawDataDocumentParser(document),
+        embed_element_(nullptr),
+        background_color_(background_color) {}
+
   void Trace(blink::Visitor* visitor) override {
     visitor->Trace(embed_element_);
     RawDataDocumentParser::Trace(visitor);
   }
 
  private:
-  PluginDocumentParser(Document* document, Color background_color)
-      : RawDataDocumentParser(document),
-        embed_element_(nullptr),
-        background_color_(background_color) {}
-
   void AppendBytes(const char*, size_t) override;
 
   void Finish() override;
diff --git a/third_party/blink/renderer/core/html/plugin_document.h b/third_party/blink/renderer/core/html/plugin_document.h
index 5566a47..8339e57 100644
--- a/third_party/blink/renderer/core/html/plugin_document.h
+++ b/third_party/blink/renderer/core/html/plugin_document.h
@@ -38,9 +38,11 @@
  public:
   static PluginDocument* Create(const DocumentInit& initializer,
                                 Color background_color) {
-    return new PluginDocument(initializer, background_color);
+    return MakeGarbageCollected<PluginDocument>(initializer, background_color);
   }
 
+  PluginDocument(const DocumentInit&, Color background_color);
+
   void SetPluginNode(HTMLPlugInElement* plugin_node) {
     plugin_node_ = plugin_node;
   }
@@ -57,8 +59,6 @@
  private:
   class BeforeUnloadEventListener;
 
-  PluginDocument(const DocumentInit&, Color background_color);
-
   DocumentParser* CreateParser() override;
 
   Member<HTMLPlugInElement> plugin_node_;
diff --git a/third_party/blink/renderer/core/html/rel_list.h b/third_party/blink/renderer/core/html/rel_list.h
index a7c227f..62c0c9e7 100644
--- a/third_party/blink/renderer/core/html/rel_list.h
+++ b/third_party/blink/renderer/core/html/rel_list.h
@@ -11,10 +11,13 @@
 
 class RelList final : public DOMTokenList {
  public:
-  static RelList* Create(Element* element) { return new RelList(element); }
+  static RelList* Create(Element* element) {
+    return MakeGarbageCollected<RelList>(element);
+  }
+
+  explicit RelList(Element*);
 
  private:
-  explicit RelList(Element*);
   bool ValidateTokenValue(const AtomicString&, ExceptionState&) const override;
 };
 
diff --git a/third_party/blink/renderer/core/input/event_handler.cc b/third_party/blink/renderer/core/input/event_handler.cc
index 2be15f2..8ad2449 100644
--- a/third_party/blink/renderer/core/input/event_handler.cc
+++ b/third_party/blink/renderer/core/input/event_handler.cc
@@ -163,7 +163,8 @@
       keyboard_event_manager_(
           MakeGarbageCollected<KeyboardEventManager>(frame, *scroll_manager_)),
       pointer_event_manager_(
-          new PointerEventManager(frame, *mouse_event_manager_)),
+          MakeGarbageCollected<PointerEventManager>(frame,
+                                                    *mouse_event_manager_)),
       gesture_manager_(
           MakeGarbageCollected<GestureManager>(frame,
                                                *scroll_manager_,
diff --git a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
index bc591c8..04bb17d 100644
--- a/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
+++ b/third_party/blink/renderer/core/inspector/inspector_page_agent.cc
@@ -1340,7 +1340,8 @@
 
   // Construct the test report.
   TestReportBody* body = new TestReportBody(message);
-  Report* report = new Report("test", document->Url().GetString(), body);
+  Report* report =
+      MakeGarbageCollected<Report>("test", document->Url().GetString(), body);
 
   // Send the test report to any ReportingObservers.
   ReportingContext::From(document)->QueueReport(report);
diff --git a/third_party/blink/renderer/core/layout/custom/css_layout_definition.cc b/third_party/blink/renderer/core/layout/custom/css_layout_definition.cc
index a5138a0..d591ee5 100644
--- a/third_party/blink/renderer/core/layout/custom/css_layout_definition.cc
+++ b/third_party/blink/renderer/core/layout/custom/css_layout_definition.cc
@@ -127,7 +127,7 @@
   // TODO(ikilpatrick): Instead of creating a new style_map each time here,
   // store on LayoutCustom, and update when the style changes.
   StylePropertyMapReadOnly* style_map =
-      new PrepopulatedComputedStylePropertyMap(
+      MakeGarbageCollected<PrepopulatedComputedStylePropertyMap>(
           layout_custom.GetDocument(), layout_custom.StyleRef(),
           layout_custom.GetNode(), definition_->native_invalidation_properties_,
           definition_->custom_invalidation_properties_);
diff --git a/third_party/blink/renderer/core/layout/custom/custom_layout_child.cc b/third_party/blink/renderer/core/layout/custom/custom_layout_child.cc
index 4b20a13..a992eaa 100644
--- a/third_party/blink/renderer/core/layout/custom/custom_layout_child.cc
+++ b/third_party/blink/renderer/core/layout/custom/custom_layout_child.cc
@@ -15,7 +15,7 @@
 CustomLayoutChild::CustomLayoutChild(const CSSLayoutDefinition& definition,
                                      LayoutBox* box)
     : box_(box),
-      style_map_(new PrepopulatedComputedStylePropertyMap(
+      style_map_(MakeGarbageCollected<PrepopulatedComputedStylePropertyMap>(
           box->GetDocument(),
           box->StyleRef(),
           box->GetNode(),
diff --git a/third_party/blink/renderer/core/layout/custom/layout_worklet.cc b/third_party/blink/renderer/core/layout/custom/layout_worklet.cc
index 7457bd7..85f475c 100644
--- a/third_party/blink/renderer/core/layout/custom/layout_worklet.cc
+++ b/third_party/blink/renderer/core/layout/custom/layout_worklet.cc
@@ -36,7 +36,7 @@
 LayoutWorklet::LayoutWorklet(LocalFrame* frame)
     : Worklet(frame->GetDocument()),
       Supplement<LocalDOMWindow>(*frame->DomWindow()),
-      pending_layout_registry_(new PendingLayoutRegistry()) {}
+      pending_layout_registry_(MakeGarbageCollected<PendingLayoutRegistry>()) {}
 
 LayoutWorklet::~LayoutWorklet() = default;
 
diff --git a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc
index ace9b866..a8ff441 100644
--- a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc
+++ b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.cc
@@ -32,8 +32,8 @@
     ExecutionContext& execution_context,
     int64_t ukm_source_id,
     const std::vector<WTF::String>& subresource_patterns_to_block) {
-  return new PreviewsResourceLoadingHints(&execution_context, ukm_source_id,
-                                          subresource_patterns_to_block);
+  return MakeGarbageCollected<PreviewsResourceLoadingHints>(
+      &execution_context, ukm_source_id, subresource_patterns_to_block);
 }
 
 PreviewsResourceLoadingHints::PreviewsResourceLoadingHints(
diff --git a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h
index 20540b1..2ad7cc2 100644
--- a/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h
+++ b/third_party/blink/renderer/core/loader/previews_resource_loading_hints.h
@@ -32,6 +32,10 @@
       int64_t ukm_source_id,
       const std::vector<WTF::String>& subresource_patterns_to_block);
 
+  PreviewsResourceLoadingHints(
+      ExecutionContext* execution_context,
+      int64_t ukm_source_id,
+      const std::vector<WTF::String>& subresource_patterns_to_block);
   ~PreviewsResourceLoadingHints();
 
   // Returns true if load of resource with URL |resource_url| and priority
@@ -47,11 +51,6 @@
   void RecordUKM(ukm::UkmRecorder* ukm_recorder) const;
 
  private:
-  PreviewsResourceLoadingHints(
-      ExecutionContext* execution_context,
-      int64_t ukm_source_id,
-      const std::vector<WTF::String>& subresource_patterns_to_block);
-
   // Reports to console when loading of |resource_url| is blocked.
   void ReportBlockedLoading(const KURL& resource_url) const;
 
diff --git a/third_party/blink/renderer/core/loader/private/prerender_handle.cc b/third_party/blink/renderer/core/loader/private/prerender_handle.cc
index 7fe7f67..6208a53 100644
--- a/third_party/blink/renderer/core/loader/private/prerender_handle.cc
+++ b/third_party/blink/renderer/core/loader/private/prerender_handle.cc
@@ -61,7 +61,7 @@
     prerenderer_client->WillAddPrerender(prerender);
   prerender->Add();
 
-  return new PrerenderHandle(document, prerender);
+  return MakeGarbageCollected<PrerenderHandle>(document, prerender);
 }
 
 PrerenderHandle::PrerenderHandle(Document& document, Prerender* prerender)
diff --git a/third_party/blink/renderer/core/loader/private/prerender_handle.h b/third_party/blink/renderer/core/loader/private/prerender_handle.h
index edee2a3c..382c28f8 100644
--- a/third_party/blink/renderer/core/loader/private/prerender_handle.h
+++ b/third_party/blink/renderer/core/loader/private/prerender_handle.h
@@ -53,6 +53,7 @@
                                  const KURL&,
                                  unsigned prerender_rel_types);
 
+  PrerenderHandle(Document&, Prerender*);
   virtual ~PrerenderHandle();
 
   void Cancel();
@@ -65,8 +66,6 @@
   EAGERLY_FINALIZE();
 
  private:
-  PrerenderHandle(Document&, Prerender*);
-
   void Detach();
 
   Member<Prerender> prerender_;
diff --git a/third_party/blink/renderer/core/loader/progress_tracker.cc b/third_party/blink/renderer/core/loader/progress_tracker.cc
index ce1fa37..1e0088c4 100644
--- a/third_party/blink/renderer/core/loader/progress_tracker.cc
+++ b/third_party/blink/renderer/core/loader/progress_tracker.cc
@@ -66,7 +66,7 @@
 };
 
 ProgressTracker* ProgressTracker::Create(LocalFrame* frame) {
-  return new ProgressTracker(frame);
+  return MakeGarbageCollected<ProgressTracker>(frame);
 }
 
 ProgressTracker::ProgressTracker(LocalFrame* frame)
diff --git a/third_party/blink/renderer/core/loader/progress_tracker.h b/third_party/blink/renderer/core/loader/progress_tracker.h
index 036571e..4ff4e18 100644
--- a/third_party/blink/renderer/core/loader/progress_tracker.h
+++ b/third_party/blink/renderer/core/loader/progress_tracker.h
@@ -52,6 +52,7 @@
  public:
   static ProgressTracker* Create(LocalFrame*);
 
+  explicit ProgressTracker(LocalFrame*);
   ~ProgressTracker();
   void Trace(blink::Visitor*);
   void Dispose();
@@ -70,8 +71,6 @@
   void CompleteProgress(unsigned long identifier);
 
  private:
-  explicit ProgressTracker(LocalFrame*);
-
   LocalFrameClient* GetLocalFrameClient() const;
 
   void MaybeSendProgress();
diff --git a/third_party/blink/renderer/core/loader/progress_tracker_test.cc b/third_party/blink/renderer/core/loader/progress_tracker_test.cc
index 4cbb6faa..cb9ca79 100644
--- a/third_party/blink/renderer/core/loader/progress_tracker_test.cc
+++ b/third_party/blink/renderer/core/loader/progress_tracker_test.cc
@@ -34,7 +34,7 @@
   }
 
   void SetUp() override {
-    client_ = new ProgressClient;
+    client_ = MakeGarbageCollected<ProgressClient>();
     PageTestBase::SetupPageWithClients(nullptr, client_.Get());
   }
 
diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc
index 29aad26c..bee3dcd 100644
--- a/third_party/blink/renderer/core/page/page.cc
+++ b/third_party/blink/renderer/core/page/page.cc
@@ -124,7 +124,7 @@
 }
 
 Page* Page::Create(PageClients& page_clients) {
-  Page* page = new Page(page_clients);
+  Page* page = MakeGarbageCollected<Page>(page_clients);
   page->SetPageScheduler(ThreadScheduler::Current()->CreatePageScheduler(page));
   return page;
 }
diff --git a/third_party/blink/renderer/core/page/page.h b/third_party/blink/renderer/core/page/page.h
index 8d2baa9..676f1c7 100644
--- a/third_party/blink/renderer/core/page/page.h
+++ b/third_party/blink/renderer/core/page/page.h
@@ -109,6 +109,7 @@
   // An "ordinary" page is a fully-featured page owned by a web view.
   static Page* CreateOrdinary(PageClients&, Page* opener);
 
+  explicit Page(PageClients&);
   ~Page() override;
 
   void CloseSoon();
@@ -320,8 +321,6 @@
  private:
   friend class ScopedPagePauser;
 
-  explicit Page(PageClients&);
-
   void InitGroup();
 
   // SettingsDelegate overrides.
diff --git a/third_party/blink/renderer/core/page/page_animator.cc b/third_party/blink/renderer/core/page/page_animator.cc
index 8215706..6482e12c 100644
--- a/third_party/blink/renderer/core/page/page_animator.cc
+++ b/third_party/blink/renderer/core/page/page_animator.cc
@@ -23,7 +23,7 @@
       updating_layout_and_style_for_painting_(false) {}
 
 PageAnimator* PageAnimator::Create(Page& page) {
-  return new PageAnimator(page);
+  return MakeGarbageCollected<PageAnimator>(page);
 }
 
 void PageAnimator::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/page/page_animator.h b/third_party/blink/renderer/core/page/page_animator.h
index 24e2d52..2f127f66 100644
--- a/third_party/blink/renderer/core/page/page_animator.h
+++ b/third_party/blink/renderer/core/page/page_animator.h
@@ -18,6 +18,9 @@
 class CORE_EXPORT PageAnimator final : public GarbageCollected<PageAnimator> {
  public:
   static PageAnimator* Create(Page&);
+
+  explicit PageAnimator(Page&);
+
   void Trace(blink::Visitor*);
   void ScheduleVisualUpdate(LocalFrame*);
   void ServiceScriptedAnimations(
@@ -40,8 +43,6 @@
   AnimationClock& Clock() { return animation_clock_; }
 
  private:
-  explicit PageAnimator(Page&);
-
   Member<Page> page_;
   bool servicing_animations_;
   bool updating_layout_and_style_for_painting_;
diff --git a/third_party/blink/renderer/core/page/page_popup_controller.cc b/third_party/blink/renderer/core/page/page_popup_controller.cc
index 433aeea..fa7fceee 100644
--- a/third_party/blink/renderer/core/page/page_popup_controller.cc
+++ b/third_party/blink/renderer/core/page/page_popup_controller.cc
@@ -45,7 +45,7 @@
 
 PagePopupController* PagePopupController::Create(PagePopup& popup,
                                                  PagePopupClient* client) {
-  return new PagePopupController(popup, client);
+  return MakeGarbageCollected<PagePopupController>(popup, client);
 }
 
 void PagePopupController::setValueAndClosePopup(int num_value,
diff --git a/third_party/blink/renderer/core/page/page_popup_controller.h b/third_party/blink/renderer/core/page/page_popup_controller.h
index dc4d5bf..53653b68 100644
--- a/third_party/blink/renderer/core/page/page_popup_controller.h
+++ b/third_party/blink/renderer/core/page/page_popup_controller.h
@@ -46,6 +46,9 @@
 
  public:
   static PagePopupController* Create(PagePopup&, PagePopupClient*);
+
+  PagePopupController(PagePopup&, PagePopupClient*);
+
   void setValueAndClosePopup(int num_value, const String& string_value);
   void setValue(const String&);
   void closePopup();
@@ -60,8 +63,6 @@
   void setWindowRect(int x, int y, int width, int height);
 
  private:
-  PagePopupController(PagePopup&, PagePopupClient*);
-
   PagePopup& popup_;
   PagePopupClient* popup_client_;
 };
diff --git a/third_party/blink/renderer/core/page/page_popup_supplement.cc b/third_party/blink/renderer/core/page/page_popup_supplement.cc
index 241ceea..c09b2ae7 100644
--- a/third_party/blink/renderer/core/page/page_popup_supplement.cc
+++ b/third_party/blink/renderer/core/page/page_popup_supplement.cc
@@ -63,7 +63,8 @@
                                   PagePopup& popup,
                                   PagePopupClient* popup_client) {
   DCHECK(popup_client);
-  ProvideTo(frame, new PagePopupSupplement(frame, popup, popup_client));
+  ProvideTo(frame, MakeGarbageCollected<PagePopupSupplement>(frame, popup,
+                                                             popup_client));
 }
 
 void PagePopupSupplement::Uninstall(LocalFrame& frame) {
diff --git a/third_party/blink/renderer/core/page/page_popup_supplement.h b/third_party/blink/renderer/core/page/page_popup_supplement.h
index f3136d9..c1511cb 100644
--- a/third_party/blink/renderer/core/page/page_popup_supplement.h
+++ b/third_party/blink/renderer/core/page/page_popup_supplement.h
@@ -55,10 +55,12 @@
   static void Uninstall(LocalFrame&);
 
   PagePopupController* GetPagePopupController() const;
+
+  PagePopupSupplement(LocalFrame&, PagePopup&, PagePopupClient*);
+
   void Trace(blink::Visitor*) override;
 
  private:
-  PagePopupSupplement(LocalFrame&, PagePopup&, PagePopupClient*);
   void Dispose();
 
   Member<PagePopupController> controller_;
diff --git a/third_party/blink/renderer/core/page/pointer_lock_controller.cc b/third_party/blink/renderer/core/page/pointer_lock_controller.cc
index 337e2659..7ab0459 100644
--- a/third_party/blink/renderer/core/page/pointer_lock_controller.cc
+++ b/third_party/blink/renderer/core/page/pointer_lock_controller.cc
@@ -40,7 +40,7 @@
     : page_(page), lock_pending_(false) {}
 
 PointerLockController* PointerLockController::Create(Page* page) {
-  return new PointerLockController(page);
+  return MakeGarbageCollected<PointerLockController>(page);
 }
 
 void PointerLockController::RequestPointerLock(Element* target) {
diff --git a/third_party/blink/renderer/core/page/pointer_lock_controller.h b/third_party/blink/renderer/core/page/pointer_lock_controller.h
index b22b611..681c3e4 100644
--- a/third_party/blink/renderer/core/page/pointer_lock_controller.h
+++ b/third_party/blink/renderer/core/page/pointer_lock_controller.h
@@ -44,6 +44,8 @@
  public:
   static PointerLockController* Create(Page*);
 
+  explicit PointerLockController(Page*);
+
   void RequestPointerLock(Element* target);
   void RequestPointerUnlock();
   void ElementRemoved(Element*);
@@ -62,7 +64,6 @@
   void Trace(blink::Visitor*);
 
  private:
-  explicit PointerLockController(Page*);
   void ClearElement();
   void EnqueueEvent(const AtomicString& type, Element*);
   void EnqueueEvent(const AtomicString& type, Document*);
diff --git a/third_party/blink/renderer/core/page/print_context.cc b/third_party/blink/renderer/core/page/print_context.cc
index 1cf8b1a..358bebb 100644
--- a/third_party/blink/renderer/core/page/print_context.cc
+++ b/third_party/blink/renderer/core/page/print_context.cc
@@ -327,7 +327,9 @@
 }
 
 ScopedPrintContext::ScopedPrintContext(LocalFrame* frame)
-    : context_(new PrintContext(frame, /*use_printing_layout=*/true)) {}
+    : context_(
+          MakeGarbageCollected<PrintContext>(frame,
+                                             /*use_printing_layout=*/true)) {}
 
 ScopedPrintContext::~ScopedPrintContext() {
   context_->EndPrintMode();
diff --git a/third_party/blink/renderer/core/page/print_context_test.cc b/third_party/blink/renderer/core/page/print_context_test.cc
index ce97c39..6633f49 100644
--- a/third_party/blink/renderer/core/page/print_context_test.cc
+++ b/third_party/blink/renderer/core/page/print_context_test.cc
@@ -72,8 +72,9 @@
 
   void SetUp() override {
     RenderingTest::SetUp();
-    print_context_ = new PrintContext(GetDocument().GetFrame(),
-                                      /*use_printing_layout=*/true);
+    print_context_ =
+        MakeGarbageCollected<PrintContext>(GetDocument().GetFrame(),
+                                           /*use_printing_layout=*/true);
   }
 
   PrintContext& GetPrintContext() { return *print_context_.Get(); }
diff --git a/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.cc b/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.cc
index 18dde2a..20099b81 100644
--- a/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.cc
+++ b/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.cc
@@ -92,7 +92,7 @@
 
 // static
 RootScrollerController* RootScrollerController::Create(Document& document) {
-  return new RootScrollerController(document);
+  return MakeGarbageCollected<RootScrollerController>(document);
 }
 
 RootScrollerController::RootScrollerController(Document& document)
diff --git a/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h b/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h
index 07daee1e..3ca6c59 100644
--- a/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h
+++ b/third_party/blink/renderer/core/page/scrolling/root_scroller_controller.h
@@ -42,6 +42,8 @@
   // of this class need to be made aware of layout updates.
   static RootScrollerController* Create(Document&);
 
+  RootScrollerController(Document&);
+
   void Trace(blink::Visitor*);
 
   // Sets the element that will be used as the root scroller. This can be
@@ -93,8 +95,6 @@
   void PerformRootScrollerSelection();
 
  private:
-  RootScrollerController(Document&);
-
   // Ensures the effective root scroller is currently valid and replaces it
   // with the default if not.
   void RecomputeEffectiveRootScroller();
diff --git a/third_party/blink/renderer/core/paint/paint_layer.cc b/third_party/blink/renderer/core/paint/paint_layer.cc
index bcd9abe..972ea3d7 100644
--- a/third_party/blink/renderer/core/paint/paint_layer.cc
+++ b/third_party/blink/renderer/core/paint/paint_layer.cc
@@ -3265,8 +3265,10 @@
 
 PaintLayerResourceInfo& PaintLayer::EnsureResourceInfo() {
   PaintLayerRareData& rare_data = EnsureRareData();
-  if (!rare_data.resource_info)
-    rare_data.resource_info = new PaintLayerResourceInfo(this);
+  if (!rare_data.resource_info) {
+    rare_data.resource_info =
+        MakeGarbageCollected<PaintLayerResourceInfo>(this);
+  }
   return *rare_data.resource_info;
 }
 
diff --git a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
index c44aa7e..48def2b 100644
--- a/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
+++ b/third_party/blink/renderer/core/paint/paint_layer_scrollable_area.h
@@ -244,9 +244,10 @@
   // FIXME: We should pass in the LayoutBox but this opens a window
   // for crashers during PaintLayer setup (see crbug.com/368062).
   static PaintLayerScrollableArea* Create(PaintLayer& layer) {
-    return new PaintLayerScrollableArea(layer);
+    return MakeGarbageCollected<PaintLayerScrollableArea>(layer);
   }
 
+  explicit PaintLayerScrollableArea(PaintLayer&);
   ~PaintLayerScrollableArea() override;
   void Dispose();
   bool HasBeenDisposed() const override;
@@ -552,8 +553,6 @@
   }
 
  private:
-  explicit PaintLayerScrollableArea(PaintLayer&);
-
   bool NeedsScrollbarReconstruction() const;
 
   void ResetScrollOriginChanged() { scroll_origin_changed_ = false; }
diff --git a/third_party/blink/renderer/core/paint/paint_timing.cc b/third_party/blink/renderer/core/paint/paint_timing.cc
index fc43dde..5cd87b8 100644
--- a/third_party/blink/renderer/core/paint/paint_timing.cc
+++ b/third_party/blink/renderer/core/paint/paint_timing.cc
@@ -47,7 +47,7 @@
 PaintTiming& PaintTiming::From(Document& document) {
   PaintTiming* timing = Supplement<Document>::From<PaintTiming>(document);
   if (!timing) {
-    timing = new PaintTiming(document);
+    timing = MakeGarbageCollected<PaintTiming>(document);
     ProvideTo(document, timing);
   }
   return *timing;
diff --git a/third_party/blink/renderer/core/paint/paint_timing.h b/third_party/blink/renderer/core/paint/paint_timing.h
index 7990b7b..ea77cac 100644
--- a/third_party/blink/renderer/core/paint/paint_timing.h
+++ b/third_party/blink/renderer/core/paint/paint_timing.h
@@ -35,6 +35,7 @@
  public:
   static const char kSupplementName[];
 
+  explicit PaintTiming(Document&);
   virtual ~PaintTiming() = default;
 
   static PaintTiming& From(Document&);
@@ -110,7 +111,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit PaintTiming(Document&);
   LocalFrame* GetFrame() const;
   void NotifyPaintTimingChanged();
 
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer.cc b/third_party/blink/renderer/core/resize_observer/resize_observer.cc
index 33acd56e..831ac96 100644
--- a/third_party/blink/renderer/core/resize_observer/resize_observer.cc
+++ b/third_party/blink/renderer/core/resize_observer/resize_observer.cc
@@ -17,11 +17,11 @@
 
 ResizeObserver* ResizeObserver::Create(Document& document,
                                        V8ResizeObserverCallback* callback) {
-  return new ResizeObserver(callback, document);
+  return MakeGarbageCollected<ResizeObserver>(callback, document);
 }
 
 ResizeObserver* ResizeObserver::Create(Document& document, Delegate* delegate) {
-  return new ResizeObserver(delegate, document);
+  return MakeGarbageCollected<ResizeObserver>(delegate, document);
 }
 
 ResizeObserver::ResizeObserver(V8ResizeObserverCallback* callback,
@@ -50,7 +50,7 @@
   if (observer_map.Contains(this))
     return;  // Already registered.
 
-  auto* observation = new ResizeObservation(target, this);
+  auto* observation = MakeGarbageCollected<ResizeObservation>(target, this);
   observations_.insert(observation);
   observer_map.Set(this, observation);
 
@@ -141,7 +141,8 @@
       content_rect.SetHeight(AdjustForAbsoluteZoom::AdjustLayoutUnit(
           content_rect.Height(), style));
     }
-    auto* entry = new ResizeObserverEntry(observation->Target(), content_rect);
+    auto* entry = MakeGarbageCollected<ResizeObserverEntry>(
+        observation->Target(), content_rect);
     entries.push_back(entry);
   }
 
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer.h b/third_party/blink/renderer/core/resize_observer/resize_observer.h
index 1aaea12..384c9ca 100644
--- a/third_party/blink/renderer/core/resize_observer/resize_observer.h
+++ b/third_party/blink/renderer/core/resize_observer/resize_observer.h
@@ -43,6 +43,8 @@
   static ResizeObserver* Create(Document&, V8ResizeObserverCallback*);
   static ResizeObserver* Create(Document&, Delegate*);
 
+  ResizeObserver(V8ResizeObserverCallback*, Document&);
+  ResizeObserver(Delegate*, Document&);
   ~ResizeObserver() override = default;
 
   // API methods
@@ -64,9 +66,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  ResizeObserver(V8ResizeObserverCallback*, Document&);
-  ResizeObserver(Delegate*, Document&);
-
   using ObservationList = HeapLinkedHashSet<WeakMember<ResizeObservation>>;
 
   // Either of |callback_| and |delegate_| should be non-null.
diff --git a/third_party/blink/renderer/core/resize_observer/resize_observer_test.cc b/third_party/blink/renderer/core/resize_observer/resize_observer_test.cc
index 24cbf2f..1c02202 100644
--- a/third_party/blink/renderer/core/resize_observer/resize_observer_test.cc
+++ b/third_party/blink/renderer/core/resize_observer/resize_observer_test.cc
@@ -74,9 +74,9 @@
   Element* dom_target = GetDocument().getElementById("domTarget");
   Element* svg_target = GetDocument().getElementById("svgTarget");
   ResizeObservation* dom_observation =
-      new ResizeObservation(dom_target, observer);
+      MakeGarbageCollected<ResizeObservation>(dom_target, observer);
   ResizeObservation* svg_observation =
-      new ResizeObservation(svg_target, observer);
+      MakeGarbageCollected<ResizeObservation>(svg_target, observer);
 
   // Initial observation is out of sync
   ASSERT_TRUE(dom_observation->ObservationSizeOutOfSync());
diff --git a/third_party/blink/renderer/core/scroll/programmatic_scroll_animator.h b/third_party/blink/renderer/core/scroll/programmatic_scroll_animator.h
index f85c443..4e4b708f 100644
--- a/third_party/blink/renderer/core/scroll/programmatic_scroll_animator.h
+++ b/third_party/blink/renderer/core/scroll/programmatic_scroll_animator.h
@@ -28,9 +28,10 @@
 
  public:
   static ProgrammaticScrollAnimator* Create(ScrollableArea* scrollable_area) {
-    return new ProgrammaticScrollAnimator(scrollable_area);
+    return MakeGarbageCollected<ProgrammaticScrollAnimator>(scrollable_area);
   }
 
+  explicit ProgrammaticScrollAnimator(ScrollableArea*);
   ~ProgrammaticScrollAnimator() override;
 
   void ScrollToOffsetWithoutAnimation(const ScrollOffset&,
@@ -54,8 +55,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit ProgrammaticScrollAnimator(ScrollableArea*);
-
   void NotifyOffsetChanged(const ScrollOffset&);
   void AnimationFinished();
 
diff --git a/third_party/blink/renderer/core/streams/underlying_source_base.cc b/third_party/blink/renderer/core/streams/underlying_source_base.cc
index 0d58346..3f7700e7 100644
--- a/third_party/blink/renderer/core/streams/underlying_source_base.cc
+++ b/third_party/blink/renderer/core/streams/underlying_source_base.cc
@@ -18,7 +18,8 @@
   // construct multiple streams).
   DCHECK(!controller_);
 
-  controller_ = new ReadableStreamDefaultControllerWrapper(js_controller);
+  controller_ = MakeGarbageCollected<ReadableStreamDefaultControllerWrapper>(
+      js_controller);
 
   return Start(script_state);
 }
diff --git a/third_party/blink/renderer/core/style/content_data.cc b/third_party/blink/renderer/core/style/content_data.cc
index 6175e0b..71af0bca 100644
--- a/third_party/blink/renderer/core/style/content_data.cc
+++ b/third_party/blink/renderer/core/style/content_data.cc
@@ -47,7 +47,7 @@
 }
 
 ContentData* ContentData::Create(QuoteType quote) {
-  return new QuoteContentData(quote);
+  return MakeGarbageCollected<QuoteContentData>(quote);
 }
 
 ContentData* ContentData::Clone() const {
diff --git a/third_party/blink/renderer/core/style/content_data.h b/third_party/blink/renderer/core/style/content_data.h
index eed5cbe..9dfcb0e9 100644
--- a/third_party/blink/renderer/core/style/content_data.h
+++ b/third_party/blink/renderer/core/style/content_data.h
@@ -177,6 +177,8 @@
   friend class ContentData;
 
  public:
+  QuoteContentData(QuoteType quote) : quote_(quote) {}
+
   QuoteType Quote() const { return quote_; }
   void SetQuote(QuoteType quote) { quote_ = quote; }
 
@@ -191,8 +193,6 @@
   }
 
  private:
-  QuoteContentData(QuoteType quote) : quote_(quote) {}
-
   ContentData* CloneInternal() const override { return Create(Quote()); }
 
   QuoteType quote_;
diff --git a/third_party/blink/renderer/core/style/filter_operation.h b/third_party/blink/renderer/core/style/filter_operation.h
index 5ea6f1c7..bd8ae57 100644
--- a/third_party/blink/renderer/core/style/filter_operation.h
+++ b/third_party/blink/renderer/core/style/filter_operation.h
@@ -132,9 +132,11 @@
  public:
   static ReferenceFilterOperation* Create(const AtomicString& url,
                                           SVGResource* resource) {
-    return new ReferenceFilterOperation(url, resource);
+    return MakeGarbageCollected<ReferenceFilterOperation>(url, resource);
   }
 
+  ReferenceFilterOperation(const AtomicString& url, SVGResource*);
+
   bool AffectsOpacity() const override { return true; }
   bool MovesPixels() const override { return true; }
   FloatRect MapRect(const FloatRect&) const override;
@@ -152,8 +154,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  ReferenceFilterOperation(const AtomicString& url, SVGResource*);
-
   FilterOperation* Blend(const FilterOperation* from,
                          double progress) const override {
     NOTREACHED();
diff --git a/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc b/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc
index d3dcbf85e..4325e7cc 100644
--- a/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc
+++ b/third_party/blink/renderer/core/svg/animation/svg_smil_element.cc
@@ -48,21 +48,20 @@
 class RepeatEvent final : public Event {
  public:
   static RepeatEvent* Create(const AtomicString& type, int repeat) {
-    return new RepeatEvent(type, Bubbles::kNo, Cancelable::kNo, repeat);
+    return MakeGarbageCollected<RepeatEvent>(type, Bubbles::kNo,
+                                             Cancelable::kNo, repeat);
   }
 
-  ~RepeatEvent() override = default;
-
-  int Repeat() const { return repeat_; }
-
-  void Trace(blink::Visitor* visitor) override { Event::Trace(visitor); }
-
- protected:
   RepeatEvent(const AtomicString& type,
               Bubbles bubbles,
               Cancelable cancelable,
               int repeat = -1)
       : Event(type, bubbles, cancelable), repeat_(repeat) {}
+  ~RepeatEvent() override = default;
+
+  int Repeat() const { return repeat_; }
+
+  void Trace(blink::Visitor* visitor) override { Event::Trace(visitor); }
 
  private:
   int repeat_;
diff --git a/third_party/blink/renderer/core/svg/pattern_attributes.h b/third_party/blink/renderer/core/svg/pattern_attributes.h
index b19ea53..85e7696 100644
--- a/third_party/blink/renderer/core/svg/pattern_attributes.h
+++ b/third_party/blink/renderer/core/svg/pattern_attributes.h
@@ -172,16 +172,16 @@
     : public GarbageCollected<PatternAttributesWrapper> {
  public:
   static PatternAttributesWrapper* Create() {
-    return new PatternAttributesWrapper;
+    return MakeGarbageCollected<PatternAttributesWrapper>();
   }
 
+  PatternAttributesWrapper() = default;
+
   PatternAttributes& Attributes() { return attributes_; }
   void Set(const PatternAttributes& attributes) { attributes_ = attributes; }
   void Trace(blink::Visitor* visitor) { visitor->Trace(attributes_); }
 
  private:
-  PatternAttributesWrapper() = default;
-
   PatternAttributes attributes_;
 };
 
diff --git a/third_party/blink/renderer/core/svg/radial_gradient_attributes.h b/third_party/blink/renderer/core/svg/radial_gradient_attributes.h
index 1fe61dd..747d1d36 100644
--- a/third_party/blink/renderer/core/svg/radial_gradient_attributes.h
+++ b/third_party/blink/renderer/core/svg/radial_gradient_attributes.h
@@ -117,9 +117,11 @@
     : public GarbageCollectedFinalized<RadialGradientAttributesWrapper> {
  public:
   static RadialGradientAttributesWrapper* Create() {
-    return new RadialGradientAttributesWrapper;
+    return MakeGarbageCollected<RadialGradientAttributesWrapper>();
   }
 
+  RadialGradientAttributesWrapper() = default;
+
   RadialGradientAttributes& Attributes() { return attributes_; }
   void Set(const RadialGradientAttributes& attributes) {
     attributes_ = attributes;
@@ -127,8 +129,6 @@
   void Trace(blink::Visitor* visitor) { visitor->Trace(attributes_); }
 
  private:
-  RadialGradientAttributesWrapper() = default;
-
   RadialGradientAttributes attributes_;
 };
 
diff --git a/third_party/blink/renderer/core/testing/record_test.h b/third_party/blink/renderer/core/testing/record_test.h
index d3acf6af..cda756d 100644
--- a/third_party/blink/renderer/core/testing/record_test.h
+++ b/third_party/blink/renderer/core/testing/record_test.h
@@ -21,7 +21,9 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static RecordTest* Create() { return new RecordTest; }
+  static RecordTest* Create() { return MakeGarbageCollected<RecordTest>(); }
+
+  RecordTest();
   ~RecordTest() override;
 
   void setStringLongRecord(const Vector<std::pair<String, int32_t>>& arg);
@@ -55,8 +57,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RecordTest();
-
   Vector<std::pair<String, int32_t>> string_long_record_;
   base::Optional<Vector<std::pair<String, int32_t>>>
       nullable_string_long_record_;
diff --git a/third_party/blink/renderer/core/timing/performance.cc b/third_party/blink/renderer/core/timing/performance.cc
index ec874b87..777788c 100644
--- a/third_party/blink/renderer/core/timing/performance.cc
+++ b/third_party/blink/renderer/core/timing/performance.cc
@@ -590,7 +590,7 @@
 
 void Performance::AddPaintTiming(PerformancePaintTiming::PaintType type,
                                  TimeTicks start_time) {
-  PerformanceEntry* entry = new PerformancePaintTiming(
+  PerformanceEntry* entry = MakeGarbageCollected<PerformancePaintTiming>(
       type, MonotonicTimeToDOMHighResTimeStamp(start_time));
   // Always buffer First Paint & First Contentful Paint.
   if (type == PerformancePaintTiming::PaintType::kFirstPaint)
diff --git a/third_party/blink/renderer/core/timing/performance_event_timing.cc b/third_party/blink/renderer/core/timing/performance_event_timing.cc
index de16cc8..0fcd390 100644
--- a/third_party/blink/renderer/core/timing/performance_event_timing.cc
+++ b/third_party/blink/renderer/core/timing/performance_event_timing.cc
@@ -19,17 +19,19 @@
   // TODO(npm): enable this DCHECK once https://crbug.com/852846 is fixed.
   // DCHECK_LE(start_time, processing_start);
   DCHECK_LE(processing_start, processing_end);
-  return new PerformanceEventTiming(event_type, performance_entry_names::kEvent,
-                                    start_time, processing_start,
-                                    processing_end, cancelable);
+  return MakeGarbageCollected<PerformanceEventTiming>(
+      event_type, performance_entry_names::kEvent, start_time, processing_start,
+      processing_end, cancelable);
 }
 
 // static
 PerformanceEventTiming* PerformanceEventTiming::CreateFirstInputTiming(
     PerformanceEventTiming* entry) {
-  PerformanceEventTiming* first_input = new PerformanceEventTiming(
-      entry->name(), performance_entry_names::kFirstInput, entry->startTime(),
-      entry->processingStart(), entry->processingEnd(), entry->cancelable());
+  PerformanceEventTiming* first_input =
+      MakeGarbageCollected<PerformanceEventTiming>(
+          entry->name(), performance_entry_names::kFirstInput,
+          entry->startTime(), entry->processingStart(), entry->processingEnd(),
+          entry->cancelable());
   first_input->SetDuration(entry->duration());
   return first_input;
 }
diff --git a/third_party/blink/renderer/core/timing/performance_event_timing.h b/third_party/blink/renderer/core/timing/performance_event_timing.h
index 5adb319..8680dc9 100644
--- a/third_party/blink/renderer/core/timing/performance_event_timing.h
+++ b/third_party/blink/renderer/core/timing/performance_event_timing.h
@@ -25,6 +25,12 @@
   static PerformanceEventTiming* CreateFirstInputTiming(
       PerformanceEventTiming* entry);
 
+  PerformanceEventTiming(const AtomicString& event_type,
+                         const AtomicString& entry_type,
+                         DOMHighResTimeStamp start_time,
+                         DOMHighResTimeStamp processing_start,
+                         DOMHighResTimeStamp processing_end,
+                         bool cancelable);
   ~PerformanceEventTiming() override;
 
   AtomicString entryType() const override { return entry_type_; }
@@ -42,12 +48,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PerformanceEventTiming(const AtomicString& event_type,
-                         const AtomicString& entry_type,
-                         DOMHighResTimeStamp start_time,
-                         DOMHighResTimeStamp processing_start,
-                         DOMHighResTimeStamp processing_end,
-                         bool cancelable);
   AtomicString entry_type_;
   DOMHighResTimeStamp processing_start_;
   DOMHighResTimeStamp processing_end_;
diff --git a/third_party/blink/renderer/core/timing/performance_long_task_timing.cc b/third_party/blink/renderer/core/timing/performance_long_task_timing.cc
index f3161af..970b0f9 100644
--- a/third_party/blink/renderer/core/timing/performance_long_task_timing.cc
+++ b/third_party/blink/renderer/core/timing/performance_long_task_timing.cc
@@ -22,9 +22,9 @@
     const String& frame_id,
     const String& frame_name,
     const SubTaskAttribution::EntriesVector& sub_task_attributions) {
-  return new PerformanceLongTaskTiming(start_time, end_time, name, frame_src,
-                                       frame_id, frame_name,
-                                       sub_task_attributions);
+  return MakeGarbageCollected<PerformanceLongTaskTiming>(
+      start_time, end_time, name, frame_src, frame_id, frame_name,
+      sub_task_attributions);
 }
 
 PerformanceLongTaskTiming::PerformanceLongTaskTiming(
diff --git a/third_party/blink/renderer/core/timing/performance_long_task_timing.h b/third_party/blink/renderer/core/timing/performance_long_task_timing.h
index 7d77508..e903a1e7 100644
--- a/third_party/blink/renderer/core/timing/performance_long_task_timing.h
+++ b/third_party/blink/renderer/core/timing/performance_long_task_timing.h
@@ -29,14 +29,6 @@
       const String& frame_name,
       const SubTaskAttribution::EntriesVector& sub_task_attributions);
 
-  AtomicString entryType() const override;
-  PerformanceEntryType EntryTypeEnum() const override;
-
-  TaskAttributionVector attribution() const;
-
-  void Trace(blink::Visitor*) override;
-
- private:
   PerformanceLongTaskTiming(
       double start_time,
       double end_time,
@@ -45,6 +37,15 @@
       const String& frame_id,
       const String& frame_name,
       const SubTaskAttribution::EntriesVector& sub_task_attributions);
+
+  AtomicString entryType() const override;
+  PerformanceEntryType EntryTypeEnum() const override;
+
+  TaskAttributionVector attribution() const;
+
+  void Trace(blink::Visitor*) override;
+
+ private:
   ~PerformanceLongTaskTiming() override;
 
   void BuildJSONValue(V8ObjectBuilder&) const override;
diff --git a/third_party/blink/renderer/core/timing/performance_mark.h b/third_party/blink/renderer/core/timing/performance_mark.h
index fdd362f3..a472017 100644
--- a/third_party/blink/renderer/core/timing/performance_mark.h
+++ b/third_party/blink/renderer/core/timing/performance_mark.h
@@ -41,9 +41,15 @@
                                  const AtomicString& name,
                                  double start_time,
                                  const ScriptValue& detail) {
-    return new PerformanceMark(script_state, name, start_time, detail);
+    return MakeGarbageCollected<PerformanceMark>(script_state, name, start_time,
+                                                 detail);
   }
 
+  PerformanceMark(ScriptState*,
+                  const AtomicString& name,
+                  double start_time,
+                  const ScriptValue& detail);
+
   AtomicString entryType() const override;
   PerformanceEntryType EntryTypeEnum() const override;
 
@@ -52,11 +58,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PerformanceMark(ScriptState*,
-                  const AtomicString& name,
-                  double start_time,
-                  const ScriptValue& detail);
-
   ~PerformanceMark() override = default;
 
   scoped_refptr<DOMWrapperWorld> world_;
diff --git a/third_party/blink/renderer/core/timing/performance_measure.h b/third_party/blink/renderer/core/timing/performance_measure.h
index 43ba506..e80be2a2 100644
--- a/third_party/blink/renderer/core/timing/performance_measure.h
+++ b/third_party/blink/renderer/core/timing/performance_measure.h
@@ -43,9 +43,16 @@
                                     double start_time,
                                     double end_time,
                                     const ScriptValue& detail) {
-    return new PerformanceMeasure(script_state, name, start_time, end_time,
-                                  detail);
+    return MakeGarbageCollected<PerformanceMeasure>(
+        script_state, name, start_time, end_time, detail);
   }
+
+  PerformanceMeasure(ScriptState*,
+                     const AtomicString& name,
+                     double start_time,
+                     double end_time,
+                     const ScriptValue& detail);
+
   ScriptValue detail(ScriptState*) const;
 
   AtomicString entryType() const override;
@@ -56,11 +63,6 @@
   }
 
  private:
-  PerformanceMeasure(ScriptState*,
-                     const AtomicString& name,
-                     double start_time,
-                     double end_time,
-                     const ScriptValue& detail);
   ~PerformanceMeasure() override = default;
   scoped_refptr<SerializedScriptValue> detail_;
 };
diff --git a/third_party/blink/renderer/core/timing/performance_navigation.h b/third_party/blink/renderer/core/timing/performance_navigation.h
index faac8cb..36c987c 100644
--- a/third_party/blink/renderer/core/timing/performance_navigation.h
+++ b/third_party/blink/renderer/core/timing/performance_navigation.h
@@ -50,9 +50,11 @@
 
  public:
   static PerformanceNavigation* Create(LocalFrame* frame) {
-    return new PerformanceNavigation(frame);
+    return MakeGarbageCollected<PerformanceNavigation>(frame);
   }
 
+  explicit PerformanceNavigation(LocalFrame*);
+
   enum PerformanceNavigationType {
     kTypeNavigate,
     kTypeReload,
@@ -66,9 +68,6 @@
   ScriptValue toJSONForBinding(ScriptState*) const;
 
   void Trace(blink::Visitor*) override;
-
- private:
-  explicit PerformanceNavigation(LocalFrame*);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/timing/performance_observer.cc b/third_party/blink/renderer/core/timing/performance_observer.cc
index be21c17d..6693106 100644
--- a/third_party/blink/renderer/core/timing/performance_observer.cc
+++ b/third_party/blink/renderer/core/timing/performance_observer.cc
@@ -31,12 +31,12 @@
   ExecutionContext* context = ExecutionContext::From(script_state);
   if (window) {
     UseCounter::Count(context, WebFeature::kPerformanceObserverForWindow);
-    return new PerformanceObserver(
+    return MakeGarbageCollected<PerformanceObserver>(
         context, DOMWindowPerformance::performance(*window), callback);
   }
   if (auto* scope = DynamicTo<WorkerGlobalScope>(context)) {
     UseCounter::Count(context, WebFeature::kPerformanceObserverForWorker);
-    return new PerformanceObserver(
+    return MakeGarbageCollected<PerformanceObserver>(
         context, WorkerGlobalScopePerformance::performance(*scope), callback);
   }
   V8ThrowException::ThrowTypeError(
@@ -129,7 +129,7 @@
   PerformanceEntryVector performance_entries;
   performance_entries.swap(performance_entries_);
   PerformanceObserverEntryList* entry_list =
-      new PerformanceObserverEntryList(performance_entries);
+      MakeGarbageCollected<PerformanceObserverEntryList>(performance_entries);
   callback_->InvokeAndReportException(this, entry_list, this);
 }
 
diff --git a/third_party/blink/renderer/core/timing/performance_observer.h b/third_party/blink/renderer/core/timing/performance_observer.h
index bfbc929..b23b07a 100644
--- a/third_party/blink/renderer/core/timing/performance_observer.h
+++ b/third_party/blink/renderer/core/timing/performance_observer.h
@@ -39,6 +39,10 @@
                                      V8PerformanceObserverCallback*);
   static void ResumeSuspendedObservers();
 
+  PerformanceObserver(ExecutionContext*,
+                      Performance*,
+                      V8PerformanceObserverCallback*);
+
   void observe(const PerformanceObserverInit*, ExceptionState&);
   void disconnect();
   PerformanceEntryVector takeRecords();
@@ -51,9 +55,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PerformanceObserver(ExecutionContext*,
-                      Performance*,
-                      V8PerformanceObserverCallback*);
   void Deliver();
   bool ShouldBeSuspended() const;
 
diff --git a/third_party/blink/renderer/core/timing/performance_observer_test.cc b/third_party/blink/renderer/core/timing/performance_observer_test.cc
index 469856dd..d4e9fcc4 100644
--- a/third_party/blink/renderer/core/timing/performance_observer_test.cc
+++ b/third_party/blink/renderer/core/timing/performance_observer_test.cc
@@ -35,8 +35,8 @@
         v8::Function::New(script_state->GetContext(), nullptr).ToLocalChecked();
     base_ = MakeGarbageCollected<MockPerformance>(script_state);
     cb_ = V8PerformanceObserverCallback::Create(callback);
-    observer_ = new PerformanceObserver(ExecutionContext::From(script_state),
-                                        base_, cb_);
+    observer_ = MakeGarbageCollected<PerformanceObserver>(
+        ExecutionContext::From(script_state), base_, cb_);
   }
 
   bool IsRegistered() { return observer_->is_registered_; }
diff --git a/third_party/blink/renderer/core/timing/performance_resource_timing.h b/third_party/blink/renderer/core/timing/performance_resource_timing.h
index 115bb6b..919c4167 100644
--- a/third_party/blink/renderer/core/timing/performance_resource_timing.h
+++ b/third_party/blink/renderer/core/timing/performance_resource_timing.h
@@ -49,12 +49,21 @@
   friend class PerformanceResourceTimingTest;
 
  public:
+  // This constructor is for PerformanceNavigationTiming.
+  // Related doc: https://goo.gl/uNecAj.
+  PerformanceResourceTiming(const AtomicString& name,
+                            TimeTicks time_origin,
+                            const WebVector<WebServerTimingInfo>&);
+  PerformanceResourceTiming(const WebResourceTimingInfo&,
+                            TimeTicks time_origin,
+                            const AtomicString& initiator_type);
   ~PerformanceResourceTiming() override;
   static PerformanceResourceTiming* Create(
       const WebResourceTimingInfo& info,
       TimeTicks time_origin,
       const AtomicString& initiator_type = g_null_atom) {
-    return new PerformanceResourceTiming(info, time_origin, initiator_type);
+    return MakeGarbageCollected<PerformanceResourceTiming>(info, time_origin,
+                                                           initiator_type);
   }
 
   AtomicString entryType() const override;
@@ -85,21 +94,12 @@
  protected:
   void BuildJSONValue(V8ObjectBuilder&) const override;
 
-  // This constructor is for PerformanceNavigationTiming.
-  // Related doc: https://goo.gl/uNecAj.
-  PerformanceResourceTiming(const AtomicString& name,
-                            TimeTicks time_origin,
-                            const WebVector<WebServerTimingInfo>&);
   virtual AtomicString AlpnNegotiatedProtocol() const;
   virtual AtomicString ConnectionInfo() const;
 
   TimeTicks TimeOrigin() const { return time_origin_; }
 
  private:
-  PerformanceResourceTiming(const WebResourceTimingInfo&,
-                            TimeTicks time_origin,
-                            const AtomicString& initiator_type);
-
   static AtomicString GetNextHopProtocol(
       const AtomicString& alpn_negotiated_protocol,
       const AtomicString& connection_info);
diff --git a/third_party/blink/renderer/core/timing/performance_server_timing.cc b/third_party/blink/renderer/core/timing/performance_server_timing.cc
index 63b1dba..291804f 100644
--- a/third_party/blink/renderer/core/timing/performance_server_timing.cc
+++ b/third_party/blink/renderer/core/timing/performance_server_timing.cc
@@ -45,8 +45,8 @@
     const WebVector<WebServerTimingInfo>& entries) {
   HeapVector<Member<PerformanceServerTiming>> result;
   for (const auto& entry : entries) {
-    result.push_back(new PerformanceServerTiming(entry.name, entry.duration,
-                                                 entry.description));
+    result.push_back(MakeGarbageCollected<PerformanceServerTiming>(
+        entry.name, entry.duration, entry.description));
   }
   return result;
 }
diff --git a/third_party/blink/renderer/core/timing/performance_server_timing.h b/third_party/blink/renderer/core/timing/performance_server_timing.h
index 4f453bc..d32262a 100644
--- a/third_party/blink/renderer/core/timing/performance_server_timing.h
+++ b/third_party/blink/renderer/core/timing/performance_server_timing.h
@@ -20,6 +20,9 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
+  PerformanceServerTiming(const String& name,
+                          double duration,
+                          const String& description);
   ~PerformanceServerTiming() override;
 
   const String& name() const { return name_; }
@@ -34,10 +37,6 @@
   ScriptValue toJSONForBinding(ScriptState*) const;
 
  private:
-  PerformanceServerTiming(const String& name,
-                          double duration,
-                          const String& description);
-
   const String name_;
   double duration_;
   const String description_;
diff --git a/third_party/blink/renderer/core/timing/performance_test.cc b/third_party/blink/renderer/core/timing/performance_test.cc
index d5aba7a..794d214 100644
--- a/third_party/blink/renderer/core/timing/performance_test.cc
+++ b/third_party/blink/renderer/core/timing/performance_test.cc
@@ -50,8 +50,8 @@
         v8::Function::New(script_state->GetContext(), nullptr).ToLocalChecked();
     base_ = MakeGarbageCollected<TestPerformance>(script_state);
     cb_ = V8PerformanceObserverCallback::Create(callback);
-    observer_ = new PerformanceObserver(ExecutionContext::From(script_state),
-                                        base_, cb_);
+    observer_ = MakeGarbageCollected<PerformanceObserver>(
+        ExecutionContext::From(script_state), base_, cb_);
   }
 
   void SetUp() override {
diff --git a/third_party/blink/renderer/core/timing/performance_timing.h b/third_party/blink/renderer/core/timing/performance_timing.h
index 4423f9b5..3fdb85a 100644
--- a/third_party/blink/renderer/core/timing/performance_timing.h
+++ b/third_party/blink/renderer/core/timing/performance_timing.h
@@ -60,9 +60,11 @@
 
  public:
   static PerformanceTiming* Create(LocalFrame* frame) {
-    return new PerformanceTiming(frame);
+    return MakeGarbageCollected<PerformanceTiming>(frame);
   }
 
+  explicit PerformanceTiming(LocalFrame*);
+
   unsigned long long navigationStart() const;
   unsigned long long inputStart() const;
   unsigned long long unloadEventStart() const;
@@ -156,8 +158,6 @@
   unsigned long long MonotonicTimeToIntegerMilliseconds(TimeTicks) const;
 
  private:
-  explicit PerformanceTiming(LocalFrame*);
-
   const DocumentTiming* GetDocumentTiming() const;
   const CSSTiming* CssTiming() const;
   const DocumentParserTiming* GetDocumentParserTiming() const;
diff --git a/third_party/blink/renderer/core/timing/window_performance.cc b/third_party/blink/renderer/core/timing/window_performance.cc
index 7448d20..9004cc77 100644
--- a/third_party/blink/renderer/core/timing/window_performance.cc
+++ b/third_party/blink/renderer/core/timing/window_performance.cc
@@ -191,8 +191,8 @@
       PerformanceServerTiming::ParseServerTiming(*info);
   if (!server_timing.empty())
     UseCounter::Count(GetFrame(), WebFeature::kPerformanceServerTiming);
-  return new PerformanceNavigationTiming(GetFrame(), info, time_origin_,
-                                         server_timing);
+  return MakeGarbageCollected<PerformanceNavigationTiming>(
+      GetFrame(), info, time_origin_, server_timing);
 }
 
 void WindowPerformance::UpdateLongTaskInstrumentation() {
diff --git a/third_party/blink/renderer/core/workers/parent_execution_context_task_runners.cc b/third_party/blink/renderer/core/workers/parent_execution_context_task_runners.cc
index 884dade..1fd643b3 100644
--- a/third_party/blink/renderer/core/workers/parent_execution_context_task_runners.cc
+++ b/third_party/blink/renderer/core/workers/parent_execution_context_task_runners.cc
@@ -17,11 +17,11 @@
     ExecutionContext* context) {
   DCHECK(context);
   DCHECK(context->IsContextThread());
-  return new ParentExecutionContextTaskRunners(context);
+  return MakeGarbageCollected<ParentExecutionContextTaskRunners>(context);
 }
 
 ParentExecutionContextTaskRunners* ParentExecutionContextTaskRunners::Create() {
-  return new ParentExecutionContextTaskRunners(nullptr);
+  return MakeGarbageCollected<ParentExecutionContextTaskRunners>(nullptr);
 }
 
 ParentExecutionContextTaskRunners::ParentExecutionContextTaskRunners(
diff --git a/third_party/blink/renderer/core/workers/parent_execution_context_task_runners.h b/third_party/blink/renderer/core/workers/parent_execution_context_task_runners.h
index 87f22db..05adfb5d 100644
--- a/third_party/blink/renderer/core/workers/parent_execution_context_task_runners.h
+++ b/third_party/blink/renderer/core/workers/parent_execution_context_task_runners.h
@@ -35,6 +35,10 @@
   // tests that don't have a parent frame.
   static ParentExecutionContextTaskRunners* Create();
 
+  // ExecutionContext could be nullptr if the worker is not associated with a
+  // particular context.
+  explicit ParentExecutionContextTaskRunners(ExecutionContext*);
+
   // Might return nullptr for unsupported task types. This can be called from
   // any threads.
   scoped_refptr<base::SingleThreadTaskRunner> Get(TaskType)
@@ -48,10 +52,6 @@
                                     WTF::IntHash<TaskType>,
                                     TaskTypeTraits>;
 
-  // ExecutionContext could be nullptr if the worker is not associated with a
-  // particular context.
-  explicit ParentExecutionContextTaskRunners(ExecutionContext*);
-
   void ContextDestroyed(ExecutionContext*) LOCKS_EXCLUDED(mutex_) override;
 
   Mutex mutex_;
diff --git a/third_party/blink/renderer/modules/canvas/canvas2d/path_2d.h b/third_party/blink/renderer/modules/canvas/canvas2d/path_2d.h
index 44911fb..84eb2b0 100644
--- a/third_party/blink/renderer/modules/canvas/canvas2d/path_2d.h
+++ b/third_party/blink/renderer/modules/canvas/canvas2d/path_2d.h
@@ -49,14 +49,16 @@
   static Path2D* Create(Path2DOrString pathorstring) {
     DCHECK(!pathorstring.IsNull());
     if (pathorstring.IsPath2D())
-      return new Path2D(pathorstring.GetAsPath2D());
+      return MakeGarbageCollected<Path2D>(pathorstring.GetAsPath2D());
     if (pathorstring.IsString())
-      return new Path2D(pathorstring.GetAsString());
+      return MakeGarbageCollected<Path2D>(pathorstring.GetAsString());
     NOTREACHED();
     return nullptr;
   }
-  static Path2D* Create() { return new Path2D; }
-  static Path2D* Create(const Path& path) { return new Path2D(path); }
+  static Path2D* Create() { return MakeGarbageCollected<Path2D>(); }
+  static Path2D* Create(const Path& path) {
+    return MakeGarbageCollected<Path2D>(path);
+  }
 
   const Path& GetPath() const { return path_; }
 
@@ -70,18 +72,13 @@
     path_.AddPath(path->GetPath(), matrix->GetAffineTransform());
   }
 
-  ~Path2D() override = default;
-
- private:
   Path2D() : CanvasPath() {}
-
   Path2D(const Path& path) : CanvasPath(path) {}
-
   Path2D(Path2D* path) : CanvasPath(path->GetPath()) {}
-
   Path2D(const String& path_data) : CanvasPath() {
     BuildPathFromString(path_data, path_);
   }
+  ~Path2D() override = default;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/credentialmanager/password_credential.cc b/third_party/blink/renderer/modules/credentialmanager/password_credential.cc
index dad8579..a06539b 100644
--- a/third_party/blink/renderer/modules/credentialmanager/password_credential.cc
+++ b/third_party/blink/renderer/modules/credentialmanager/password_credential.cc
@@ -32,8 +32,8 @@
   if (exception_state.HadException())
     return nullptr;
 
-  return new PasswordCredential(data->id(), data->password(), data->name(),
-                                icon_url);
+  return MakeGarbageCollected<PasswordCredential>(data->id(), data->password(),
+                                                  data->name(), icon_url);
 }
 
 // https://w3c.github.io/webappsec-credential-management/#construct-passwordcredential-form
@@ -84,7 +84,7 @@
                                                const String& password,
                                                const String& name,
                                                const KURL& icon_url) {
-  return new PasswordCredential(id, password, name, icon_url);
+  return MakeGarbageCollected<PasswordCredential>(id, password, name, icon_url);
 }
 
 PasswordCredential::PasswordCredential(const String& id,
diff --git a/third_party/blink/renderer/modules/credentialmanager/password_credential.h b/third_party/blink/renderer/modules/credentialmanager/password_credential.h
index 038a482..168609d 100644
--- a/third_party/blink/renderer/modules/credentialmanager/password_credential.h
+++ b/third_party/blink/renderer/modules/credentialmanager/password_credential.h
@@ -28,6 +28,11 @@
                                     const String& name,
                                     const KURL& icon_url);
 
+  PasswordCredential(const String& id,
+                     const String& password,
+                     const String& name,
+                     const KURL& icon);
+
   // Credential:
   bool IsPasswordCredential() const override;
 
@@ -37,11 +42,6 @@
   const KURL& iconURL() const { return icon_url_; }
 
  private:
-  PasswordCredential(const String& id,
-                     const String& password,
-                     const String& name,
-                     const KURL& icon);
-
   const String password_;
   const String name_;
   const KURL icon_url_;
diff --git a/third_party/blink/renderer/modules/credentialmanager/public_key_credential.cc b/third_party/blink/renderer/modules/credentialmanager/public_key_credential.cc
index 26249cb..405f541 100644
--- a/third_party/blink/renderer/modules/credentialmanager/public_key_credential.cc
+++ b/third_party/blink/renderer/modules/credentialmanager/public_key_credential.cc
@@ -29,7 +29,8 @@
     DOMArrayBuffer* raw_id,
     AuthenticatorResponse* response,
     const AuthenticationExtensionsClientOutputs* extension_outputs) {
-  return new PublicKeyCredential(id, raw_id, response, extension_outputs);
+  return MakeGarbageCollected<PublicKeyCredential>(id, raw_id, response,
+                                                   extension_outputs);
 }
 
 PublicKeyCredential::PublicKeyCredential(
diff --git a/third_party/blink/renderer/modules/credentialmanager/public_key_credential.h b/third_party/blink/renderer/modules/credentialmanager/public_key_credential.h
index f8b82ed..a358b2c 100644
--- a/third_party/blink/renderer/modules/credentialmanager/public_key_credential.h
+++ b/third_party/blink/renderer/modules/credentialmanager/public_key_credential.h
@@ -28,6 +28,12 @@
       AuthenticatorResponse*,
       const AuthenticationExtensionsClientOutputs*);
 
+  explicit PublicKeyCredential(
+      const String& id,
+      DOMArrayBuffer* raw_id,
+      AuthenticatorResponse*,
+      const AuthenticationExtensionsClientOutputs* extension_outputs);
+
   DOMArrayBuffer* rawId() const { return raw_id_.Get(); }
   AuthenticatorResponse* response() const { return response_.Get(); }
   static ScriptPromise isUserVerifyingPlatformAuthenticatorAvailable(
@@ -39,12 +45,6 @@
   bool IsPublicKeyCredential() const override;
 
  private:
-  explicit PublicKeyCredential(
-      const String& id,
-      DOMArrayBuffer* raw_id,
-      AuthenticatorResponse*,
-      const AuthenticationExtensionsClientOutputs* extension_outputs);
-
   const Member<DOMArrayBuffer> raw_id_;
   const Member<AuthenticatorResponse> response_;
   Member<const AuthenticationExtensionsClientOutputs> extension_outputs_;
diff --git a/third_party/blink/renderer/modules/csspaint/css_paint_definition.cc b/third_party/blink/renderer/modules/csspaint/css_paint_definition.cc
index aaae8633..e27b374 100644
--- a/third_party/blink/renderer/modules/csspaint/css_paint_definition.cc
+++ b/third_party/blink/renderer/modules/csspaint/css_paint_definition.cc
@@ -97,7 +97,7 @@
       RoundedIntSize(container_size), color_params, context_settings_, zoom);
   PaintSize* paint_size = PaintSize::Create(specified_size);
   StylePropertyMapReadOnly* style_map =
-      new PrepopulatedComputedStylePropertyMap(
+      MakeGarbageCollected<PrepopulatedComputedStylePropertyMap>(
           layout_object.GetDocument(), layout_object.StyleRef(),
           layout_object.GetNode(), native_invalidation_properties_,
           custom_invalidation_properties_);
diff --git a/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.h b/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.h
index 20967530..9d390fa3 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.h
+++ b/third_party/blink/renderer/modules/csspaint/paint_rendering_context_2d.h
@@ -30,10 +30,15 @@
       const CanvasColorParams& color_params,
       const PaintRenderingContext2DSettings* context_settings,
       float zoom) {
-    return new PaintRenderingContext2D(container_size, color_params,
-                                       context_settings, zoom);
+    return MakeGarbageCollected<PaintRenderingContext2D>(
+        container_size, color_params, context_settings, zoom);
   }
 
+  PaintRenderingContext2D(const IntSize& container_size,
+                          const CanvasColorParams&,
+                          const PaintRenderingContext2DSettings*,
+                          float zoom);
+
   void Trace(blink::Visitor* visitor) override {
     visitor->Trace(context_settings_);
     ScriptWrappable::Trace(visitor);
@@ -89,11 +94,6 @@
   void WillOverwriteCanvas() override;
 
  private:
-  PaintRenderingContext2D(const IntSize& container_size,
-                          const CanvasColorParams&,
-                          const PaintRenderingContext2DSettings*,
-                          float zoom);
-
   void InitializePaintRecorder();
   cc::PaintCanvas* Canvas() const;
 
diff --git a/third_party/blink/renderer/modules/csspaint/paint_size.h b/third_party/blink/renderer/modules/csspaint/paint_size.h
index 40f9c46..283cb805 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_size.h
+++ b/third_party/blink/renderer/modules/csspaint/paint_size.h
@@ -16,15 +16,17 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static PaintSize* Create(FloatSize size) { return new PaintSize(size); }
+  static PaintSize* Create(FloatSize size) {
+    return MakeGarbageCollected<PaintSize>(size);
+  }
+
+  explicit PaintSize(FloatSize size) : size_(size) {}
   ~PaintSize() override = default;
 
   float width() const { return size_.Width(); }
   float height() const { return size_.Height(); }
 
  private:
-  explicit PaintSize(FloatSize size) : size_(size) {}
-
   FloatSize size_;
 };
 
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet.cc b/third_party/blink/renderer/modules/csspaint/paint_worklet.cc
index 86dc6de..62ef724e 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet.cc
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet.cc
@@ -34,7 +34,7 @@
 
 // static
 PaintWorklet* PaintWorklet::Create(LocalFrame* frame) {
-  return new PaintWorklet(frame);
+  return MakeGarbageCollected<PaintWorklet>(frame);
 }
 
 PaintWorklet::PaintWorklet(LocalFrame* frame)
@@ -129,7 +129,7 @@
 WorkletGlobalScopeProxy* PaintWorklet::CreateGlobalScope() {
   DCHECK(NeedsToCreateGlobalScope());
   if (!RuntimeEnabledFeatures::OffMainThreadCSSPaintEnabled()) {
-    return new PaintWorkletGlobalScopeProxy(
+    return MakeGarbageCollected<PaintWorkletGlobalScopeProxy>(
         To<Document>(GetExecutionContext())->GetFrame(), ModuleResponsesMap(),
         pending_generator_registry_, GetNumberOfGlobalScopes() + 1);
   }
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet.h b/third_party/blink/renderer/modules/csspaint/paint_worklet.h
index 4df2043..791459e 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet.h
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet.h
@@ -33,6 +33,7 @@
   static PaintWorklet* From(LocalDOMWindow&);
   static PaintWorklet* Create(LocalFrame*);
 
+  explicit PaintWorklet(LocalFrame*);
   ~PaintWorklet() override;
 
   void AddPendingGenerator(const String& name, CSSPaintImageGeneratorImpl*);
@@ -50,8 +51,6 @@
   void Trace(blink::Visitor*) override;
 
  protected:
-  explicit PaintWorklet(LocalFrame*);
-
   // Since paint worklet has more than one global scope, we MUST override this
   // function and provide our own selection logic.
   wtf_size_t SelectGlobalScope() final;
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.cc b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.cc
index b805ef0..fd6e0ba 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.cc
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.cc
@@ -96,9 +96,9 @@
     PaintWorkletPendingGeneratorRegistry* pending_generator_registry,
     size_t global_scope_number) {
   DCHECK(!RuntimeEnabledFeatures::OffMainThreadCSSPaintEnabled());
-  auto* global_scope =
-      new PaintWorkletGlobalScope(frame, std::move(creation_params),
-                                  reporting_proxy, pending_generator_registry);
+  auto* global_scope = MakeGarbageCollected<PaintWorkletGlobalScope>(
+      frame, std::move(creation_params), reporting_proxy,
+      pending_generator_registry);
   String context_name("PaintWorklet #");
   context_name.append(String::Number(global_scope_number));
   global_scope->ScriptController()->InitializeContextIfNeeded(context_name,
@@ -114,7 +114,8 @@
     std::unique_ptr<GlobalScopeCreationParams> creation_params,
     WorkerThread* thread) {
   DCHECK(RuntimeEnabledFeatures::OffMainThreadCSSPaintEnabled());
-  return new PaintWorkletGlobalScope(std::move(creation_params), thread);
+  return MakeGarbageCollected<PaintWorkletGlobalScope>(
+      std::move(creation_params), thread);
 }
 
 PaintWorkletGlobalScope::PaintWorkletGlobalScope(
diff --git a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.h b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.h
index 95bcd051..958840f 100644
--- a/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.h
+++ b/third_party/blink/renderer/modules/csspaint/paint_worklet_global_scope.h
@@ -37,6 +37,12 @@
       std::unique_ptr<GlobalScopeCreationParams>,
       WorkerThread*);
 
+  PaintWorkletGlobalScope(LocalFrame*,
+                          std::unique_ptr<GlobalScopeCreationParams>,
+                          WorkerReportingProxy&,
+                          PaintWorkletPendingGeneratorRegistry*);
+  PaintWorkletGlobalScope(std::unique_ptr<GlobalScopeCreationParams>,
+                          WorkerThread*);
   ~PaintWorkletGlobalScope() override;
   void Dispose() final;
 
@@ -51,14 +57,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PaintWorkletGlobalScope(LocalFrame*,
-                          std::unique_ptr<GlobalScopeCreationParams>,
-                          WorkerReportingProxy&,
-                          PaintWorkletPendingGeneratorRegistry*);
-
-  PaintWorkletGlobalScope(std::unique_ptr<GlobalScopeCreationParams>,
-                          WorkerThread*);
-
   // Registers the global scope with a proxy client, if not already done. Only
   // used for worklet-thread bound PaintWorkletGlobalScopes.
   void RegisterWithProxyClientIfNeeded();
diff --git a/third_party/blink/renderer/modules/filesystem/dom_window_file_system.cc b/third_party/blink/renderer/modules/filesystem/dom_window_file_system.cc
index 85317b25..1d57b05b 100644
--- a/third_party/blink/renderer/modules/filesystem/dom_window_file_system.cc
+++ b/third_party/blink/renderer/modules/filesystem/dom_window_file_system.cc
@@ -183,12 +183,12 @@
         fs->root(), entry->base_name, FileSystemFlags::Create(),
         MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(
             new_resolver),
-        new PromiseErrorCallback(new_resolver));
+        MakeGarbageCollected<PromiseErrorCallback>(new_resolver));
   } else {
     fs->GetFile(fs->root(), entry->base_name, FileSystemFlags::Create(),
                 MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(
                     new_resolver),
-                new PromiseErrorCallback(new_resolver));
+                MakeGarbageCollected<PromiseErrorCallback>(new_resolver));
   }
   return result;
 }
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_base_handle.cc b/third_party/blink/renderer/modules/filesystem/file_system_base_handle.cc
index 973408af..c6c2d052 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_base_handle.cc
+++ b/third_party/blink/renderer/modules/filesystem/file_system_base_handle.cc
@@ -21,7 +21,7 @@
   filesystem()->GetParent(
       this,
       MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver),
-      new PromiseErrorCallback(resolver));
+      MakeGarbageCollected<PromiseErrorCallback>(resolver));
   return result;
 }
 
@@ -33,7 +33,7 @@
   filesystem()->Move(
       this, parent, name,
       MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver),
-      new PromiseErrorCallback(resolver));
+      MakeGarbageCollected<PromiseErrorCallback>(resolver));
   return result;
 }
 
@@ -45,7 +45,7 @@
   filesystem()->Copy(
       this, parent, name,
       MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver),
-      new PromiseErrorCallback(resolver));
+      MakeGarbageCollected<PromiseErrorCallback>(resolver));
   return result;
 }
 
@@ -54,7 +54,7 @@
   ScriptPromise result = resolver->Promise();
   filesystem()->Remove(this,
                        new VoidCallbacks::OnDidSucceedPromiseImpl(resolver),
-                       new PromiseErrorCallback(resolver));
+                       MakeGarbageCollected<PromiseErrorCallback>(resolver));
   return result;
 }
 
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.cc b/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.cc
index e551158..2afc8215 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.cc
+++ b/third_party/blink/renderer/modules/filesystem/file_system_directory_handle.cc
@@ -28,7 +28,7 @@
   filesystem()->GetFile(
       this, name, flags,
       MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver),
-      new PromiseErrorCallback(resolver));
+      MakeGarbageCollected<PromiseErrorCallback>(resolver));
   return result;
 }
 
@@ -43,7 +43,7 @@
   filesystem()->GetDirectory(
       this, name, flags,
       MakeGarbageCollected<EntryCallbacks::OnDidGetEntryPromiseImpl>(resolver),
-      new PromiseErrorCallback(resolver));
+      MakeGarbageCollected<PromiseErrorCallback>(resolver));
   return result;
 }
 
@@ -60,7 +60,7 @@
       context, mojom::blink::FileSystemType::kTemporary, /*size=*/0,
       FileSystemCallbacks::Create(
           new FileSystemCallbacks::OnDidOpenFileSystemPromiseImpl(resolver),
-          new PromiseErrorCallback(resolver), context,
+          MakeGarbageCollected<PromiseErrorCallback>(resolver), context,
           mojom::blink::FileSystemType::kTemporary),
       LocalFileSystem::kAsynchronous);
   return result;
@@ -96,7 +96,7 @@
   ScriptPromise result = resolver->Promise();
   filesystem()->RemoveRecursively(
       this, new VoidCallbacks::OnDidSucceedPromiseImpl(resolver),
-      new PromiseErrorCallback(resolver));
+      MakeGarbageCollected<PromiseErrorCallback>(resolver));
   return result;
 }
 
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_file_handle.cc b/third_party/blink/renderer/modules/filesystem/file_system_file_handle.cc
index 58bcbe6..15d106d 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_file_handle.cc
+++ b/third_party/blink/renderer/modules/filesystem/file_system_file_handle.cc
@@ -65,12 +65,13 @@
   ScriptPromise result = resolver->Promise();
   KURL file_system_url = filesystem()->CreateFileSystemURL(this);
   FileSystemDispatcher::From(ExecutionContext::From(script_state))
-      .CreateSnapshotFile(file_system_url,
-                          SnapshotFileCallback::Create(
-                              filesystem(), name(), file_system_url,
-                              new OnDidCreateSnapshotFilePromise(resolver),
-                              new PromiseErrorCallback(resolver),
-                              ExecutionContext::From(script_state)));
+      .CreateSnapshotFile(
+          file_system_url,
+          SnapshotFileCallback::Create(
+              filesystem(), name(), file_system_url,
+              new OnDidCreateSnapshotFilePromise(resolver),
+              MakeGarbageCollected<PromiseErrorCallback>(resolver),
+              ExecutionContext::From(script_state)));
   return result;
 }
 
diff --git a/third_party/blink/renderer/modules/filesystem/file_system_writer.cc b/third_party/blink/renderer/modules/filesystem/file_system_writer.cc
index 2154d71..9a0dcd3 100644
--- a/third_party/blink/renderer/modules/filesystem/file_system_writer.cc
+++ b/third_party/blink/renderer/modules/filesystem/file_system_writer.cc
@@ -156,7 +156,8 @@
   auto reader = stream->getReader(script_state, exception_state);
   if (exception_state.HadException())
     return ScriptPromise();
-  auto* consumer = new ReadableStreamBytesConsumer(script_state, reader);
+  auto* consumer =
+      MakeGarbageCollected<ReadableStreamBytesConsumer>(script_state, reader);
 
   stream_loader_ = FetchDataLoader::CreateLoaderAsDataPipe(
       ExecutionContext::From(script_state)
diff --git a/third_party/blink/renderer/modules/geolocation/position_error.h b/third_party/blink/renderer/modules/geolocation/position_error.h
index f25efd13f..ae30a3a 100644
--- a/third_party/blink/renderer/modules/geolocation/position_error.h
+++ b/third_party/blink/renderer/modules/geolocation/position_error.h
@@ -43,18 +43,18 @@
   };
 
   static PositionError* Create(ErrorCode code, const String& message) {
-    return new PositionError(code, message);
+    return MakeGarbageCollected<PositionError>(code, message);
   }
 
+  PositionError(ErrorCode code, const String& message)
+      : code_(code), message_(message), is_fatal_(false) {}
+
   ErrorCode code() const { return code_; }
   const String& message() const { return message_; }
   void SetIsFatal(bool is_fatal) { is_fatal_ = is_fatal; }
   bool IsFatal() const { return is_fatal_; }
 
  private:
-  PositionError(ErrorCode code, const String& message)
-      : code_(code), message_(message), is_fatal_(false) {}
-
   ErrorCode code_;
   String message_;
   // Whether the error is fatal, such that no request can ever obtain a good
diff --git a/third_party/blink/renderer/modules/imagecapture/photo_capabilities.cc b/third_party/blink/renderer/modules/imagecapture/photo_capabilities.cc
index db1f481b2..7da6e62 100644
--- a/third_party/blink/renderer/modules/imagecapture/photo_capabilities.cc
+++ b/third_party/blink/renderer/modules/imagecapture/photo_capabilities.cc
@@ -8,7 +8,7 @@
 
 // static
 PhotoCapabilities* PhotoCapabilities::Create() {
-  return new PhotoCapabilities();
+  return MakeGarbageCollected<PhotoCapabilities>();
 }
 
 Vector<String> PhotoCapabilities::fillLightMode() const {
diff --git a/third_party/blink/renderer/modules/imagecapture/photo_capabilities.h b/third_party/blink/renderer/modules/imagecapture/photo_capabilities.h
index 334c0a3352..802b653 100644
--- a/third_party/blink/renderer/modules/imagecapture/photo_capabilities.h
+++ b/third_party/blink/renderer/modules/imagecapture/photo_capabilities.h
@@ -18,6 +18,8 @@
 
  public:
   static PhotoCapabilities* Create();
+
+  PhotoCapabilities() = default;
   ~PhotoCapabilities() override = default;
 
   MediaSettingsRange* imageHeight() const { return image_height_; }
@@ -41,8 +43,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PhotoCapabilities() = default;
-
   Member<MediaSettingsRange> image_height_;
   Member<MediaSettingsRange> image_width_;
   Vector<media::mojom::blink::FillLightMode> fill_light_modes_;
diff --git a/third_party/blink/renderer/modules/installedapp/related_application.h b/third_party/blink/renderer/modules/installedapp/related_application.h
index 79e64d01..fbddca66 100644
--- a/third_party/blink/renderer/modules/installedapp/related_application.h
+++ b/third_party/blink/renderer/modules/installedapp/related_application.h
@@ -18,9 +18,13 @@
   static RelatedApplication* Create(const String& platform,
                                     const String& url,
                                     const String& id) {
-    return new RelatedApplication(platform, url, id);
+    return MakeGarbageCollected<RelatedApplication>(platform, url, id);
   }
 
+  RelatedApplication(const String& platform,
+                     const String& url,
+                     const String& id)
+      : platform_(platform), url_(url), id_(id) {}
   ~RelatedApplication() override = default;
 
   String platform() const { return platform_; }
@@ -28,11 +32,6 @@
   String id() const { return id_; }
 
  private:
-  RelatedApplication(const String& platform,
-                     const String& url,
-                     const String& id)
-      : platform_(platform), url_(url), id_(id) {}
-
   const String platform_;
   const String url_;
   const String id_;
diff --git a/third_party/blink/renderer/modules/mediastream/media_devices_test.cc b/third_party/blink/renderer/modules/mediastream/media_devices_test.cc
index f37a6e588..57fa303 100644
--- a/third_party/blink/renderer/modules/mediastream/media_devices_test.cc
+++ b/third_party/blink/renderer/modules/mediastream/media_devices_test.cc
@@ -170,12 +170,11 @@
     static v8::Local<v8::Function> CreateFunction(ScriptState* script_state,
                                                   bool* flag_to_set,
                                                   ScriptValue* arg_to_set) {
-      MyScriptFunction* self =
-          new MyScriptFunction(script_state, flag_to_set, arg_to_set);
+      MyScriptFunction* self = MakeGarbageCollected<MyScriptFunction>(
+          script_state, flag_to_set, arg_to_set);
       return self->BindToV8Function();
     }
 
-   private:
     MyScriptFunction(ScriptState* script_state,
                      bool* flag_to_set,
                      ScriptValue* arg_to_set)
@@ -187,6 +186,8 @@
       *arg_to_set_ = arg;
       return arg;
     }
+
+   private:
     bool* flag_to_set_;
     ScriptValue* arg_to_set_;
   };
diff --git a/third_party/blink/renderer/modules/payments/payment_address_test.cc b/third_party/blink/renderer/modules/payments/payment_address_test.cc
index 5ec262e..80f5b65 100644
--- a/third_party/blink/renderer/modules/payments/payment_address_test.cc
+++ b/third_party/blink/renderer/modules/payments/payment_address_test.cc
@@ -28,7 +28,8 @@
   input->recipient = "Jon Doe";
   input->phone = "Phone Number";
 
-  PaymentAddress* output = new PaymentAddress(std::move(input));
+  PaymentAddress* output =
+      MakeGarbageCollected<PaymentAddress>(std::move(input));
 
   EXPECT_EQ("US", output->country());
   EXPECT_EQ(3U, output->addressLine().size());
@@ -51,7 +52,8 @@
       payments::mojom::blink::PaymentAddress::New();
   input->script_code = "Latn";
 
-  PaymentAddress* output = new PaymentAddress(std::move(input));
+  PaymentAddress* output =
+      MakeGarbageCollected<PaymentAddress>(std::move(input));
 
   EXPECT_TRUE(output->languageCode().IsEmpty());
 }
@@ -61,7 +63,8 @@
       payments::mojom::blink::PaymentAddress::New();
   input->language_code = "en";
 
-  PaymentAddress* output = new PaymentAddress(std::move(input));
+  PaymentAddress* output =
+      MakeGarbageCollected<PaymentAddress>(std::move(input));
 
   EXPECT_EQ("en", output->languageCode());
 }
diff --git a/third_party/blink/renderer/modules/payments/payment_app_service_worker_registration.cc b/third_party/blink/renderer/modules/payments/payment_app_service_worker_registration.cc
index d8a139f..55b96f6 100644
--- a/third_party/blink/renderer/modules/payments/payment_app_service_worker_registration.cc
+++ b/third_party/blink/renderer/modules/payments/payment_app_service_worker_registration.cc
@@ -22,7 +22,8 @@
           PaymentAppServiceWorkerRegistration>(registration);
 
   if (!supplement) {
-    supplement = new PaymentAppServiceWorkerRegistration(&registration);
+    supplement = MakeGarbageCollected<PaymentAppServiceWorkerRegistration>(
+        &registration);
     ProvideTo(registration, supplement);
   }
 
diff --git a/third_party/blink/renderer/modules/payments/payment_app_service_worker_registration.h b/third_party/blink/renderer/modules/payments/payment_app_service_worker_registration.h
index 337c715f..5e8f5a0a 100644
--- a/third_party/blink/renderer/modules/payments/payment_app_service_worker_registration.h
+++ b/third_party/blink/renderer/modules/payments/payment_app_service_worker_registration.h
@@ -24,7 +24,9 @@
  public:
   static const char kSupplementName[];
 
+  explicit PaymentAppServiceWorkerRegistration(ServiceWorkerRegistration*);
   virtual ~PaymentAppServiceWorkerRegistration();
+
   static PaymentAppServiceWorkerRegistration& From(ServiceWorkerRegistration&);
 
   static PaymentManager* paymentManager(ScriptState*,
@@ -34,8 +36,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit PaymentAppServiceWorkerRegistration(ServiceWorkerRegistration*);
-
   Member<ServiceWorkerRegistration> registration_;
   Member<PaymentManager> payment_manager_;
 };
diff --git a/third_party/blink/renderer/modules/payments/payment_instruments.cc b/third_party/blink/renderer/modules/payments/payment_instruments.cc
index 6f09a6e..02ba6060 100644
--- a/third_party/blink/renderer/modules/payments/payment_instruments.cc
+++ b/third_party/blink/renderer/modules/payments/payment_instruments.cc
@@ -248,10 +248,11 @@
               mojom::blink::PermissionName::PAYMENT_HANDLER),
           LocalFrame::HasTransientUserActivation(doc ? doc->GetFrame()
                                                      : nullptr),
-          WTF::Bind(&PaymentInstruments::OnRequestPermission,
-                    WrapPersistent(this), WrapPersistent(resolver),
-                    instrument_key,
-                    WrapPersistent(new PaymentInstrumentParameter(details))));
+          WTF::Bind(
+              &PaymentInstruments::OnRequestPermission, WrapPersistent(this),
+              WrapPersistent(resolver), instrument_key,
+              WrapPersistent(
+                  MakeGarbageCollected<PaymentInstrumentParameter>(details))));
   return resolver->Promise();
 }
 
diff --git a/third_party/blink/renderer/modules/payments/payment_manager.cc b/third_party/blink/renderer/modules/payments/payment_manager.cc
index 29517bb..f9db07d 100644
--- a/third_party/blink/renderer/modules/payments/payment_manager.cc
+++ b/third_party/blink/renderer/modules/payments/payment_manager.cc
@@ -16,12 +16,12 @@
 
 PaymentManager* PaymentManager::Create(
     ServiceWorkerRegistration* registration) {
-  return new PaymentManager(registration);
+  return MakeGarbageCollected<PaymentManager>(registration);
 }
 
 PaymentInstruments* PaymentManager::instruments() {
   if (!instruments_)
-    instruments_ = new PaymentInstruments(manager_);
+    instruments_ = MakeGarbageCollected<PaymentInstruments>(manager_);
   return instruments_;
 }
 
diff --git a/third_party/blink/renderer/modules/payments/payment_manager.h b/third_party/blink/renderer/modules/payments/payment_manager.h
index 139d001..20677a3 100644
--- a/third_party/blink/renderer/modules/payments/payment_manager.h
+++ b/third_party/blink/renderer/modules/payments/payment_manager.h
@@ -23,6 +23,8 @@
  public:
   static PaymentManager* Create(ServiceWorkerRegistration*);
 
+  explicit PaymentManager(ServiceWorkerRegistration*);
+
   PaymentInstruments* instruments();
 
   const String& userHint();
@@ -31,8 +33,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit PaymentManager(ServiceWorkerRegistration*);
-
   void OnServiceConnectionError();
 
   Member<ServiceWorkerRegistration> registration_;
diff --git a/third_party/blink/renderer/modules/payments/payment_request.cc b/third_party/blink/renderer/modules/payments/payment_request.cc
index c0608a6..b681a87 100644
--- a/third_party/blink/renderer/modules/payments/payment_request.cc
+++ b/third_party/blink/renderer/modules/payments/payment_request.cc
@@ -778,8 +778,9 @@
     const HeapVector<Member<PaymentMethodData>>& method_data,
     const PaymentDetailsInit* details,
     ExceptionState& exception_state) {
-  return new PaymentRequest(execution_context, method_data, details,
-                            PaymentOptions::Create(), exception_state);
+  return MakeGarbageCollected<PaymentRequest>(execution_context, method_data,
+                                              details, PaymentOptions::Create(),
+                                              exception_state);
 }
 
 PaymentRequest* PaymentRequest::Create(
@@ -788,8 +789,8 @@
     const PaymentDetailsInit* details,
     const PaymentOptions* options,
     ExceptionState& exception_state) {
-  return new PaymentRequest(execution_context, method_data, details, options,
-                            exception_state);
+  return MakeGarbageCollected<PaymentRequest>(
+      execution_context, method_data, details, options, exception_state);
 }
 
 PaymentRequest::~PaymentRequest() = default;
@@ -1152,7 +1153,7 @@
     return;
   }
 
-  shipping_address_ = new PaymentAddress(std::move(address));
+  shipping_address_ = MakeGarbageCollected<PaymentAddress>(std::move(address));
 
   PaymentRequestUpdateEvent* event = PaymentRequestUpdateEvent::Create(
       GetExecutionContext(), event_type_names::kShippingaddresschange);
@@ -1222,8 +1223,8 @@
       return;
     }
 
-    shipping_address_ =
-        new PaymentAddress(std::move(response->shipping_address));
+    shipping_address_ = MakeGarbageCollected<PaymentAddress>(
+        std::move(response->shipping_address));
     shipping_option_ = response->shipping_option;
   } else {
     if (response->shipping_address || !response->shipping_option.IsNull()) {
@@ -1258,9 +1259,9 @@
     // connection to display a success or failure message to the user.
     retry_resolver_.Clear();
   } else if (accept_resolver_) {
-    payment_response_ = new PaymentResponse(accept_resolver_->GetScriptState(),
-                                            std::move(response),
-                                            shipping_address_.Get(), this, id_);
+    payment_response_ = MakeGarbageCollected<PaymentResponse>(
+        accept_resolver_->GetScriptState(), std::move(response),
+        shipping_address_.Get(), this, id_);
     accept_resolver_->Resolve(payment_response_);
 
     // Do not close the mojo connection here. The merchant website should call
diff --git a/third_party/blink/renderer/modules/payments/payment_request.h b/third_party/blink/renderer/modules/payments/payment_request.h
index 1aeb2c3..9045d35 100644
--- a/third_party/blink/renderer/modules/payments/payment_request.h
+++ b/third_party/blink/renderer/modules/payments/payment_request.h
@@ -59,6 +59,11 @@
                                 const PaymentOptions*,
                                 ExceptionState&);
 
+  PaymentRequest(ExecutionContext*,
+                 const HeapVector<Member<PaymentMethodData>>&,
+                 const PaymentDetailsInit*,
+                 const PaymentOptions*,
+                 ExceptionState&);
   ~PaymentRequest() override;
 
   ScriptPromise show(ScriptState*);
@@ -106,12 +111,6 @@
   };
 
  private:
-  PaymentRequest(ExecutionContext*,
-                 const HeapVector<Member<PaymentMethodData>>&,
-                 const PaymentDetailsInit*,
-                 const PaymentOptions*,
-                 ExceptionState&);
-
   // LifecycleObserver:
   void ContextDestroyed(ExecutionContext*) override;
 
diff --git a/third_party/blink/renderer/modules/payments/payment_request_event.cc b/third_party/blink/renderer/modules/payments/payment_request_event.cc
index aa3623d..863cf8e2 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_event.cc
+++ b/third_party/blink/renderer/modules/payments/payment_request_event.cc
@@ -21,7 +21,8 @@
 PaymentRequestEvent* PaymentRequestEvent::Create(
     const AtomicString& type,
     const PaymentRequestEventInit* initializer) {
-  return new PaymentRequestEvent(type, initializer, nullptr, nullptr);
+  return MakeGarbageCollected<PaymentRequestEvent>(type, initializer, nullptr,
+                                                   nullptr);
 }
 
 PaymentRequestEvent* PaymentRequestEvent::Create(
@@ -29,8 +30,8 @@
     const PaymentRequestEventInit* initializer,
     RespondWithObserver* respond_with_observer,
     WaitUntilObserver* wait_until_observer) {
-  return new PaymentRequestEvent(type, initializer, respond_with_observer,
-                                 wait_until_observer);
+  return MakeGarbageCollected<PaymentRequestEvent>(
+      type, initializer, respond_with_observer, wait_until_observer);
 }
 
 PaymentRequestEvent::~PaymentRequestEvent() = default;
diff --git a/third_party/blink/renderer/modules/payments/payment_request_event.h b/third_party/blink/renderer/modules/payments/payment_request_event.h
index 586578f..24333aa 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_event.h
+++ b/third_party/blink/renderer/modules/payments/payment_request_event.h
@@ -31,6 +31,11 @@
                                      const PaymentRequestEventInit*,
                                      RespondWithObserver*,
                                      WaitUntilObserver*);
+
+  PaymentRequestEvent(const AtomicString& type,
+                      const PaymentRequestEventInit*,
+                      RespondWithObserver*,
+                      WaitUntilObserver*);
   ~PaymentRequestEvent() override;
 
   const AtomicString& InterfaceName() const override;
@@ -49,11 +54,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PaymentRequestEvent(const AtomicString& type,
-                      const PaymentRequestEventInit*,
-                      RespondWithObserver*,
-                      WaitUntilObserver*);
-
   String top_origin_;
   String payment_request_origin_;
   String payment_request_id_;
diff --git a/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.cc b/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.cc
index 8122f169..c8e5ee19 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.cc
+++ b/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.cc
@@ -23,7 +23,8 @@
     ExecutionContext* context,
     int event_id,
     WaitUntilObserver* observer) {
-  return new PaymentRequestRespondWithObserver(context, event_id, observer);
+  return MakeGarbageCollected<PaymentRequestRespondWithObserver>(
+      context, event_id, observer);
 }
 
 void PaymentRequestRespondWithObserver::OnResponseRejected(
diff --git a/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.h b/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.h
index 12e6cb5..558336f0 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.h
+++ b/third_party/blink/renderer/modules/payments/payment_request_respond_with_observer.h
@@ -21,6 +21,9 @@
 class MODULES_EXPORT PaymentRequestRespondWithObserver final
     : public RespondWithObserver {
  public:
+  PaymentRequestRespondWithObserver(ExecutionContext*,
+                                    int event_id,
+                                    WaitUntilObserver*);
   ~PaymentRequestRespondWithObserver() override = default;
 
   static PaymentRequestRespondWithObserver* Create(ExecutionContext*,
@@ -35,11 +38,6 @@
   void OnNoResponse() override;
 
   void Trace(blink::Visitor*) override;
-
- private:
-  PaymentRequestRespondWithObserver(ExecutionContext*,
-                                    int event_id,
-                                    WaitUntilObserver*);
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/payments/payment_request_update_event.cc b/third_party/blink/renderer/modules/payments/payment_request_update_event.cc
index bd8596d5..080fc25 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_update_event.cc
+++ b/third_party/blink/renderer/modules/payments/payment_request_update_event.cc
@@ -91,7 +91,8 @@
     ExecutionContext* execution_context,
     const AtomicString& type,
     const PaymentRequestUpdateEventInit* init) {
-  return new PaymentRequestUpdateEvent(execution_context, type, init);
+  return MakeGarbageCollected<PaymentRequestUpdateEvent>(execution_context,
+                                                         type, init);
 }
 
 void PaymentRequestUpdateEvent::SetPaymentDetailsUpdater(
diff --git a/third_party/blink/renderer/modules/payments/payment_request_update_event.h b/third_party/blink/renderer/modules/payments/payment_request_update_event.h
index 4c833e6b..d8618f53 100644
--- a/third_party/blink/renderer/modules/payments/payment_request_update_event.h
+++ b/third_party/blink/renderer/modules/payments/payment_request_update_event.h
@@ -26,6 +26,9 @@
   USING_GARBAGE_COLLECTED_MIXIN(PaymentRequestUpdateEvent)
 
  public:
+  PaymentRequestUpdateEvent(ExecutionContext*,
+                            const AtomicString& type,
+                            const PaymentRequestUpdateEventInit*);
   ~PaymentRequestUpdateEvent() override;
 
   static PaymentRequestUpdateEvent* Create(
@@ -49,11 +52,6 @@
 
   void OnUpdateEventTimeoutForTesting();
 
- protected:
-  PaymentRequestUpdateEvent(ExecutionContext*,
-                            const AtomicString& type,
-                            const PaymentRequestUpdateEventInit*);
-
  private:
   void OnUpdateEventTimeout(TimerBase*);
 
diff --git a/third_party/blink/renderer/modules/payments/payment_response_test.cc b/third_party/blink/renderer/modules/payments/payment_response_test.cc
index f2cb3ea..e95f4ef 100644
--- a/third_party/blink/renderer/modules/payments/payment_response_test.cc
+++ b/third_party/blink/renderer/modules/payments/payment_response_test.cc
@@ -59,9 +59,9 @@
   input->payer->phone = "0123";
   MockPaymentStateResolver* complete_callback = new MockPaymentStateResolver;
 
-  PaymentResponse* output =
-      new PaymentResponse(scope.GetScriptState(), std::move(input), nullptr,
-                          complete_callback, "id");
+  PaymentResponse* output = MakeGarbageCollected<PaymentResponse>(
+      scope.GetScriptState(), std::move(input), nullptr, complete_callback,
+      "id");
 
   EXPECT_EQ("foo", output->methodName());
   EXPECT_EQ("standardShippingOption", output->shippingOption());
@@ -91,9 +91,9 @@
       BuildPaymentResponseForTest();
   input->stringified_details = "transactionId";
   MockPaymentStateResolver* complete_callback = new MockPaymentStateResolver;
-  PaymentResponse* output =
-      new PaymentResponse(scope.GetScriptState(), std::move(input), nullptr,
-                          complete_callback, "id");
+  PaymentResponse* output = MakeGarbageCollected<PaymentResponse>(
+      scope.GetScriptState(), std::move(input), nullptr, complete_callback,
+      "id");
 
   ScriptValue details = output->details(scope.GetScriptState());
   ASSERT_TRUE(details.V8Value()->IsObject());
@@ -114,9 +114,9 @@
   input->method_name = "foo";
   input->stringified_details = "{\"transactionId\": 123}";
   MockPaymentStateResolver* complete_callback = new MockPaymentStateResolver;
-  PaymentResponse* output =
-      new PaymentResponse(scope.GetScriptState(), std::move(input), nullptr,
-                          complete_callback, "id");
+  PaymentResponse* output = MakeGarbageCollected<PaymentResponse>(
+      scope.GetScriptState(), std::move(input), nullptr, complete_callback,
+      "id");
   EXPECT_EQ(output->details(scope.GetScriptState()),
             output->details(scope.GetScriptState()));
 }
@@ -128,9 +128,9 @@
   input->method_name = "foo";
   input->stringified_details = "{\"transactionId\": 123}";
   MockPaymentStateResolver* complete_callback = new MockPaymentStateResolver;
-  PaymentResponse* output =
-      new PaymentResponse(scope.GetScriptState(), std::move(input), nullptr,
-                          complete_callback, "id");
+  PaymentResponse* output = MakeGarbageCollected<PaymentResponse>(
+      scope.GetScriptState(), std::move(input), nullptr, complete_callback,
+      "id");
 
   EXPECT_CALL(*complete_callback,
               Complete(scope.GetScriptState(), PaymentStateResolver::kSuccess));
@@ -145,9 +145,9 @@
   input->method_name = "foo";
   input->stringified_details = "{\"transactionId\": 123}";
   MockPaymentStateResolver* complete_callback = new MockPaymentStateResolver;
-  PaymentResponse* output =
-      new PaymentResponse(scope.GetScriptState(), std::move(input), nullptr,
-                          complete_callback, "id");
+  PaymentResponse* output = MakeGarbageCollected<PaymentResponse>(
+      scope.GetScriptState(), std::move(input), nullptr, complete_callback,
+      "id");
 
   EXPECT_CALL(*complete_callback,
               Complete(scope.GetScriptState(), PaymentStateResolver::kFail));
@@ -173,11 +173,11 @@
   input->shipping_address->address_line.push_back("BIN1");
   input->shipping_address->address_line.push_back("First floor");
   PaymentAddress* address =
-      new PaymentAddress(std::move(input->shipping_address));
+      MakeGarbageCollected<PaymentAddress>(std::move(input->shipping_address));
 
-  PaymentResponse* output =
-      new PaymentResponse(scope.GetScriptState(), std::move(input), address,
-                          new MockPaymentStateResolver, "id");
+  PaymentResponse* output = MakeGarbageCollected<PaymentResponse>(
+      scope.GetScriptState(), std::move(input), address,
+      new MockPaymentStateResolver, "id");
   ScriptValue json_object = output->toJSONForBinding(scope.GetScriptState());
   EXPECT_TRUE(json_object.IsObject());
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.cc b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.cc
index 7ea2eb6..f5d3e24 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.cc
@@ -60,7 +60,8 @@
     ExecutionContext* context,
     std::unique_ptr<WebRTCDataChannelHandler> handler) {
   DCHECK(handler);
-  RTCDataChannel* channel = new RTCDataChannel(context, std::move(handler));
+  RTCDataChannel* channel =
+      MakeGarbageCollected<RTCDataChannel>(context, std::move(handler));
   channel->PauseIfNeeded();
 
   return channel;
@@ -79,7 +80,8 @@
                                       "RTCDataChannel is not supported");
     return nullptr;
   }
-  RTCDataChannel* channel = new RTCDataChannel(context, std::move(handler));
+  RTCDataChannel* channel =
+      MakeGarbageCollected<RTCDataChannel>(context, std::move(handler));
   channel->PauseIfNeeded();
 
   return channel;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.h b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.h
index 1337d25..bcc0e81 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel.h
@@ -64,6 +64,8 @@
                                 const String& label,
                                 const WebRTCDataChannelInit&,
                                 ExceptionState&);
+
+  RTCDataChannel(ExecutionContext*, std::unique_ptr<WebRTCDataChannelHandler>);
   ~RTCDataChannel() override;
 
   ReadyState GetHandlerState() const;
@@ -123,7 +125,6 @@
   void DidDetectError() override;
 
  private:
-  RTCDataChannel(ExecutionContext*, std::unique_ptr<WebRTCDataChannelHandler>);
   void Dispose();
 
   void ScheduleDispatchEvent(Event*);
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.cc b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.cc
index 7d047b4..9ea0734 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.cc
@@ -28,13 +28,13 @@
 
 RTCDataChannelEvent* RTCDataChannelEvent::Create(const AtomicString& type,
                                                  RTCDataChannel* channel) {
-  return new RTCDataChannelEvent(type, channel);
+  return MakeGarbageCollected<RTCDataChannelEvent>(type, channel);
 }
 
 RTCDataChannelEvent* RTCDataChannelEvent::Create(
     const AtomicString& type,
     const RTCDataChannelEventInit* initializer) {
-  return new RTCDataChannelEvent(type, initializer);
+  return MakeGarbageCollected<RTCDataChannelEvent>(type, initializer);
 }
 
 RTCDataChannelEvent::RTCDataChannelEvent(const AtomicString& type,
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.h b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.h
index 2cde6d4..e6efc56 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_data_channel_event.h
@@ -36,6 +36,8 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
+  RTCDataChannelEvent(const AtomicString& type, RTCDataChannel*);
+  RTCDataChannelEvent(const AtomicString& type, const RTCDataChannelEventInit*);
   ~RTCDataChannelEvent() override;
 
   static RTCDataChannelEvent* Create(const AtomicString& type,
@@ -51,10 +53,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCDataChannelEvent(const AtomicString& type,
-                      RTCDataChannel*);
-
-  RTCDataChannelEvent(const AtomicString& type, const RTCDataChannelEventInit*);
   Member<RTCDataChannel> channel_;
 };
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_sender.cc b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_sender.cc
index 8d75ee7..cd60d6e 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_sender.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_sender.cc
@@ -50,7 +50,8 @@
     ExecutionContext* context,
     std::unique_ptr<WebRTCDTMFSenderHandler> dtmf_sender_handler) {
   DCHECK(dtmf_sender_handler);
-  return new RTCDTMFSender(context, std::move(dtmf_sender_handler));
+  return MakeGarbageCollected<RTCDTMFSender>(context,
+                                             std::move(dtmf_sender_handler));
 }
 
 RTCDTMFSender::RTCDTMFSender(ExecutionContext* context,
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_sender.h b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_sender.h
index b18362b..dbf139f1 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_sender.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_sender.h
@@ -47,6 +47,8 @@
  public:
   static RTCDTMFSender* Create(ExecutionContext*,
                                std::unique_ptr<WebRTCDTMFSenderHandler>);
+
+  RTCDTMFSender(ExecutionContext*, std::unique_ptr<WebRTCDTMFSenderHandler>);
   ~RTCDTMFSender() override;
 
   bool canInsertDTMF() const;
@@ -71,8 +73,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCDTMFSender(ExecutionContext*,
-                std::unique_ptr<WebRTCDTMFSenderHandler>);
   void Dispose();
 
   // WebRTCDTMFSenderHandlerClient
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.cc b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.cc
index 93748331..8b32118 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.cc
@@ -30,13 +30,13 @@
 namespace blink {
 
 RTCDTMFToneChangeEvent* RTCDTMFToneChangeEvent::Create(const String& tone) {
-  return new RTCDTMFToneChangeEvent(tone);
+  return MakeGarbageCollected<RTCDTMFToneChangeEvent>(tone);
 }
 
 RTCDTMFToneChangeEvent* RTCDTMFToneChangeEvent::Create(
     const AtomicString& type,
     const RTCDTMFToneChangeEventInit* initializer) {
-  return new RTCDTMFToneChangeEvent(initializer);
+  return MakeGarbageCollected<RTCDTMFToneChangeEvent>(initializer);
 }
 
 RTCDTMFToneChangeEvent::RTCDTMFToneChangeEvent(const String& tone)
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.h b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.h
index 088f2f63..46db919 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_dtmf_tone_change_event.h
@@ -36,6 +36,8 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
+  explicit RTCDTMFToneChangeEvent(const String& tone);
+  explicit RTCDTMFToneChangeEvent(const RTCDTMFToneChangeEventInit*);
   ~RTCDTMFToneChangeEvent() override;
 
   static RTCDTMFToneChangeEvent* Create(const String& tone);
@@ -50,9 +52,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit RTCDTMFToneChangeEvent(const String& tone);
-  explicit RTCDTMFToneChangeEvent(const RTCDTMFToneChangeEventInit*);
-
   String tone_;
 };
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.cc b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.cc
index 9fa4ef4..dcbe9c5 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.cc
@@ -66,13 +66,13 @@
                       WebFeature::kRTCIceCandidateDefaultSdpMLineIndex);
   }
 
-  return new RTCIceCandidate(WebRTCICECandidate::Create(
+  return MakeGarbageCollected<RTCIceCandidate>(WebRTCICECandidate::Create(
       candidate_init->candidate(), sdp_mid, sdp_m_line_index));
 }
 
 RTCIceCandidate* RTCIceCandidate::Create(
     scoped_refptr<WebRTCICECandidate> web_candidate) {
-  return new RTCIceCandidate(std::move(web_candidate));
+  return MakeGarbageCollected<RTCIceCandidate>(std::move(web_candidate));
 }
 
 RTCIceCandidate::RTCIceCandidate(
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.h b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.h
index 6c3c687..1aec3ed 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_candidate.h
@@ -53,6 +53,8 @@
                                  ExceptionState&);
   static RTCIceCandidate* Create(scoped_refptr<WebRTCICECandidate>);
 
+  explicit RTCIceCandidate(scoped_refptr<WebRTCICECandidate>);
+
   String candidate() const;
   void setCandidate(String);
   String sdpMid() const;
@@ -65,8 +67,6 @@
   scoped_refptr<WebRTCICECandidate> WebCandidate() const;
 
  private:
-  explicit RTCIceCandidate(scoped_refptr<WebRTCICECandidate>);
-
   scoped_refptr<WebRTCICECandidate> web_candidate_;
 };
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.cc b/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.cc
index b3049c04..32caf50 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.cc
@@ -85,7 +85,7 @@
       frame->GetTaskRunner(TaskType::kNetworking);
   scoped_refptr<base::SingleThreadTaskRunner> host_thread =
       Platform::Current()->GetWebRtcWorkerThread();
-  return new RTCIceTransport(
+  return MakeGarbageCollected<RTCIceTransport>(
       context, std::move(proxy_thread), std::move(host_thread),
       std::make_unique<DefaultIceTransportAdapterCrossThreadFactory>());
 }
@@ -95,9 +95,9 @@
     scoped_refptr<base::SingleThreadTaskRunner> proxy_thread,
     scoped_refptr<base::SingleThreadTaskRunner> host_thread,
     std::unique_ptr<IceTransportAdapterCrossThreadFactory> adapter_factory) {
-  return new RTCIceTransport(context, std::move(proxy_thread),
-                             std::move(host_thread),
-                             std::move(adapter_factory));
+  return MakeGarbageCollected<RTCIceTransport>(context, std::move(proxy_thread),
+                                               std::move(host_thread),
+                                               std::move(adapter_factory));
 }
 
 RTCIceTransport::RTCIceTransport(
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.h b/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.h
index 96ccf58..6f3c822 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_ice_transport.h
@@ -64,6 +64,11 @@
       scoped_refptr<base::SingleThreadTaskRunner> host_thread,
       std::unique_ptr<IceTransportAdapterCrossThreadFactory> adapter_factory);
 
+  explicit RTCIceTransport(
+      ExecutionContext* context,
+      scoped_refptr<base::SingleThreadTaskRunner> proxy_thread,
+      scoped_refptr<base::SingleThreadTaskRunner> host_thread,
+      std::unique_ptr<IceTransportAdapterCrossThreadFactory> adapter_factory);
   ~RTCIceTransport() override;
 
   // Returns true if start() has been called.
@@ -122,12 +127,6 @@
   void Trace(blink::Visitor* visitor) override;
 
  private:
-  explicit RTCIceTransport(
-      ExecutionContext* context,
-      scoped_refptr<base::SingleThreadTaskRunner> proxy_thread,
-      scoped_refptr<base::SingleThreadTaskRunner> host_thread,
-      std::unique_ptr<IceTransportAdapterCrossThreadFactory> adapter_factory);
-
   // IceTransportProxy::Delegate overrides.
   void OnGatheringStateChanged(cricket::IceGatheringState new_state) override;
   void OnCandidateGathered(const cricket::Candidate& candidate) override;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_legacy_stats_report.cc b/third_party/blink/renderer/modules/peerconnection/rtc_legacy_stats_report.cc
index ee5dba9..ac3110b 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_legacy_stats_report.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_legacy_stats_report.cc
@@ -30,7 +30,7 @@
 RTCLegacyStatsReport* RTCLegacyStatsReport::Create(const String& id,
                                                    const String& type,
                                                    double timestamp) {
-  return new RTCLegacyStatsReport(id, type, timestamp);
+  return MakeGarbageCollected<RTCLegacyStatsReport>(id, type, timestamp);
 }
 
 RTCLegacyStatsReport::RTCLegacyStatsReport(const String& id,
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_legacy_stats_report.h b/third_party/blink/renderer/modules/peerconnection/rtc_legacy_stats_report.h
index f7adcb61..d784ee0 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_legacy_stats_report.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_legacy_stats_report.h
@@ -41,6 +41,8 @@
                                       const String& type,
                                       double timestamp);
 
+  RTCLegacyStatsReport(const String& id, const String& type, double timestamp);
+
   double timestamp() const { return timestamp_; }
   String id() { return id_; }
   String type() { return type_; }
@@ -50,8 +52,6 @@
   void AddStatistic(const String& name, const String& value);
 
  private:
-  RTCLegacyStatsReport(const String& id, const String& type, double timestamp);
-
   String id_;
   String type_;
   double timestamp_;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
index ef2bb31..7fc2789 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.cc
@@ -270,7 +270,8 @@
       : resolver_(resolver) {}
 
   void OnSuccess(rtc::scoped_refptr<rtc::RTCCertificate> certificate) override {
-    resolver_->Resolve(new RTCCertificate(std::move(certificate)));
+    resolver_->Resolve(
+        MakeGarbageCollected<RTCCertificate>(std::move(certificate)));
   }
 
   void OnError() override { resolver_->Reject(); }
@@ -662,7 +663,7 @@
     return nullptr;
   }
 
-  RTCPeerConnection* peer_connection = new RTCPeerConnection(
+  RTCPeerConnection* peer_connection = MakeGarbageCollected<RTCPeerConnection>(
       context, std::move(configuration), rtc_configuration->hasSdpSemantics(),
       constraints, exception_state);
   peer_connection->PauseIfNeeded();
@@ -1439,7 +1440,8 @@
     certificates.ReserveCapacity(
         SafeCast<wtf_size_t>(webrtc_configuration.certificates.size()));
     for (const auto& webrtc_certificate : webrtc_configuration.certificates) {
-      certificates.emplace_back(new RTCCertificate(webrtc_certificate));
+      certificates.emplace_back(
+          MakeGarbageCollected<RTCCertificate>(webrtc_certificate));
     }
     result->setCertificates(certificates);
   }
@@ -2304,7 +2306,8 @@
   RTCRtpSender* sender;
   if (sender_it == rtp_senders_.end()) {
     // Create new sender (with empty stream set).
-    sender = new RTCRtpSender(this, std::move(web_sender), kind, track, {});
+    sender = MakeGarbageCollected<RTCRtpSender>(
+        this, std::move(web_sender), kind, track, MediaStreamVector());
     rtp_senders_.push_back(sender);
   } else {
     // Update existing sender (not touching the stream set).
@@ -2333,7 +2336,8 @@
   RTCRtpReceiver* receiver;
   if (receiver_it == rtp_receivers_.end()) {
     // Create new receiver.
-    receiver = new RTCRtpReceiver(std::move(web_receiver), track, {});
+    receiver = MakeGarbageCollected<RTCRtpReceiver>(std::move(web_receiver),
+                                                    track, MediaStreamVector());
     // Receiving tracks should be muted by default. SetReadyState() propagates
     // the related state changes to ensure it is muted on all layers. It also
     // fires events - which is not desired - but because they fire synchronously
@@ -2365,8 +2369,8 @@
   auto* transceiver_it = FindTransceiver(*web_transceiver);
   if (transceiver_it == transceivers_.end()) {
     // Create new tranceiver.
-    transceiver = new RTCRtpTransceiver(this, std::move(web_transceiver),
-                                        sender, receiver);
+    transceiver = MakeGarbageCollected<RTCRtpTransceiver>(
+        this, std::move(web_transceiver), sender, receiver);
     transceivers_.push_back(transceiver);
   } else {
     // Update existing transceiver.
@@ -2568,11 +2572,11 @@
     streams.push_back(stream);
   }
   DCHECK(FindReceiver(*web_receiver) == rtp_receivers_.end());
-  RTCRtpReceiver* rtp_receiver =
-      new RTCRtpReceiver(std::move(web_receiver), track, streams);
+  RTCRtpReceiver* rtp_receiver = MakeGarbageCollected<RTCRtpReceiver>(
+      std::move(web_receiver), track, streams);
   rtp_receivers_.push_back(rtp_receiver);
-  ScheduleDispatchEvent(
-      new RTCTrackEvent(rtp_receiver, rtp_receiver->track(), streams, nullptr));
+  ScheduleDispatchEvent(MakeGarbageCollected<RTCTrackEvent>(
+      rtp_receiver, rtp_receiver->track(), streams, nullptr));
 }
 
 void RTCPeerConnection::DidRemoveReceiverPlanB(
@@ -2687,7 +2691,7 @@
 
   // Fire "pc.ontrack" synchronously.
   for (auto& transceiver : track_events) {
-    auto* track_event = new RTCTrackEvent(
+    auto* track_event = MakeGarbageCollected<RTCTrackEvent>(
         transceiver->receiver(), transceiver->receiver()->track(),
         transceiver->receiver()->streams(), transceiver);
     DispatchEvent(*track_event);
@@ -2955,7 +2959,7 @@
 void RTCPeerConnection::ScheduleDispatchEvent(Event* event,
                                               BoolFunction setup_function) {
   scheduled_events_.push_back(
-      new EventWrapper(event, std::move(setup_function)));
+      MakeGarbageCollected<EventWrapper>(event, std::move(setup_function)));
 
   dispatch_scheduled_event_runner_->RunAsync();
 }
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.h b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.h
index 06030fd..b5f9b6b 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection.h
@@ -114,6 +114,12 @@
                                    const RTCConfiguration*,
                                    const Dictionary&,
                                    ExceptionState&);
+
+  RTCPeerConnection(ExecutionContext*,
+                    webrtc::PeerConnectionInterface::RTCConfiguration,
+                    bool sdp_semantics_specified,
+                    WebMediaConstraints,
+                    ExceptionState&);
   ~RTCPeerConnection() override;
 
   ScriptPromise createOffer(ScriptState*, const RTCOfferOptions*);
@@ -353,12 +359,6 @@
    private:
     BoolFunction setup_function_;
   };
-
-  RTCPeerConnection(ExecutionContext*,
-                    webrtc::PeerConnectionInterface::RTCConfiguration,
-                    bool sdp_semantics_specified,
-                    WebMediaConstraints,
-                    ExceptionState&);
   void Dispose();
 
   void ScheduleDispatchEvent(Event*);
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.cc b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.cc
index be01010..747643b 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.cc
@@ -32,13 +32,13 @@
 
 RTCPeerConnectionIceEvent* RTCPeerConnectionIceEvent::Create(
     RTCIceCandidate* candidate) {
-  return new RTCPeerConnectionIceEvent(candidate);
+  return MakeGarbageCollected<RTCPeerConnectionIceEvent>(candidate);
 }
 
 RTCPeerConnectionIceEvent* RTCPeerConnectionIceEvent::Create(
     const AtomicString& type,
     const RTCPeerConnectionIceEventInit* initializer) {
-  return new RTCPeerConnectionIceEvent(type, initializer);
+  return MakeGarbageCollected<RTCPeerConnectionIceEvent>(type, initializer);
 }
 
 RTCPeerConnectionIceEvent::RTCPeerConnectionIceEvent(RTCIceCandidate* candidate)
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.h b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.h
index f57ca47..fd335e0 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_peer_connection_ice_event.h
@@ -36,6 +36,9 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
+  RTCPeerConnectionIceEvent(RTCIceCandidate*);
+  RTCPeerConnectionIceEvent(const AtomicString& type,
+                            const RTCPeerConnectionIceEventInit*);
   ~RTCPeerConnectionIceEvent() override;
 
   static RTCPeerConnectionIceEvent* Create(RTCIceCandidate*);
@@ -51,11 +54,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCPeerConnectionIceEvent(RTCIceCandidate*);
-
-  RTCPeerConnectionIceEvent(const AtomicString& type,
-                            const RTCPeerConnectionIceEventInit*);
-
   Member<RTCIceCandidate> candidate_;
 };
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.cc b/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.cc
index 4a5986e0..77a0948 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.cc
@@ -99,8 +99,9 @@
       return nullptr;
     }
   }
-  return new RTCQuicTransport(context, transport, certificates, exception_state,
-                              std::move(p2p_quic_transport_factory));
+  return MakeGarbageCollected<RTCQuicTransport>(
+      context, transport, certificates, exception_state,
+      std::move(p2p_quic_transport_factory));
 }
 
 RTCQuicTransport::RTCQuicTransport(
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.h b/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.h
index e189bbd..c69f9e7 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport.h
@@ -63,6 +63,12 @@
       ExceptionState& exception_state,
       std::unique_ptr<P2PQuicTransportFactory> p2p_quic_transport_factory);
 
+  RTCQuicTransport(
+      ExecutionContext* context,
+      RTCIceTransport* transport,
+      const HeapVector<Member<RTCCertificate>>& certificates,
+      ExceptionState& exception_state,
+      std::unique_ptr<P2PQuicTransportFactory> p2p_quic_transport_factory);
   ~RTCQuicTransport() override;
 
   // Called by the RTCIceTransport when it is being closed.
@@ -97,13 +103,6 @@
   void Trace(blink::Visitor* visitor) override;
 
  private:
-  RTCQuicTransport(
-      ExecutionContext* context,
-      RTCIceTransport* transport,
-      const HeapVector<Member<RTCCertificate>>& certificates,
-      ExceptionState& exception_state,
-      std::unique_ptr<P2PQuicTransportFactory> p2p_quic_transport_factory);
-
   // QuicTransportProxy::Delegate overrides;
   void OnConnected() override;
   void OnConnectionFailed(const std::string& error_details,
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport_test.cc b/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport_test.cc
index c128328..5c2df98 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport_test.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_quic_transport_test.cc
@@ -24,9 +24,9 @@
 
 HeapVector<Member<RTCCertificate>> GenerateLocalRTCCertificates() {
   HeapVector<Member<RTCCertificate>> certificates;
-  certificates.push_back(
-      new RTCCertificate(rtc::RTCCertificateGenerator::GenerateCertificate(
-          rtc::KeyParams::ECDSA(), absl::nullopt)));
+  certificates.push_back(MakeGarbageCollected<RTCCertificate>(
+      rtc::RTCCertificateGenerator::GenerateCertificate(rtc::KeyParams::ECDSA(),
+                                                        absl::nullopt)));
   return certificates;
 }
 
@@ -135,7 +135,7 @@
         return std::make_unique<MockP2PQuicTransport>();
       }));
   HeapVector<Member<RTCCertificate>> certificates;
-  certificates.push_back(new RTCCertificate(certificate));
+  certificates.push_back(MakeGarbageCollected<RTCCertificate>(certificate));
   Persistent<RTCQuicTransport> quic_transport = CreateQuicTransport(
       scope, ice_transport, certificates, std::move(mock_factory));
   quic_transport->start(CreateRemoteRTCQuicParameters1(), ASSERT_NO_EXCEPTION);
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
index c481adf..341b232 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_rtp_receiver.cc
@@ -72,7 +72,8 @@
     DCHECK_EQ(web_contributing_source->SourceType(),
               WebRTCRtpContributingSourceType::CSRC);
     RTCRtpContributingSource* contributing_source =
-        new RTCRtpContributingSource(this, *web_contributing_source);
+        MakeGarbageCollected<RTCRtpContributingSource>(
+            this, *web_contributing_source);
     contributing_sources_.push_back(contributing_source);
   }
   // Clear the flag and schedule a microtask to reset it to true. This makes
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_session_description.cc b/third_party/blink/renderer/modules/peerconnection/rtc_session_description.cc
index a3177aec..ec940e15 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_session_description.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_session_description.cc
@@ -53,12 +53,13 @@
   else
     UseCounter::Count(context, WebFeature::kRTCSessionDescriptionInitNoSdp);
 
-  return new RTCSessionDescription(WebRTCSessionDescription(type, sdp));
+  return MakeGarbageCollected<RTCSessionDescription>(
+      WebRTCSessionDescription(type, sdp));
 }
 
 RTCSessionDescription* RTCSessionDescription::Create(
     WebRTCSessionDescription web_session_description) {
-  return new RTCSessionDescription(web_session_description);
+  return MakeGarbageCollected<RTCSessionDescription>(web_session_description);
 }
 
 RTCSessionDescription::RTCSessionDescription(
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_session_description.h b/third_party/blink/renderer/modules/peerconnection/rtc_session_description.h
index 96bb3fa..6e89b71 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_session_description.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_session_description.h
@@ -50,6 +50,8 @@
                                        const RTCSessionDescriptionInit*);
   static RTCSessionDescription* Create(WebRTCSessionDescription);
 
+  explicit RTCSessionDescription(WebRTCSessionDescription);
+
   String type() const;
   void setType(const String&);
 
@@ -61,8 +63,6 @@
   WebRTCSessionDescription WebSessionDescription();
 
  private:
-  explicit RTCSessionDescription(WebRTCSessionDescription);
-
   WebRTCSessionDescription web_session_description_;
 };
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_impl.cc b/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_impl.cc
index 99862de..e056b92 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_impl.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_impl.cc
@@ -45,8 +45,8 @@
     RTCPeerConnection* requester,
     V8RTCSessionDescriptionCallback* success_callback,
     V8RTCPeerConnectionErrorCallback* error_callback) {
-  return new RTCSessionDescriptionRequestImpl(context, operation, requester,
-                                              success_callback, error_callback);
+  return MakeGarbageCollected<RTCSessionDescriptionRequestImpl>(
+      context, operation, requester, success_callback, error_callback);
 }
 
 RTCSessionDescriptionRequestImpl::RTCSessionDescriptionRequestImpl(
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_impl.h b/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_impl.h
index 5fe43b1d..142915a0 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_impl.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_impl.h
@@ -59,6 +59,12 @@
       RTCPeerConnection*,
       V8RTCSessionDescriptionCallback*,
       V8RTCPeerConnectionErrorCallback*);
+
+  RTCSessionDescriptionRequestImpl(ExecutionContext*,
+                                   RTCCreateSessionDescriptionOperation,
+                                   RTCPeerConnection*,
+                                   V8RTCSessionDescriptionCallback*,
+                                   V8RTCPeerConnectionErrorCallback*);
   ~RTCSessionDescriptionRequestImpl() override;
 
   void RequestSucceeded(const WebRTCSessionDescription&) override;
@@ -70,12 +76,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCSessionDescriptionRequestImpl(ExecutionContext*,
-                                   RTCCreateSessionDescriptionOperation,
-                                   RTCPeerConnection*,
-                                   V8RTCSessionDescriptionCallback*,
-                                   V8RTCPeerConnectionErrorCallback*);
-
   void Clear();
 
   RTCCreateSessionDescriptionOperation operation_;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_promise_impl.cc b/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_promise_impl.cc
index 4d189e5..fd2bded 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_promise_impl.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_promise_impl.cc
@@ -20,7 +20,7 @@
     ScriptPromiseResolver* resolver,
     const char* interface_name,
     const char* property_name) {
-  return new RTCSessionDescriptionRequestPromiseImpl(
+  return MakeGarbageCollected<RTCSessionDescriptionRequestPromiseImpl>(
       operation, requester, resolver, interface_name, property_name);
 }
 
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_promise_impl.h b/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_promise_impl.h
index 45398426..00eb8f45 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_promise_impl.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_session_description_request_promise_impl.h
@@ -27,6 +27,12 @@
       ScriptPromiseResolver*,
       const char* interface_name,
       const char* property_name);
+
+  RTCSessionDescriptionRequestPromiseImpl(RTCCreateSessionDescriptionOperation,
+                                          RTCPeerConnection*,
+                                          ScriptPromiseResolver*,
+                                          const char* interface_name,
+                                          const char* property_name);
   ~RTCSessionDescriptionRequestPromiseImpl() override;
 
   // RTCSessionDescriptionRequest
@@ -36,12 +42,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCSessionDescriptionRequestPromiseImpl(RTCCreateSessionDescriptionOperation,
-                                          RTCPeerConnection*,
-                                          ScriptPromiseResolver*,
-                                          const char* interface_name,
-                                          const char* property_name);
-
   void Clear();
 
   RTCCreateSessionDescriptionOperation operation_;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_stats_request_impl.cc b/third_party/blink/renderer/modules/peerconnection/rtc_stats_request_impl.cc
index 9ac3290..3bcc1ef5 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_stats_request_impl.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_stats_request_impl.cc
@@ -33,7 +33,8 @@
                                                  RTCPeerConnection* requester,
                                                  V8RTCStatsCallback* callback,
                                                  MediaStreamTrack* selector) {
-  return new RTCStatsRequestImpl(context, requester, callback, selector);
+  return MakeGarbageCollected<RTCStatsRequestImpl>(context, requester, callback,
+                                                   selector);
 }
 
 RTCStatsRequestImpl::RTCStatsRequestImpl(ExecutionContext* context,
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_stats_request_impl.h b/third_party/blink/renderer/modules/peerconnection/rtc_stats_request_impl.h
index 8d1e8b6..31fb7cf 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_stats_request_impl.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_stats_request_impl.h
@@ -47,6 +47,11 @@
                                      RTCPeerConnection*,
                                      V8RTCStatsCallback*,
                                      MediaStreamTrack*);
+
+  RTCStatsRequestImpl(ExecutionContext*,
+                      RTCPeerConnection*,
+                      V8RTCStatsCallback*,
+                      MediaStreamTrack*);
   ~RTCStatsRequestImpl() override;
 
   RTCStatsResponseBase* CreateResponse() override;
@@ -61,11 +66,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCStatsRequestImpl(ExecutionContext*,
-                      RTCPeerConnection*,
-                      V8RTCStatsCallback*,
-                      MediaStreamTrack*);
-
   void Clear();
 
   // This request object is held by WebRTCPeerConnectionHandler, which doesn't
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_stats_response.cc b/third_party/blink/renderer/modules/peerconnection/rtc_stats_response.cc
index bea019f..f7f3f4e 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_stats_response.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_stats_response.cc
@@ -27,7 +27,7 @@
 namespace blink {
 
 RTCStatsResponse* RTCStatsResponse::Create() {
-  return new RTCStatsResponse();
+  return MakeGarbageCollected<RTCStatsResponse>();
 }
 
 RTCStatsResponse::RTCStatsResponse() = default;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_stats_response.h b/third_party/blink/renderer/modules/peerconnection/rtc_stats_response.h
index 28733466..b3b6d94 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_stats_response.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_stats_response.h
@@ -41,6 +41,8 @@
  public:
   static RTCStatsResponse* Create();
 
+  RTCStatsResponse();
+
   const HeapVector<Member<RTCLegacyStatsReport>>& result() const {
     return result_;
   }
@@ -51,8 +53,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCStatsResponse();
-
   HeapVector<Member<RTCLegacyStatsReport>> result_;
   HashMap<String, int> idmap_;
 };
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_track_event.cc b/third_party/blink/renderer/modules/peerconnection/rtc_track_event.cc
index c886564..bc83ff16 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_track_event.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_track_event.cc
@@ -14,7 +14,7 @@
 
 RTCTrackEvent* RTCTrackEvent::Create(const AtomicString& type,
                                      const RTCTrackEventInit* eventInitDict) {
-  return new RTCTrackEvent(type, eventInitDict);
+  return MakeGarbageCollected<RTCTrackEvent>(type, eventInitDict);
 }
 
 RTCTrackEvent::RTCTrackEvent(const AtomicString& type,
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_track_event.h b/third_party/blink/renderer/modules/peerconnection/rtc_track_event.h
index 56aa478..dedd3ce8 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_track_event.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_track_event.h
@@ -29,6 +29,8 @@
                 MediaStreamTrack*,
                 const HeapVector<Member<MediaStream>>&,
                 RTCRtpTransceiver*);
+  RTCTrackEvent(const AtomicString& type,
+                const RTCTrackEventInit* eventInitDict);
 
   RTCRtpReceiver* receiver() const;
   MediaStreamTrack* track() const;
@@ -38,9 +40,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCTrackEvent(const AtomicString& type,
-                const RTCTrackEventInit* eventInitDict);
-
   Member<RTCRtpReceiver> receiver_;
   Member<MediaStreamTrack> track_;
   HeapVector<Member<MediaStream>> streams_;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_impl.cc b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_impl.cc
index 8073a46..11c6c25 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_impl.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_impl.cc
@@ -42,8 +42,9 @@
     RTCPeerConnection* requester,
     V8VoidFunction* success_callback,
     V8RTCPeerConnectionErrorCallback* error_callback) {
-  return new RTCVoidRequestImpl(context, std::move(operation), requester,
-                                success_callback, error_callback);
+  return MakeGarbageCollected<RTCVoidRequestImpl>(context, std::move(operation),
+                                                  requester, success_callback,
+                                                  error_callback);
 }
 
 RTCVoidRequestImpl::RTCVoidRequestImpl(
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_impl.h b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_impl.h
index b4480a0..113f7a14 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_impl.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_impl.h
@@ -57,6 +57,12 @@
       RTCPeerConnection*,
       V8VoidFunction*,
       V8RTCPeerConnectionErrorCallback*);
+
+  RTCVoidRequestImpl(ExecutionContext*,
+                     base::Optional<RTCSetSessionDescriptionOperation>,
+                     RTCPeerConnection*,
+                     V8VoidFunction*,
+                     V8RTCPeerConnectionErrorCallback*);
   ~RTCVoidRequestImpl() override;
 
   // RTCVoidRequest
@@ -69,12 +75,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCVoidRequestImpl(ExecutionContext*,
-                     base::Optional<RTCSetSessionDescriptionOperation>,
-                     RTCPeerConnection*,
-                     V8VoidFunction*,
-                     V8RTCPeerConnectionErrorCallback*);
-
   void Clear();
 
   base::Optional<RTCSetSessionDescriptionOperation> operation_;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_promise_impl.cc b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_promise_impl.cc
index 1ad1811..4e8dd213 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_promise_impl.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_promise_impl.cc
@@ -17,8 +17,8 @@
     ScriptPromiseResolver* resolver,
     const char* interface_name,
     const char* property_name) {
-  return new RTCVoidRequestPromiseImpl(std::move(operation), requester,
-                                       resolver, interface_name, property_name);
+  return MakeGarbageCollected<RTCVoidRequestPromiseImpl>(
+      std::move(operation), requester, resolver, interface_name, property_name);
 }
 
 RTCVoidRequestPromiseImpl::RTCVoidRequestPromiseImpl(
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_promise_impl.h b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_promise_impl.h
index 4970a36..2757d437 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_promise_impl.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_promise_impl.h
@@ -26,6 +26,12 @@
       ScriptPromiseResolver*,
       const char* interface_name,
       const char* property_name);
+
+  RTCVoidRequestPromiseImpl(base::Optional<RTCSetSessionDescriptionOperation>,
+                            RTCPeerConnection*,
+                            ScriptPromiseResolver*,
+                            const char* interface_name,
+                            const char* property_name);
   ~RTCVoidRequestPromiseImpl() override;
 
   // RTCVoidRequest
@@ -35,12 +41,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  RTCVoidRequestPromiseImpl(base::Optional<RTCSetSessionDescriptionOperation>,
-                            RTCPeerConnection*,
-                            ScriptPromiseResolver*,
-                            const char* interface_name,
-                            const char* property_name);
-
   void Clear();
 
   base::Optional<RTCSetSessionDescriptionOperation> operation_;
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_script_promise_resolver_impl.cc b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_script_promise_resolver_impl.cc
index 17fd6ec..43db1d2f 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_script_promise_resolver_impl.cc
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_script_promise_resolver_impl.cc
@@ -14,8 +14,8 @@
 RTCVoidRequestScriptPromiseResolverImpl::Create(ScriptPromiseResolver* resolver,
                                                 const char* interface_name,
                                                 const char* property_name) {
-  return new RTCVoidRequestScriptPromiseResolverImpl(resolver, interface_name,
-                                                     property_name);
+  return MakeGarbageCollected<RTCVoidRequestScriptPromiseResolverImpl>(
+      resolver, interface_name, property_name);
 }
 
 RTCVoidRequestScriptPromiseResolverImpl::
diff --git a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_script_promise_resolver_impl.h b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_script_promise_resolver_impl.h
index 73ecbe2..20d9d22 100644
--- a/third_party/blink/renderer/modules/peerconnection/rtc_void_request_script_promise_resolver_impl.h
+++ b/third_party/blink/renderer/modules/peerconnection/rtc_void_request_script_promise_resolver_impl.h
@@ -18,6 +18,10 @@
       ScriptPromiseResolver*,
       const char* interface_name,
       const char* property_name);
+
+  RTCVoidRequestScriptPromiseResolverImpl(ScriptPromiseResolver*,
+                                          const char* interface_name,
+                                          const char* property_name);
   ~RTCVoidRequestScriptPromiseResolverImpl() override;
 
   // RTCVoidRequest
@@ -27,10 +31,6 @@
   void Trace(blink::Visitor*) override;
 
  protected:
-  RTCVoidRequestScriptPromiseResolverImpl(ScriptPromiseResolver*,
-                                          const char* interface_name,
-                                          const char* property_name);
-
   Member<ScriptPromiseResolver> resolver_;
   const char* interface_name_;
   const char* property_name_;
diff --git a/third_party/blink/renderer/modules/peerconnection/web_rtc_stats_report_callback_resolver.cc b/third_party/blink/renderer/modules/peerconnection/web_rtc_stats_report_callback_resolver.cc
index 479d7df..e2b8613 100644
--- a/third_party/blink/renderer/modules/peerconnection/web_rtc_stats_report_callback_resolver.cc
+++ b/third_party/blink/renderer/modules/peerconnection/web_rtc_stats_report_callback_resolver.cc
@@ -24,7 +24,7 @@
     std::unique_ptr<WebRTCStatsReport> report) {
   DCHECK(
       ExecutionContext::From(resolver_->GetScriptState())->IsContextThread());
-  resolver_->Resolve(new RTCStatsReport(std::move(report)));
+  resolver_->Resolve(MakeGarbageCollected<RTCStatsReport>(std::move(report)));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/permissions/navigator_permissions.cc b/third_party/blink/renderer/modules/permissions/navigator_permissions.cc
index f54b436..e477dc3b 100644
--- a/third_party/blink/renderer/modules/permissions/navigator_permissions.cc
+++ b/third_party/blink/renderer/modules/permissions/navigator_permissions.cc
@@ -29,7 +29,7 @@
 Permissions* NavigatorPermissions::permissions(Navigator& navigator) {
   NavigatorPermissions& self = NavigatorPermissions::From(navigator);
   if (!self.permissions_)
-    self.permissions_ = new Permissions();
+    self.permissions_ = MakeGarbageCollected<Permissions>();
   return self.permissions_.Get();
 }
 
diff --git a/third_party/blink/renderer/modules/permissions/permission_status.cc b/third_party/blink/renderer/modules/permissions/permission_status.cc
index 36d78015..5e83c7f6 100644
--- a/third_party/blink/renderer/modules/permissions/permission_status.cc
+++ b/third_party/blink/renderer/modules/permissions/permission_status.cc
@@ -26,8 +26,8 @@
     ExecutionContext* execution_context,
     MojoPermissionStatus status,
     MojoPermissionDescriptor descriptor) {
-  PermissionStatus* permission_status =
-      new PermissionStatus(execution_context, status, std::move(descriptor));
+  PermissionStatus* permission_status = MakeGarbageCollected<PermissionStatus>(
+      execution_context, status, std::move(descriptor));
   permission_status->PauseIfNeeded();
   permission_status->StartListening();
   return permission_status;
diff --git a/third_party/blink/renderer/modules/permissions/permission_status.h b/third_party/blink/renderer/modules/permissions/permission_status.h
index 56ee2c8..797286c2 100644
--- a/third_party/blink/renderer/modules/permissions/permission_status.h
+++ b/third_party/blink/renderer/modules/permissions/permission_status.h
@@ -40,6 +40,10 @@
   static PermissionStatus* CreateAndListen(ExecutionContext*,
                                            MojoPermissionStatus,
                                            MojoPermissionDescriptor);
+
+  PermissionStatus(ExecutionContext*,
+                   MojoPermissionStatus,
+                   MojoPermissionDescriptor);
   ~PermissionStatus() override;
   void Dispose();
 
@@ -62,10 +66,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PermissionStatus(ExecutionContext*,
-                   MojoPermissionStatus,
-                   MojoPermissionDescriptor);
-
   void StartListening();
   void StopListening();
 
diff --git a/third_party/blink/renderer/modules/permissions/worker_navigator_permissions.cc b/third_party/blink/renderer/modules/permissions/worker_navigator_permissions.cc
index 4d107eb..db143ca 100644
--- a/third_party/blink/renderer/modules/permissions/worker_navigator_permissions.cc
+++ b/third_party/blink/renderer/modules/permissions/worker_navigator_permissions.cc
@@ -34,7 +34,7 @@
   WorkerNavigatorPermissions& self =
       WorkerNavigatorPermissions::From(worker_navigator);
   if (!self.permissions_)
-    self.permissions_ = new Permissions();
+    self.permissions_ = MakeGarbageCollected<Permissions>();
   return self.permissions_;
 }
 
diff --git a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.cc b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.cc
index 2102054e..16d43b9 100644
--- a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.cc
+++ b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.cc
@@ -22,7 +22,7 @@
 // static
 PictureInPictureControllerImpl* PictureInPictureControllerImpl::Create(
     Document& document) {
-  return new PictureInPictureControllerImpl(document);
+  return MakeGarbageCollected<PictureInPictureControllerImpl>(document);
 }
 
 // static
@@ -121,7 +121,7 @@
   if (picture_in_picture_window_)
     picture_in_picture_window_->OnClose();
 
-  picture_in_picture_window_ = new PictureInPictureWindow(
+  picture_in_picture_window_ = MakeGarbageCollected<PictureInPictureWindow>(
       GetSupplementable(), picture_in_picture_window_size);
 
   picture_in_picture_element_->DispatchEvent(
diff --git a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h
index af5d4b7..1c5c2f3 100644
--- a/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h
+++ b/third_party/blink/renderer/modules/picture_in_picture/picture_in_picture_controller_impl.h
@@ -27,6 +27,7 @@
   WTF_MAKE_NONCOPYABLE(PictureInPictureControllerImpl);
 
  public:
+  explicit PictureInPictureControllerImpl(Document&);
   ~PictureInPictureControllerImpl() override;
 
   // Meant to be called internally by PictureInPictureController::From()
@@ -68,8 +69,6 @@
   void OnExitedPictureInPicture(ScriptPromiseResolver*) override;
   void OnPictureInPictureControlClicked(const WebString& control_id) override;
 
-  explicit PictureInPictureControllerImpl(Document&);
-
   // The Picture-in-Picture element for the associated document.
   Member<HTMLVideoElement> picture_in_picture_element_;
 
diff --git a/third_party/blink/renderer/modules/presentation/presentation.cc b/third_party/blink/renderer/modules/presentation/presentation.cc
index 4e7b5db1..385e1de 100644
--- a/third_party/blink/renderer/modules/presentation/presentation.cc
+++ b/third_party/blink/renderer/modules/presentation/presentation.cc
@@ -20,7 +20,7 @@
 // static
 Presentation* Presentation::Create(LocalFrame* frame) {
   DCHECK(frame);
-  Presentation* presentation = new Presentation(frame);
+  Presentation* presentation = MakeGarbageCollected<Presentation>(frame);
   PresentationController* controller = PresentationController::From(*frame);
   DCHECK(controller);
   controller->SetPresentation(presentation);
@@ -59,7 +59,7 @@
   }
 
   if (!receiver_)
-    receiver_ = new PresentationReceiver(GetFrame());
+    receiver_ = MakeGarbageCollected<PresentationReceiver>(GetFrame());
 
   return receiver_;
 }
diff --git a/third_party/blink/renderer/modules/presentation/presentation.h b/third_party/blink/renderer/modules/presentation/presentation.h
index b29256c..8948c2c4 100644
--- a/third_party/blink/renderer/modules/presentation/presentation.h
+++ b/third_party/blink/renderer/modules/presentation/presentation.h
@@ -27,6 +27,8 @@
  public:
   static Presentation* Create(LocalFrame*);
 
+  explicit Presentation(LocalFrame*);
+
   void Trace(blink::Visitor*) override;
 
   PresentationRequest* defaultRequest() const;
@@ -35,8 +37,6 @@
   PresentationReceiver* receiver();
 
  private:
-  explicit Presentation(LocalFrame*);
-
   // Default PresentationRequest used by the embedder.
   Member<PresentationRequest> default_request_;
 
diff --git a/third_party/blink/renderer/modules/presentation/presentation_availability.cc b/third_party/blink/renderer/modules/presentation/presentation_availability.cc
index f6f23a4..f4510ba 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_availability.cc
+++ b/third_party/blink/renderer/modules/presentation/presentation_availability.cc
@@ -23,8 +23,8 @@
     const WTF::Vector<KURL>& urls,
     bool value) {
   PresentationAvailability* presentation_availability =
-      new PresentationAvailability(resolver->GetExecutionContext(), urls,
-                                   value);
+      MakeGarbageCollected<PresentationAvailability>(
+          resolver->GetExecutionContext(), urls, value);
   presentation_availability->PauseIfNeeded();
   presentation_availability->UpdateListening();
   return presentation_availability;
diff --git a/third_party/blink/renderer/modules/presentation/presentation_availability.h b/third_party/blink/renderer/modules/presentation/presentation_availability.h
index 496a74b..bbef7b4 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_availability.h
+++ b/third_party/blink/renderer/modules/presentation/presentation_availability.h
@@ -38,6 +38,8 @@
   static PresentationAvailability* Take(PresentationAvailabilityProperty*,
                                         const WTF::Vector<KURL>&,
                                         bool);
+
+  PresentationAvailability(ExecutionContext*, const WTF::Vector<KURL>&, bool);
   ~PresentationAvailability() override;
 
   // EventTarget implementation.
@@ -81,8 +83,6 @@
     kInactive,
   };
 
-  PresentationAvailability(ExecutionContext*, const WTF::Vector<KURL>&, bool);
-
   void SetState(State);
   void UpdateListening();
 
diff --git a/third_party/blink/renderer/modules/presentation/presentation_connection.cc b/third_party/blink/renderer/modules/presentation/presentation_connection.cc
index b0a9d67..e373370 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_connection.cc
+++ b/third_party/blink/renderer/modules/presentation/presentation_connection.cc
@@ -303,9 +303,9 @@
   DCHECK(receiver);
 
   ReceiverPresentationConnection* connection =
-      new ReceiverPresentationConnection(*receiver->GetFrame(), receiver,
-                                         presentation_info.id,
-                                         presentation_info.url);
+      MakeGarbageCollected<ReceiverPresentationConnection>(
+          *receiver->GetFrame(), receiver, presentation_info.id,
+          presentation_info.url);
   connection->Init(std::move(controller_connection),
                    std::move(receiver_connection_request));
 
diff --git a/third_party/blink/renderer/modules/presentation/presentation_connection_available_event.h b/third_party/blink/renderer/modules/presentation/presentation_connection_available_event.h
index c24c93f..af32dc8 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_connection_available_event.h
+++ b/third_party/blink/renderer/modules/presentation/presentation_connection_available_event.h
@@ -20,17 +20,24 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
+  PresentationConnectionAvailableEvent(const AtomicString& event_type,
+                                       PresentationConnection*);
+  PresentationConnectionAvailableEvent(
+      const AtomicString& event_type,
+      const PresentationConnectionAvailableEventInit* initializer);
   ~PresentationConnectionAvailableEvent() override;
 
   static PresentationConnectionAvailableEvent* Create(
       const AtomicString& event_type,
       PresentationConnection* connection) {
-    return new PresentationConnectionAvailableEvent(event_type, connection);
+    return MakeGarbageCollected<PresentationConnectionAvailableEvent>(
+        event_type, connection);
   }
   static PresentationConnectionAvailableEvent* Create(
       const AtomicString& event_type,
       const PresentationConnectionAvailableEventInit* initializer) {
-    return new PresentationConnectionAvailableEvent(event_type, initializer);
+    return MakeGarbageCollected<PresentationConnectionAvailableEvent>(
+        event_type, initializer);
   }
 
   PresentationConnection* connection() { return connection_.Get(); }
@@ -40,12 +47,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PresentationConnectionAvailableEvent(const AtomicString& event_type,
-                                       PresentationConnection*);
-  PresentationConnectionAvailableEvent(
-      const AtomicString& event_type,
-      const PresentationConnectionAvailableEventInit* initializer);
-
   Member<PresentationConnection> connection_;
 };
 
diff --git a/third_party/blink/renderer/modules/presentation/presentation_connection_close_event.h b/third_party/blink/renderer/modules/presentation/presentation_connection_close_event.h
index 744d7f7..e719dd6 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_connection_close_event.h
+++ b/third_party/blink/renderer/modules/presentation/presentation_connection_close_event.h
@@ -19,19 +19,27 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
+  PresentationConnectionCloseEvent(const AtomicString& event_type,
+                                   const String& reason,
+                                   const String& message);
+  PresentationConnectionCloseEvent(
+      const AtomicString& event_type,
+      const PresentationConnectionCloseEventInit* initializer);
   ~PresentationConnectionCloseEvent() override = default;
 
   static PresentationConnectionCloseEvent* Create(
       const AtomicString& event_type,
       const String& reason,
       const String& message) {
-    return new PresentationConnectionCloseEvent(event_type, reason, message);
+    return MakeGarbageCollected<PresentationConnectionCloseEvent>(
+        event_type, reason, message);
   }
 
   static PresentationConnectionCloseEvent* Create(
       const AtomicString& event_type,
       const PresentationConnectionCloseEventInit* initializer) {
-    return new PresentationConnectionCloseEvent(event_type, initializer);
+    return MakeGarbageCollected<PresentationConnectionCloseEvent>(event_type,
+                                                                  initializer);
   }
 
   const String& reason() const { return reason_; }
@@ -42,13 +50,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  PresentationConnectionCloseEvent(const AtomicString& event_type,
-                                   const String& reason,
-                                   const String& message);
-  PresentationConnectionCloseEvent(
-      const AtomicString& event_type,
-      const PresentationConnectionCloseEventInit* initializer);
-
   String reason_;
   String message_;
 };
diff --git a/third_party/blink/renderer/modules/presentation/presentation_controller.cc b/third_party/blink/renderer/modules/presentation/presentation_controller.cc
index 9ec4337..3e97d54 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_controller.cc
+++ b/third_party/blink/renderer/modules/presentation/presentation_controller.cc
@@ -35,7 +35,8 @@
 
 // static
 void PresentationController::ProvideTo(LocalFrame& frame) {
-  Supplement<LocalFrame>::ProvideTo(frame, new PresentationController(frame));
+  Supplement<LocalFrame>::ProvideTo(
+      frame, MakeGarbageCollected<PresentationController>(frame));
 }
 
 // static
diff --git a/third_party/blink/renderer/modules/presentation/presentation_controller.h b/third_party/blink/renderer/modules/presentation/presentation_controller.h
index f514ac0..2d7a4b0 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_controller.h
+++ b/third_party/blink/renderer/modules/presentation/presentation_controller.h
@@ -38,6 +38,7 @@
  public:
   static const char kSupplementName[];
 
+  PresentationController(LocalFrame&);
   ~PresentationController() override;
 
   static PresentationController* From(LocalFrame&);
@@ -77,9 +78,6 @@
   virtual void AddAvailabilityObserver(PresentationAvailabilityObserver*);
   virtual void RemoveAvailabilityObserver(PresentationAvailabilityObserver*);
 
- protected:
-  PresentationController(LocalFrame&);
-
  private:
   // Implementation of ContextLifecycleObserver.
   void ContextDestroyed(ExecutionContext*) override;
diff --git a/third_party/blink/renderer/modules/presentation/presentation_receiver.cc b/third_party/blink/renderer/modules/presentation/presentation_receiver.cc
index cfbe7e85..4a0d6af 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_receiver.cc
+++ b/third_party/blink/renderer/modules/presentation/presentation_receiver.cc
@@ -25,7 +25,8 @@
 
 PresentationReceiver::PresentationReceiver(LocalFrame* frame)
     : ContextLifecycleObserver(frame->GetDocument()),
-      connection_list_(new PresentationConnectionList(frame->GetDocument())),
+      connection_list_(MakeGarbageCollected<PresentationConnectionList>(
+          frame->GetDocument())),
       receiver_binding_(this) {
   auto* interface_provider = GetFrame()->Client()->GetInterfaceProvider();
   interface_provider->GetInterface(mojo::MakeRequest(&presentation_service_));
diff --git a/third_party/blink/renderer/modules/presentation/presentation_receiver_test.cc b/third_party/blink/renderer/modules/presentation/presentation_receiver_test.cc
index 069f151..e09a512 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_receiver_test.cc
+++ b/third_party/blink/renderer/modules/presentation/presentation_receiver_test.cc
@@ -79,7 +79,8 @@
 
 TEST_F(PresentationReceiverTest, NoConnectionUnresolvedConnectionList) {
   V8TestingScope scope;
-  auto* receiver = new PresentationReceiver(&scope.GetFrame());
+  auto* receiver =
+      MakeGarbageCollected<PresentationReceiver>(&scope.GetFrame());
 
   auto* event_handler =
       new StrictMock<MockEventListenerForPresentationReceiver>();
@@ -95,7 +96,8 @@
 
 TEST_F(PresentationReceiverTest, OneConnectionResolvedConnectionListNoEvent) {
   V8TestingScope scope;
-  auto* receiver = new PresentationReceiver(&scope.GetFrame());
+  auto* receiver =
+      MakeGarbageCollected<PresentationReceiver>(&scope.GetFrame());
 
   auto* event_handler =
       new StrictMock<MockEventListenerForPresentationReceiver>();
@@ -116,7 +118,8 @@
 
 TEST_F(PresentationReceiverTest, TwoConnectionsFireOnconnectionavailableEvent) {
   V8TestingScope scope;
-  auto* receiver = new PresentationReceiver(&scope.GetFrame());
+  auto* receiver =
+      MakeGarbageCollected<PresentationReceiver>(&scope.GetFrame());
 
   StrictMock<MockEventListenerForPresentationReceiver>* event_handler =
       new StrictMock<MockEventListenerForPresentationReceiver>();
@@ -147,7 +150,8 @@
 
 TEST_F(PresentationReceiverTest, TwoConnectionsNoEvent) {
   V8TestingScope scope;
-  auto* receiver = new PresentationReceiver(&scope.GetFrame());
+  auto* receiver =
+      MakeGarbageCollected<PresentationReceiver>(&scope.GetFrame());
 
   StrictMock<MockEventListenerForPresentationReceiver>* event_handler =
       new StrictMock<MockEventListenerForPresentationReceiver>();
diff --git a/third_party/blink/renderer/modules/presentation/presentation_request.cc b/third_party/blink/renderer/modules/presentation/presentation_request.cc
index c7c6e1f..3258500b 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_request.cc
+++ b/third_party/blink/renderer/modules/presentation/presentation_request.cc
@@ -95,7 +95,8 @@
     return nullptr;
   }
 
-  return new PresentationRequest(execution_context, parsed_urls);
+  return MakeGarbageCollected<PresentationRequest>(execution_context,
+                                                   parsed_urls);
 }
 
 const AtomicString& PresentationRequest::InterfaceName() const {
diff --git a/third_party/blink/renderer/modules/presentation/presentation_request.h b/third_party/blink/renderer/modules/presentation/presentation_request.h
index 25405c7..65d59f6 100644
--- a/third_party/blink/renderer/modules/presentation/presentation_request.h
+++ b/third_party/blink/renderer/modules/presentation/presentation_request.h
@@ -28,6 +28,7 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
+  PresentationRequest(ExecutionContext*, const Vector<KURL>&);
   ~PresentationRequest() override = default;
 
   static PresentationRequest* Create(ExecutionContext*,
@@ -60,8 +61,6 @@
                           RegisteredEventListener&) override;
 
  private:
-  PresentationRequest(ExecutionContext*, const Vector<KURL>&);
-
   Member<PresentationAvailabilityProperty> availability_property_;
   Vector<KURL> urls_;
 };
diff --git a/third_party/blink/renderer/modules/push_messaging/push_controller.cc b/third_party/blink/renderer/modules/push_messaging/push_controller.cc
index c460c4f..7af810a 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_controller.cc
+++ b/third_party/blink/renderer/modules/push_messaging/push_controller.cc
@@ -23,7 +23,8 @@
 const char PushController::kSupplementName[] = "PushController";
 
 void ProvidePushControllerTo(LocalFrame& frame, WebPushClient* client) {
-  PushController::ProvideTo(frame, new PushController(frame, client));
+  PushController::ProvideTo(
+      frame, MakeGarbageCollected<PushController>(frame, client));
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/push_messaging/push_event.h b/third_party/blink/renderer/modules/push_messaging/push_event.h
index 37459ebf..296a1db 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_event.h
+++ b/third_party/blink/renderer/modules/push_messaging/push_event.h
@@ -24,13 +24,17 @@
   static PushEvent* Create(const AtomicString& type,
                            PushMessageData* data,
                            WaitUntilObserver* observer) {
-    return new PushEvent(type, data, observer);
+    return MakeGarbageCollected<PushEvent>(type, data, observer);
   }
   static PushEvent* Create(const AtomicString& type,
                            const PushEventInit* initializer) {
-    return new PushEvent(type, initializer);
+    return MakeGarbageCollected<PushEvent>(type, initializer);
   }
 
+  PushEvent(const AtomicString& type,
+            PushMessageData* data,
+            WaitUntilObserver* observer);
+  PushEvent(const AtomicString& type, const PushEventInit* initializer);
   ~PushEvent() override;
 
   // ExtendableEvent interface.
@@ -41,11 +45,6 @@
   void Trace(blink::Visitor* visitor) override;
 
  private:
-  PushEvent(const AtomicString& type,
-            PushMessageData* data,
-            WaitUntilObserver* observer);
-  PushEvent(const AtomicString& type, const PushEventInit* initializer);
-
   Member<PushMessageData> data_;
 };
 
diff --git a/third_party/blink/renderer/modules/push_messaging/push_manager.h b/third_party/blink/renderer/modules/push_messaging/push_manager.h
index 9bebc0a3..5e60a64 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_manager.h
+++ b/third_party/blink/renderer/modules/push_messaging/push_manager.h
@@ -22,9 +22,11 @@
 
  public:
   static PushManager* Create(ServiceWorkerRegistration* registration) {
-    return new PushManager(registration);
+    return MakeGarbageCollected<PushManager>(registration);
   }
 
+  explicit PushManager(ServiceWorkerRegistration* registration);
+
   // Web-exposed property:
   static Vector<String> supportedContentEncodings();
 
@@ -40,8 +42,6 @@
   void Trace(blink::Visitor* visitor) override;
 
  private:
-  explicit PushManager(ServiceWorkerRegistration* registration);
-
   Member<ServiceWorkerRegistration> registration_;
 };
 
diff --git a/third_party/blink/renderer/modules/push_messaging/push_message_data.cc b/third_party/blink/renderer/modules/push_messaging/push_message_data.cc
index 6282e7a..69220f1c 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_message_data.cc
+++ b/third_party/blink/renderer/modules/push_messaging/push_message_data.cc
@@ -37,14 +37,15 @@
             ? message_data.GetAsArrayBufferView().View()->buffer()
             : message_data.GetAsArrayBuffer();
 
-    return new PushMessageData(static_cast<const char*>(buffer->Data()),
-                               buffer->ByteLength());
+    return MakeGarbageCollected<PushMessageData>(
+        static_cast<const char*>(buffer->Data()), buffer->ByteLength());
   }
 
   if (message_data.IsUSVString()) {
     CString encoded_string = UTF8Encoding().Encode(
         message_data.GetAsUSVString(), WTF::kNoUnencodables);
-    return new PushMessageData(encoded_string.data(), encoded_string.length());
+    return MakeGarbageCollected<PushMessageData>(encoded_string.data(),
+                                                 encoded_string.length());
   }
 
   DCHECK(message_data.IsNull());
diff --git a/third_party/blink/renderer/modules/push_messaging/push_message_data.h b/third_party/blink/renderer/modules/push_messaging/push_message_data.h
index 3288be3d..1185601 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_message_data.h
+++ b/third_party/blink/renderer/modules/push_messaging/push_message_data.h
@@ -28,6 +28,7 @@
   static PushMessageData* Create(
       const ArrayBufferOrArrayBufferViewOrUSVString& data);
 
+  PushMessageData(const char* data, unsigned bytes_size);
   ~PushMessageData() override;
 
   DOMArrayBuffer* arrayBuffer() const;
@@ -37,8 +38,6 @@
   String text() const;
 
  private:
-  PushMessageData(const char* data, unsigned bytes_size);
-
   Vector<char> data_;
 };
 
diff --git a/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.cc b/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.cc
index 70c9325..57dbbcb8 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.cc
+++ b/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.cc
@@ -45,7 +45,8 @@
           service_worker_registration);
 
   if (!bridge) {
-    bridge = new PushMessagingBridge(*service_worker_registration);
+    bridge =
+        MakeGarbageCollected<PushMessagingBridge>(*service_worker_registration);
     Supplement<ServiceWorkerRegistration>::ProvideTo(
         *service_worker_registration, bridge);
   }
diff --git a/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.h b/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.h
index 58f13a2..e508221 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.h
+++ b/third_party/blink/renderer/modules/push_messaging/push_messaging_bridge.h
@@ -33,6 +33,7 @@
 
   static PushMessagingBridge* From(ServiceWorkerRegistration* registration);
 
+  explicit PushMessagingBridge(ServiceWorkerRegistration& registration);
   virtual ~PushMessagingBridge();
 
   // Asynchronously determines the permission state for the current origin.
@@ -40,8 +41,6 @@
                                    const PushSubscriptionOptionsInit* options);
 
  private:
-  explicit PushMessagingBridge(ServiceWorkerRegistration& registration);
-
   // Method to be invoked when the permission status has been retrieved from the
   // permission service. Will settle the given |resolver|.
   void DidGetPermissionState(ScriptPromiseResolver* resolver,
diff --git a/third_party/blink/renderer/modules/push_messaging/push_subscription.cc b/third_party/blink/renderer/modules/push_messaging/push_subscription.cc
index 660a4023..4d677717 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_subscription.cc
+++ b/third_party/blink/renderer/modules/push_messaging/push_subscription.cc
@@ -52,7 +52,8 @@
     ServiceWorkerRegistration* service_worker_registration) {
   if (!push_subscription)
     return nullptr;
-  return new PushSubscription(*push_subscription, service_worker_registration);
+  return MakeGarbageCollected<PushSubscription>(*push_subscription,
+                                                service_worker_registration);
 }
 
 void PushSubscription::Dispose(WebPushSubscription* push_subscription) {
diff --git a/third_party/blink/renderer/modules/push_messaging/push_subscription.h b/third_party/blink/renderer/modules/push_messaging/push_subscription.h
index f6c00ac..0fbed77 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_subscription.h
+++ b/third_party/blink/renderer/modules/push_messaging/push_subscription.h
@@ -35,6 +35,8 @@
       ServiceWorkerRegistration* service_worker_registration);
   static void Dispose(WebPushSubscription* subscription_raw);
 
+  PushSubscription(const WebPushSubscription& subscription,
+                   ServiceWorkerRegistration* service_worker_registration);
   ~PushSubscription() override;
 
   KURL endpoint() const { return endpoint_; }
@@ -53,9 +55,6 @@
   FRIEND_TEST_ALL_PREFIXES(PushSubscriptionTest,
                            SerializesToBase64URLWithoutPadding);
 
-  PushSubscription(const WebPushSubscription& subscription,
-                   ServiceWorkerRegistration* service_worker_registration);
-
   KURL endpoint_;
 
   Member<PushSubscriptionOptions> options_;
diff --git a/third_party/blink/renderer/modules/push_messaging/push_subscription_options.h b/third_party/blink/renderer/modules/push_messaging/push_subscription_options.h
index 824b415..baca043 100644
--- a/third_party/blink/renderer/modules/push_messaging/push_subscription_options.h
+++ b/third_party/blink/renderer/modules/push_messaging/push_subscription_options.h
@@ -28,9 +28,11 @@
 
   static PushSubscriptionOptions* Create(
       const WebPushSubscriptionOptions& options) {
-    return new PushSubscriptionOptions(options);
+    return MakeGarbageCollected<PushSubscriptionOptions>(options);
   }
 
+  explicit PushSubscriptionOptions(const WebPushSubscriptionOptions& options);
+
   bool userVisibleOnly() const { return user_visible_only_; }
 
   // Mutable by web developer. See https://github.com/w3c/push-api/issues/198.
@@ -41,8 +43,6 @@
   void Trace(blink::Visitor* visitor) override;
 
  private:
-  explicit PushSubscriptionOptions(const WebPushSubscriptionOptions& options);
-
   bool user_visible_only_;
   Member<DOMArrayBuffer> application_server_key_;
 };
diff --git a/third_party/blink/renderer/modules/remoteplayback/remote_playback.cc b/third_party/blink/renderer/modules/remoteplayback/remote_playback.cc
index 49deb38..bc20e505 100644
--- a/third_party/blink/renderer/modules/remoteplayback/remote_playback.cc
+++ b/third_party/blink/renderer/modules/remoteplayback/remote_playback.cc
@@ -73,7 +73,7 @@
 
 // static
 RemotePlayback* RemotePlayback::Create(HTMLMediaElement& element) {
-  return new RemotePlayback(element);
+  return MakeGarbageCollected<RemotePlayback>(element);
 }
 
 RemotePlayback::RemotePlayback(HTMLMediaElement& element)
diff --git a/third_party/blink/renderer/modules/remoteplayback/remote_playback.h b/third_party/blink/renderer/modules/remoteplayback/remote_playback.h
index a820634..bed56ca 100644
--- a/third_party/blink/renderer/modules/remoteplayback/remote_playback.h
+++ b/third_party/blink/renderer/modules/remoteplayback/remote_playback.h
@@ -57,6 +57,8 @@
 
   static RemotePlayback* Create(HTMLMediaElement&);
 
+  explicit RemotePlayback(HTMLMediaElement&);
+
   // Notifies this object that disableRemotePlayback attribute was set on the
   // corresponding media element.
   void RemotePlaybackDisabled();
@@ -135,8 +137,6 @@
   friend class RemotePlaybackTest;
   friend class MediaControlsImplTest;
 
-  explicit RemotePlayback(HTMLMediaElement&);
-
   // Calls the specified availability callback with the current availability.
   // Need a void() method to post it as a task.
   void NotifyInitialAvailability(int callback_id);
diff --git a/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.cc b/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.cc
index 391732c..ef206c04 100644
--- a/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.cc
+++ b/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.cc
@@ -12,8 +12,8 @@
     ExecutionContext* execution_context,
     const SpatialSensorOptions* options,
     ExceptionState& exception_state) {
-  return new RelativeOrientationSensor(execution_context, options,
-                                       exception_state);
+  return MakeGarbageCollected<RelativeOrientationSensor>(
+      execution_context, options, exception_state);
 }
 
 // static
diff --git a/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.h b/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.h
index a4507715..fca41a4 100644
--- a/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.h
+++ b/third_party/blink/renderer/modules/sensor/relative_orientation_sensor.h
@@ -19,12 +19,11 @@
                                            ExceptionState&);
   static RelativeOrientationSensor* Create(ExecutionContext*, ExceptionState&);
 
-  void Trace(blink::Visitor*) override;
-
- private:
   RelativeOrientationSensor(ExecutionContext*,
                             const SpatialSensorOptions*,
                             ExceptionState&);
+
+  void Trace(blink::Visitor*) override;
 };
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/modules/speech/testing/platform_speech_synthesizer_mock.cc b/third_party/blink/renderer/modules/speech/testing/platform_speech_synthesizer_mock.cc
index c0feb20..5d9830ec 100644
--- a/third_party/blink/renderer/modules/speech/testing/platform_speech_synthesizer_mock.cc
+++ b/third_party/blink/renderer/modules/speech/testing/platform_speech_synthesizer_mock.cc
@@ -35,7 +35,7 @@
     PlatformSpeechSynthesizerClient* client,
     ExecutionContext* context) {
   PlatformSpeechSynthesizerMock* synthesizer =
-      new PlatformSpeechSynthesizerMock(client, context);
+      MakeGarbageCollected<PlatformSpeechSynthesizerMock>(client, context);
   synthesizer->InitializeVoiceList();
   client->VoicesDidChange();
   return synthesizer;
diff --git a/third_party/blink/renderer/modules/speech/testing/platform_speech_synthesizer_mock.h b/third_party/blink/renderer/modules/speech/testing/platform_speech_synthesizer_mock.h
index 3c690abe..bfd6ff7 100644
--- a/third_party/blink/renderer/modules/speech/testing/platform_speech_synthesizer_mock.h
+++ b/third_party/blink/renderer/modules/speech/testing/platform_speech_synthesizer_mock.h
@@ -38,7 +38,10 @@
   static PlatformSpeechSynthesizerMock* Create(PlatformSpeechSynthesizerClient*,
                                                ExecutionContext*);
 
+  explicit PlatformSpeechSynthesizerMock(PlatformSpeechSynthesizerClient*,
+                                         ExecutionContext*);
   ~PlatformSpeechSynthesizerMock() override;
+
   void Speak(PlatformSpeechSynthesisUtterance*) override;
   void Pause() override;
   void Resume() override;
@@ -47,9 +50,6 @@
   void Trace(blink::Visitor*) override;
 
  private:
-  explicit PlatformSpeechSynthesizerMock(PlatformSpeechSynthesizerClient*,
-                                         ExecutionContext*);
-
   void InitializeVoiceList() override;
 
   void SpeakNext();
diff --git a/third_party/blink/renderer/modules/webaudio/panner_node.cc b/third_party/blink/renderer/modules/webaudio/panner_node.cc
index ab8be73..3eca10b 100644
--- a/third_party/blink/renderer/modules/webaudio/panner_node.cc
+++ b/third_party/blink/renderer/modules/webaudio/panner_node.cc
@@ -714,7 +714,7 @@
     return nullptr;
   }
 
-  return new PannerNode(context);
+  return MakeGarbageCollected<PannerNode>(context);
 }
 
 PannerNode* PannerNode::Create(BaseAudioContext* context,
diff --git a/third_party/blink/renderer/modules/webaudio/panner_node.h b/third_party/blink/renderer/modules/webaudio/panner_node.h
index 3ea7ba71..775241fb 100644
--- a/third_party/blink/renderer/modules/webaudio/panner_node.h
+++ b/third_party/blink/renderer/modules/webaudio/panner_node.h
@@ -214,6 +214,8 @@
                             ExceptionState&);
   PannerHandler& GetPannerHandler() const;
 
+  PannerNode(BaseAudioContext&);
+
   void Trace(blink::Visitor*) override;
 
   // Uses a 3D cartesian coordinate system
@@ -245,8 +247,6 @@
   void setConeOuterGain(double, ExceptionState&);
 
  private:
-  PannerNode(BaseAudioContext&);
-
   Member<AudioParam> position_x_;
   Member<AudioParam> position_y_;
   Member<AudioParam> position_z_;
diff --git a/third_party/blink/renderer/modules/webaudio/periodic_wave.cc b/third_party/blink/renderer/modules/webaudio/periodic_wave.cc
index 79217399..d99e2f78 100644
--- a/third_party/blink/renderer/modules/webaudio/periodic_wave.cc
+++ b/third_party/blink/renderer/modules/webaudio/periodic_wave.cc
@@ -72,7 +72,8 @@
     return nullptr;
   }
 
-  PeriodicWave* periodic_wave = new PeriodicWave(context.sampleRate());
+  PeriodicWave* periodic_wave =
+      MakeGarbageCollected<PeriodicWave>(context.sampleRate());
   periodic_wave->CreateBandLimitedTables(real.data(), imag.data(), real.size(),
                                          disable_normalization);
   return periodic_wave;
@@ -108,25 +109,25 @@
 }
 
 PeriodicWave* PeriodicWave::CreateSine(float sample_rate) {
-  PeriodicWave* periodic_wave = new PeriodicWave(sample_rate);
+  PeriodicWave* periodic_wave = MakeGarbageCollected<PeriodicWave>(sample_rate);
   periodic_wave->GenerateBasicWaveform(OscillatorHandler::SINE);
   return periodic_wave;
 }
 
 PeriodicWave* PeriodicWave::CreateSquare(float sample_rate) {
-  PeriodicWave* periodic_wave = new PeriodicWave(sample_rate);
+  PeriodicWave* periodic_wave = MakeGarbageCollected<PeriodicWave>(sample_rate);
   periodic_wave->GenerateBasicWaveform(OscillatorHandler::SQUARE);
   return periodic_wave;
 }
 
 PeriodicWave* PeriodicWave::CreateSawtooth(float sample_rate) {
-  PeriodicWave* periodic_wave = new PeriodicWave(sample_rate);
+  PeriodicWave* periodic_wave = MakeGarbageCollected<PeriodicWave>(sample_rate);
   periodic_wave->GenerateBasicWaveform(OscillatorHandler::SAWTOOTH);
   return periodic_wave;
 }
 
 PeriodicWave* PeriodicWave::CreateTriangle(float sample_rate) {
-  PeriodicWave* periodic_wave = new PeriodicWave(sample_rate);
+  PeriodicWave* periodic_wave = MakeGarbageCollected<PeriodicWave>(sample_rate);
   periodic_wave->GenerateBasicWaveform(OscillatorHandler::TRIANGLE);
   return periodic_wave;
 }
diff --git a/third_party/blink/renderer/modules/webaudio/periodic_wave.h b/third_party/blink/renderer/modules/webaudio/periodic_wave.h
index 16ae6e6..685213f 100644
--- a/third_party/blink/renderer/modules/webaudio/periodic_wave.h
+++ b/third_party/blink/renderer/modules/webaudio/periodic_wave.h
@@ -64,6 +64,7 @@
                               const PeriodicWaveOptions*,
                               ExceptionState&);
 
+  explicit PeriodicWave(float sample_rate);
   ~PeriodicWave() override;
 
   // Returns pointers to the lower and higher wave data for the pitch range
@@ -90,8 +91,6 @@
   unsigned NumberOfRanges() const { return number_of_ranges_; }
 
  private:
-  explicit PeriodicWave(float sample_rate);
-
   void GenerateBasicWaveform(int);
 
   size_t v8_external_memory_;
diff --git a/third_party/blink/renderer/platform/graphics/filters/paint_filter_effect.cc b/third_party/blink/renderer/platform/graphics/filters/paint_filter_effect.cc
index 6686196..b7172f9 100644
--- a/third_party/blink/renderer/platform/graphics/filters/paint_filter_effect.cc
+++ b/third_party/blink/renderer/platform/graphics/filters/paint_filter_effect.cc
@@ -19,7 +19,7 @@
 
 PaintFilterEffect* PaintFilterEffect::Create(Filter* filter,
                                              const PaintFlags& flags) {
-  return new PaintFilterEffect(filter, flags);
+  return MakeGarbageCollected<PaintFilterEffect>(filter, flags);
 }
 
 sk_sp<PaintFilter> PaintFilterEffect::CreateImageFilter() {
diff --git a/third_party/blink/renderer/platform/graphics/filters/paint_filter_effect.h b/third_party/blink/renderer/platform/graphics/filters/paint_filter_effect.h
index 599f5cc1..5150316 100644
--- a/third_party/blink/renderer/platform/graphics/filters/paint_filter_effect.h
+++ b/third_party/blink/renderer/platform/graphics/filters/paint_filter_effect.h
@@ -13,6 +13,8 @@
 class PLATFORM_EXPORT PaintFilterEffect : public FilterEffect {
  public:
   static PaintFilterEffect* Create(Filter*, const PaintFlags&);
+
+  PaintFilterEffect(Filter*, const PaintFlags&);
   ~PaintFilterEffect() override;
 
   FilterEffectType GetFilterEffectType() const override {
@@ -24,8 +26,6 @@
   sk_sp<PaintFilter> CreateImageFilter() override;
 
  private:
-  PaintFilterEffect(Filter*, const PaintFlags&);
-
   PaintFlags flags_;
 };
 
diff --git a/third_party/blink/renderer/platform/loader/fetch/raw_resource.h b/third_party/blink/renderer/platform/loader/fetch/raw_resource.h
index 7e5c651..7f5e4200 100644
--- a/third_party/blink/renderer/platform/loader/fetch/raw_resource.h
+++ b/third_party/blink/renderer/platform/loader/fetch/raw_resource.h
@@ -70,7 +70,7 @@
   static RawResource* CreateForTest(ResourceRequest request,
                                     ResourceType type) {
     ResourceLoaderOptions options;
-    return new RawResource(request, type, options);
+    return MakeGarbageCollected<RawResource>(request, type, options);
   }
   static RawResource* CreateForTest(const KURL& url,
                                     scoped_refptr<const SecurityOrigin> origin,
@@ -80,6 +80,10 @@
     return CreateForTest(request, type);
   }
 
+  RawResource(const ResourceRequest&,
+              ResourceType,
+              const ResourceLoaderOptions&);
+
   // Resource implementation
   MatchStatus CanReuse(const FetchParameters&) const override;
   bool WillFollowRedirect(const ResourceRequest&,
@@ -114,14 +118,10 @@
 
     Resource* Create(const ResourceRequest& request,
                      const ResourceLoaderOptions& options) const override {
-      return new RawResource(request, type_, options);
+      return MakeGarbageCollected<RawResource>(request, type_, options);
     }
   };
 
-  RawResource(const ResourceRequest&,
-              ResourceType,
-              const ResourceLoaderOptions&);
-
   // Resource implementation
   void DidAddClient(ResourceClient*) override;
   void AppendData(const char*, size_t) override;
diff --git a/third_party/blink/renderer/platform/loader/fetch/raw_resource_test.cc b/third_party/blink/renderer/platform/loader/fetch/raw_resource_test.cc
index ccebb11..a28d04a 100644
--- a/third_party/blink/renderer/platform/loader/fetch/raw_resource_test.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/raw_resource_test.cc
@@ -210,7 +210,7 @@
 
   Persistent<DummyClient> dummy_client = MakeGarbageCollected<DummyClient>();
   Persistent<RemovingClient> removing_client =
-      new RemovingClient(dummy_client.Get());
+      MakeGarbageCollected<RemovingClient>(dummy_client.Get());
   raw->AddClient(dummy_client, platform_->test_task_runner().get());
   raw->AddClient(removing_client, platform_->test_task_runner().get());
   platform_->RunUntilIdle();
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
index 1bb482a3..86b3758 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h
@@ -75,8 +75,10 @@
 
  public:
   static ResourceFetcher* Create(FetchContext* context) {
-    return new ResourceFetcher(context);
+    return MakeGarbageCollected<ResourceFetcher>(context);
   }
+
+  ResourceFetcher(FetchContext*);
   virtual ~ResourceFetcher();
   virtual void Trace(blink::Visitor*);
 
@@ -197,8 +199,6 @@
     kIncludingKeepaliveLoaders,
   };
 
-  ResourceFetcher(FetchContext*);
-
   void InitializeRevalidation(ResourceRequest&, Resource*);
   // When |security_origin| of the ResourceLoaderOptions is not a nullptr, it'll
   // be used instead of the associated FetchContext's SecurityOrigin.
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc
index e0c0fb08..783d74e 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_fetcher_test.cc
@@ -362,7 +362,8 @@
   request1.SetHTTPHeaderField(http_names::kCacheControl, "no-cache");
   FetchParameters fetch_params1(request1);
   Persistent<RequestSameResourceOnComplete> client =
-      new RequestSameResourceOnComplete(fetch_params1, fetcher1);
+      MakeGarbageCollected<RequestSameResourceOnComplete>(fetch_params1,
+                                                          fetcher1);
   platform_->GetURLLoaderMockFactory()->ServeAsynchronousRequests();
   EXPECT_TRUE(client->NotifyFinishedCalled());
 }
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.cc b/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.cc
index 9f67274..a9e198f 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.cc
@@ -374,7 +374,7 @@
 }
 
 ResourceLoadScheduler* ResourceLoadScheduler::Create(FetchContext* context) {
-  return new ResourceLoadScheduler(
+  return MakeGarbageCollected<ResourceLoadScheduler>(
       context
           ? context
           : &FetchContext::NullInstance(Thread::Current()->GetTaskRunner()));
@@ -430,7 +430,8 @@
          ThrottleOption::kThrottleable == option);
   pending_requests_[option].insert(request_info);
   pending_request_map_.insert(
-      *id, new ClientInfo(client, option, priority, intra_priority));
+      *id, MakeGarbageCollected<ClientInfo>(client, option, priority,
+                                            intra_priority));
 
   // Remember the ClientId since MaybeRun() below may destruct the caller
   // instance and |id| may be inaccessible after the call.
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h b/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h
index b159141..7f327a2 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_load_scheduler.h
@@ -148,6 +148,8 @@
       std::numeric_limits<size_t>::max();
 
   static ResourceLoadScheduler* Create(FetchContext* = nullptr);
+
+  ResourceLoadScheduler(FetchContext*);
   ~ResourceLoadScheduler() override;
 
   void Trace(blink::Visitor*);
@@ -252,8 +254,6 @@
   bool IsClientDelayable(const ClientIdWithPriority& info,
                          ThrottleOption option) const;
 
-  ResourceLoadScheduler(FetchContext*);
-
   // Generates the next ClientId.
   ClientId GenerateClientId();
 
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
index b07bb4f..5ff1ba1b 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.cc
@@ -292,8 +292,8 @@
                                        ResourceLoadScheduler* scheduler,
                                        Resource* resource,
                                        uint32_t inflight_keepalive_bytes) {
-  return new ResourceLoader(fetcher, scheduler, resource,
-                            inflight_keepalive_bytes);
+  return MakeGarbageCollected<ResourceLoader>(fetcher, scheduler, resource,
+                                              inflight_keepalive_bytes);
 }
 
 ResourceLoader::ResourceLoader(ResourceFetcher* fetcher,
diff --git a/third_party/blink/renderer/platform/loader/fetch/resource_loader.h b/third_party/blink/renderer/platform/loader/fetch/resource_loader.h
index d509ab9..2cc7f9c 100644
--- a/third_party/blink/renderer/platform/loader/fetch/resource_loader.h
+++ b/third_party/blink/renderer/platform/loader/fetch/resource_loader.h
@@ -68,6 +68,12 @@
                                 ResourceLoadScheduler*,
                                 Resource*,
                                 uint32_t inflight_keepalive_bytes = 0);
+
+  // Assumes ResourceFetcher and Resource are non-null.
+  ResourceLoader(ResourceFetcher*,
+                 ResourceLoadScheduler*,
+                 Resource*,
+                 uint32_t inflight_keepalive_bytes);
   ~ResourceLoader() override;
   void Trace(blink::Visitor*) override;
 
@@ -149,12 +155,6 @@
   friend class SubresourceIntegrityTest;
   class CodeCacheRequest;
 
-  // Assumes ResourceFetcher and Resource are non-null.
-  ResourceLoader(ResourceFetcher*,
-                 ResourceLoadScheduler*,
-                 Resource*,
-                 uint32_t inflight_keepalive_bytes);
-
   bool ShouldFetchCodeCache();
   void StartWith(const ResourceRequest&);
 
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_answer_options_platform.h b/third_party/blink/renderer/platform/peerconnection/rtc_answer_options_platform.h
index b5eecfd..7de4760 100644
--- a/third_party/blink/renderer/platform/peerconnection/rtc_answer_options_platform.h
+++ b/third_party/blink/renderer/platform/peerconnection/rtc_answer_options_platform.h
@@ -13,17 +13,18 @@
     : public GarbageCollected<RTCAnswerOptionsPlatform> {
  public:
   static RTCAnswerOptionsPlatform* Create(bool voice_activity_detection) {
-    return new RTCAnswerOptionsPlatform(voice_activity_detection);
+    return MakeGarbageCollected<RTCAnswerOptionsPlatform>(
+        voice_activity_detection);
   }
 
+  explicit RTCAnswerOptionsPlatform(bool voice_activity_detection)
+      : voice_activity_detection_(voice_activity_detection) {}
+
   bool VoiceActivityDetection() const { return voice_activity_detection_; }
 
   void Trace(blink::Visitor* visitor) {}
 
  private:
-  explicit RTCAnswerOptionsPlatform(bool voice_activity_detection)
-      : voice_activity_detection_(voice_activity_detection) {}
-
   bool voice_activity_detection_;
 };
 
diff --git a/third_party/blink/renderer/platform/peerconnection/rtc_offer_options_platform.h b/third_party/blink/renderer/platform/peerconnection/rtc_offer_options_platform.h
index 16971566..0ee6920 100644
--- a/third_party/blink/renderer/platform/peerconnection/rtc_offer_options_platform.h
+++ b/third_party/blink/renderer/platform/peerconnection/rtc_offer_options_platform.h
@@ -16,19 +16,11 @@
                                          int32_t offer_to_receive_audio,
                                          bool voice_activity_detection,
                                          bool ice_restart) {
-    return new RTCOfferOptionsPlatform(offer_to_receive_video,
-                                       offer_to_receive_audio,
-                                       voice_activity_detection, ice_restart);
+    return MakeGarbageCollected<RTCOfferOptionsPlatform>(
+        offer_to_receive_video, offer_to_receive_audio,
+        voice_activity_detection, ice_restart);
   }
 
-  int32_t OfferToReceiveVideo() const { return offer_to_receive_video_; }
-  int32_t OfferToReceiveAudio() const { return offer_to_receive_audio_; }
-  bool VoiceActivityDetection() const { return voice_activity_detection_; }
-  bool IceRestart() const { return ice_restart_; }
-
-  void Trace(blink::Visitor* visitor) {}
-
- private:
   RTCOfferOptionsPlatform(int32_t offer_to_receive_video,
                           int32_t offer_to_receive_audio,
                           bool voice_activity_detection,
@@ -38,6 +30,14 @@
         voice_activity_detection_(voice_activity_detection),
         ice_restart_(ice_restart) {}
 
+  int32_t OfferToReceiveVideo() const { return offer_to_receive_video_; }
+  int32_t OfferToReceiveAudio() const { return offer_to_receive_audio_; }
+  bool VoiceActivityDetection() const { return voice_activity_detection_; }
+  bool IceRestart() const { return ice_restart_; }
+
+  void Trace(blink::Visitor* visitor) {}
+
+ private:
   int32_t offer_to_receive_video_;
   int32_t offer_to_receive_audio_;
   bool voice_activity_detection_;
diff --git a/third_party/blink/renderer/platform/plugins/plugin_data.cc b/third_party/blink/renderer/platform/plugins/plugin_data.cc
index 9cf65405..29721cb 100644
--- a/third_party/blink/renderer/platform/plugins/plugin_data.cc
+++ b/third_party/blink/renderer/platform/plugins/plugin_data.cc
@@ -101,9 +101,9 @@
   Vector<mojom::blink::PluginInfoPtr> plugins;
   registry->GetPlugins(false, main_frame_origin_, &plugins);
   for (const auto& plugin : plugins) {
-    auto* plugin_info =
-        new PluginInfo(plugin->name, FilePathToWebString(plugin->filename),
-                       plugin->description, plugin->background_color);
+    auto* plugin_info = MakeGarbageCollected<PluginInfo>(
+        plugin->name, FilePathToWebString(plugin->filename),
+        plugin->description, plugin->background_color);
     plugins_.push_back(plugin_info);
     for (const auto& mime : plugin->mime_types) {
       auto* mime_info = MakeGarbageCollected<MimeClassInfo>(
diff --git a/third_party/blink/renderer/platform/plugins/plugin_data.h b/third_party/blink/renderer/platform/plugins/plugin_data.h
index fc395cb..bb48e39 100644
--- a/third_party/blink/renderer/platform/plugins/plugin_data.h
+++ b/third_party/blink/renderer/platform/plugins/plugin_data.h
@@ -96,7 +96,9 @@
  public:
   void Trace(blink::Visitor*);
 
-  static PluginData* Create() { return new PluginData(); }
+  static PluginData* Create() { return MakeGarbageCollected<PluginData>(); }
+
+  PluginData() = default;
 
   const HeapVector<Member<PluginInfo>>& Plugins() const { return plugins_; }
   const HeapVector<Member<MimeClassInfo>>& Mimes() const { return mimes_; }
@@ -112,8 +114,6 @@
   static void RefreshBrowserSidePluginCache();
 
  private:
-  PluginData() = default;
-
   HeapVector<Member<PluginInfo>> plugins_;
   HeapVector<Member<MimeClassInfo>> mimes_;
   scoped_refptr<const SecurityOrigin> main_frame_origin_;
diff --git a/third_party/blink/renderer/platform/prerender.h b/third_party/blink/renderer/platform/prerender.h
index 0c7f509..5f0f7fdd 100644
--- a/third_party/blink/renderer/platform/prerender.h
+++ b/third_party/blink/renderer/platform/prerender.h
@@ -59,9 +59,10 @@
                            const KURL& url,
                            unsigned rel_types,
                            const Referrer& referrer) {
-    return new Prerender(client, url, rel_types, referrer);
+    return MakeGarbageCollected<Prerender>(client, url, rel_types, referrer);
   }
 
+  Prerender(PrerenderClient*, const KURL&, unsigned rel_types, const Referrer&);
   ~Prerender();
   void Trace(blink::Visitor*);
 
@@ -89,8 +90,6 @@
   void DidSendDOMContentLoadedForPrerender();
 
  private:
-  Prerender(PrerenderClient*, const KURL&, unsigned rel_types, const Referrer&);
-
   // The embedder's prerendering support holds on to pending Prerender objects;
   // those references should not keep the PrerenderClient alive -- if the client
   // becomes otherwise unreachable it should be GCed (at which point it will
diff --git a/third_party/blink/renderer/platform/speech/platform_speech_synthesis_utterance.cc b/third_party/blink/renderer/platform/speech/platform_speech_synthesis_utterance.cc
index 0ab189b..defd1e33 100644
--- a/third_party/blink/renderer/platform/speech/platform_speech_synthesis_utterance.cc
+++ b/third_party/blink/renderer/platform/speech/platform_speech_synthesis_utterance.cc
@@ -29,7 +29,7 @@
 
 PlatformSpeechSynthesisUtterance* PlatformSpeechSynthesisUtterance::Create(
     PlatformSpeechSynthesisUtteranceClient* client) {
-  return new PlatformSpeechSynthesisUtterance(client);
+  return MakeGarbageCollected<PlatformSpeechSynthesisUtterance>(client);
 }
 
 PlatformSpeechSynthesisUtterance::PlatformSpeechSynthesisUtterance(
diff --git a/third_party/blink/renderer/platform/speech/platform_speech_synthesis_utterance.h b/third_party/blink/renderer/platform/speech/platform_speech_synthesis_utterance.h
index 60fee9f1..69ec13b 100644
--- a/third_party/blink/renderer/platform/speech/platform_speech_synthesis_utterance.h
+++ b/third_party/blink/renderer/platform/speech/platform_speech_synthesis_utterance.h
@@ -48,6 +48,9 @@
   static PlatformSpeechSynthesisUtterance* Create(
       PlatformSpeechSynthesisUtteranceClient*);
 
+  explicit PlatformSpeechSynthesisUtterance(
+      PlatformSpeechSynthesisUtteranceClient*);
+
   const String& GetText() const { return text_; }
   void SetText(const String& text) { text_ = text; }
 
@@ -77,9 +80,6 @@
   void Trace(blink::Visitor*);
 
  private:
-  explicit PlatformSpeechSynthesisUtterance(
-      PlatformSpeechSynthesisUtteranceClient*);
-
   Member<PlatformSpeechSynthesisUtteranceClient> client_;
   String text_;
   String lang_;
diff --git a/third_party/blink/renderer/platform/speech/platform_speech_synthesizer.cc b/third_party/blink/renderer/platform/speech/platform_speech_synthesizer.cc
index 3a06d21..630cb12b 100644
--- a/third_party/blink/renderer/platform/speech/platform_speech_synthesizer.cc
+++ b/third_party/blink/renderer/platform/speech/platform_speech_synthesizer.cc
@@ -38,7 +38,7 @@
 PlatformSpeechSynthesizer* PlatformSpeechSynthesizer::Create(
     PlatformSpeechSynthesizerClient* client) {
   PlatformSpeechSynthesizer* synthesizer =
-      new PlatformSpeechSynthesizer(client);
+      MakeGarbageCollected<PlatformSpeechSynthesizer>(client);
 #if defined(OS_ANDROID)
 // On Android devices we don't fetch voices until the object
 // is touched to avoid needlessly binding to TTS service, see
diff --git a/third_party/blink/renderer/platform/speech/platform_speech_synthesizer.h b/third_party/blink/renderer/platform/speech/platform_speech_synthesizer.h
index 355aa48..f15bc8e 100644
--- a/third_party/blink/renderer/platform/speech/platform_speech_synthesizer.h
+++ b/third_party/blink/renderer/platform/speech/platform_speech_synthesizer.h
@@ -64,6 +64,7 @@
  public:
   static PlatformSpeechSynthesizer* Create(PlatformSpeechSynthesizerClient*);
 
+  explicit PlatformSpeechSynthesizer(PlatformSpeechSynthesizerClient*);
   virtual ~PlatformSpeechSynthesizer();
 
   virtual void Speak(PlatformSpeechSynthesisUtterance*);
@@ -93,8 +94,6 @@
   virtual void Trace(blink::Visitor*);
 
  protected:
-  explicit PlatformSpeechSynthesizer(PlatformSpeechSynthesizerClient*);
-
   virtual void InitializeVoiceList();
 
   Vector<scoped_refptr<PlatformSpeechSynthesisVoice>> voice_list_;