Inline static Create() from core/html - 12

As advised in [1], this CL ports calls to Foo::Create() factory
functions to use MakeGarbageCollected<Foo> from classes in
//third_party/blink/renderer/core/html.

[1] https://groups.google.com/a/chromium.org/forum/#!msg/blink-dev/iJ1bawbxbWs/vEdfT5QtBg>

Bug: 939691
Change-Id: Ia5a9b2556eff7cca577dd225fe04f48f3a849a55
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1591841
Reviewed-by: Kentaro Hara <haraken@chromium.org>
Commit-Queue: Henrique Ferreiro <hferreiro@igalia.com>
Cr-Commit-Position: refs/heads/master@{#661662}
diff --git a/third_party/blink/renderer/core/html/forms/search_input_type.cc b/third_party/blink/renderer/core/html/forms/search_input_type.cc
index 2a2e080..edcf51c 100644
--- a/third_party/blink/renderer/core/html/forms/search_input_type.cc
+++ b/third_party/blink/renderer/core/html/forms/search_input_type.cc
@@ -41,6 +41,7 @@
 #include "third_party/blink/renderer/core/input_type_names.h"
 #include "third_party/blink/renderer/core/layout/layout_search_field.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 
 namespace blink {
 
@@ -77,9 +78,9 @@
       shadow_element_names::EditingViewPort());
   DCHECK(container);
   DCHECK(view_port);
-  container->InsertBefore(
-      SearchFieldCancelButtonElement::Create(GetElement().GetDocument()),
-      view_port->nextSibling());
+  container->InsertBefore(MakeGarbageCollected<SearchFieldCancelButtonElement>(
+                              GetElement().GetDocument()),
+                          view_port->nextSibling());
 }
 
 void SearchInputType::HandleKeydownEvent(KeyboardEvent& event) {
diff --git a/third_party/blink/renderer/core/html/forms/text_control_inner_elements.cc b/third_party/blink/renderer/core/html/forms/text_control_inner_elements.cc
index 8dae233..acd7a01 100644
--- a/third_party/blink/renderer/core/html/forms/text_control_inner_elements.cc
+++ b/third_party/blink/renderer/core/html/forms/text_control_inner_elements.cc
@@ -41,14 +41,8 @@
 using namespace html_names;
 
 TextControlInnerContainer::TextControlInnerContainer(Document& document)
-    : HTMLDivElement(document) {}
-
-TextControlInnerContainer* TextControlInnerContainer::Create(
-    Document& document) {
-  TextControlInnerContainer* element =
-      MakeGarbageCollected<TextControlInnerContainer>(document);
-  element->setAttribute(kIdAttr, shadow_element_names::TextFieldContainer());
-  return element;
+    : HTMLDivElement(document) {
+  setAttribute(kIdAttr, shadow_element_names::TextFieldContainer());
 }
 
 LayoutObject* TextControlInnerContainer::CreateLayoutObject(
@@ -62,13 +56,7 @@
 EditingViewPortElement::EditingViewPortElement(Document& document)
     : HTMLDivElement(document) {
   SetHasCustomStyleCallbacks();
-}
-
-EditingViewPortElement* EditingViewPortElement::Create(Document& document) {
-  EditingViewPortElement* element =
-      MakeGarbageCollected<EditingViewPortElement>(document);
-  element->setAttribute(kIdAttr, shadow_element_names::EditingViewPort());
-  return element;
+  setAttribute(kIdAttr, shadow_element_names::EditingViewPort());
 }
 
 scoped_refptr<ComputedStyle>
@@ -97,11 +85,6 @@
   SetHasCustomStyleCallbacks();
 }
 
-TextControlInnerEditorElement* TextControlInnerEditorElement::Create(
-    Document& document) {
-  return MakeGarbageCollected<TextControlInnerEditorElement>(document);
-}
-
 void TextControlInnerEditorElement::DefaultEventHandler(Event& event) {
   // FIXME: In the future, we should add a way to have default event listeners.
   // Then we would add one to the text field's inner div, and we wouldn't need
@@ -213,17 +196,11 @@
 
 // ----------------------------
 
-inline SearchFieldCancelButtonElement::SearchFieldCancelButtonElement(
+SearchFieldCancelButtonElement::SearchFieldCancelButtonElement(
     Document& document)
-    : HTMLDivElement(document) {}
-
-SearchFieldCancelButtonElement* SearchFieldCancelButtonElement::Create(
-    Document& document) {
-  SearchFieldCancelButtonElement* element =
-      MakeGarbageCollected<SearchFieldCancelButtonElement>(document);
-  element->SetShadowPseudoId(AtomicString("-webkit-search-cancel-button"));
-  element->setAttribute(kIdAttr, shadow_element_names::SearchClearButton());
-  return element;
+    : HTMLDivElement(document) {
+  SetShadowPseudoId(AtomicString("-webkit-search-cancel-button"));
+  setAttribute(kIdAttr, shadow_element_names::SearchClearButton());
 }
 
 void SearchFieldCancelButtonElement::DefaultEventHandler(Event& event) {
diff --git a/third_party/blink/renderer/core/html/forms/text_control_inner_elements.h b/third_party/blink/renderer/core/html/forms/text_control_inner_elements.h
index 0abb2d6..8d7c67b 100644
--- a/third_party/blink/renderer/core/html/forms/text_control_inner_elements.h
+++ b/third_party/blink/renderer/core/html/forms/text_control_inner_elements.h
@@ -34,8 +34,6 @@
 
 class TextControlInnerContainer final : public HTMLDivElement {
  public:
-  static TextControlInnerContainer* Create(Document&);
-
   explicit TextControlInnerContainer(Document&);
 
  protected:
@@ -45,8 +43,6 @@
 
 class EditingViewPortElement final : public HTMLDivElement {
  public:
-  static EditingViewPortElement* Create(Document&);
-
   explicit EditingViewPortElement(Document&);
 
  protected:
@@ -59,8 +55,6 @@
 
 class TextControlInnerEditorElement final : public HTMLDivElement {
  public:
-  static TextControlInnerEditorElement* Create(Document&);
-
   explicit TextControlInnerEditorElement(Document&);
 
   void DefaultEventHandler(Event&) override;
@@ -78,8 +72,6 @@
 
 class SearchFieldCancelButtonElement final : public HTMLDivElement {
  public:
-  static SearchFieldCancelButtonElement* Create(Document&);
-
   explicit SearchFieldCancelButtonElement(Document&);
 
   void DefaultEventHandler(Event&) override;
diff --git a/third_party/blink/renderer/core/html/forms/text_field_input_type.cc b/third_party/blink/renderer/core/html/forms/text_field_input_type.cc
index e23a454..ef55cd7 100644
--- a/third_party/blink/renderer/core/html/forms/text_field_input_type.cc
+++ b/third_party/blink/renderer/core/html/forms/text_field_input_type.cc
@@ -296,14 +296,13 @@
     return;
   }
 
-  TextControlInnerContainer* container =
-      TextControlInnerContainer::Create(document);
+  auto* container = MakeGarbageCollected<TextControlInnerContainer>(document);
   container->SetShadowPseudoId(
       AtomicString("-webkit-textfield-decoration-container"));
   shadow_root->AppendChild(container);
 
-  EditingViewPortElement* editing_view_port =
-      EditingViewPortElement::Create(document);
+  auto* editing_view_port =
+      MakeGarbageCollected<EditingViewPortElement>(document);
   editing_view_port->AppendChild(inner_editor);
   container->AppendChild(editing_view_port);
 
@@ -355,12 +354,14 @@
       // FIXME: The following code is similar to createShadowSubtree(),
       // but they are different. We should simplify the code by making
       // containerElement mandatory.
-      Element* rp_container = TextControlInnerContainer::Create(document);
+      auto* rp_container =
+          MakeGarbageCollected<TextControlInnerContainer>(document);
       rp_container->SetShadowPseudoId(
           AtomicString("-webkit-textfield-decoration-container"));
       Element* inner_editor = GetElement().InnerEditorElement();
       inner_editor->parentNode()->ReplaceChild(rp_container, inner_editor);
-      Element* editing_view_port = EditingViewPortElement::Create(document);
+      auto* editing_view_port =
+          MakeGarbageCollected<EditingViewPortElement>(document);
       editing_view_port->AppendChild(inner_editor);
       rp_container->AppendChild(editing_view_port);
       rp_container->AppendChild(
diff --git a/third_party/blink/renderer/core/html/media/html_media_element.cc b/third_party/blink/renderer/core/html/media/html_media_element.cc
index dc286d6..6c8d67c 100644
--- a/third_party/blink/renderer/core/html/media/html_media_element.cc
+++ b/third_party/blink/renderer/core/html/media/html_media_element.cc
@@ -2759,8 +2759,8 @@
            << (AtomicString)kind_string << "', '" << (String)label << "', '"
            << (String)language << "', " << BoolString(enabled) << ")";
 
-  AudioTrack* audio_track =
-      AudioTrack::Create(id, kind_string, label, language, enabled);
+  auto* audio_track = MakeGarbageCollected<AudioTrack>(id, kind_string, label,
+                                                       language, enabled);
   audioTracks().Add(audio_track);
 
   return audio_track->id();
@@ -3664,7 +3664,7 @@
     to_be_inserted = second_child;
   }
 
-  TextTrackContainer* text_track_container = TextTrackContainer::Create(*this);
+  auto* text_track_container = MakeGarbageCollected<TextTrackContainer>(*this);
 
   // The text track container should be inserted before the media controls,
   // so that they are rendered behind them.
diff --git a/third_party/blink/renderer/core/html/media/html_media_element_test.cc b/third_party/blink/renderer/core/html/media/html_media_element_test.cc
index 783b3fc..f38e4f1 100644
--- a/third_party/blink/renderer/core/html/media/html_media_element_test.cc
+++ b/third_party/blink/renderer/core/html/media/html_media_element_test.cc
@@ -96,7 +96,8 @@
       media_ = MakeGarbageCollected<HTMLAudioElement>(
           dummy_page_holder_->GetDocument());
     } else {
-      media_ = HTMLVideoElement::Create(dummy_page_holder_->GetDocument());
+      media_ = MakeGarbageCollected<HTMLVideoElement>(
+          dummy_page_holder_->GetDocument());
     }
   }
 
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 3912b67..8244dcc1 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
@@ -107,10 +107,6 @@
   UpdateStateIfNeeded();
 }
 
-HTMLVideoElement* HTMLVideoElement::Create(Document& document) {
-  return MakeGarbageCollected<HTMLVideoElement>(document);
-}
-
 void HTMLVideoElement::Trace(Visitor* visitor) {
   visitor->Trace(image_loader_);
   visitor->Trace(custom_controls_fullscreen_detector_);
diff --git a/third_party/blink/renderer/core/html/media/html_video_element.h b/third_party/blink/renderer/core/html/media/html_video_element.h
index 4c1c87ff..bd710023 100644
--- a/third_party/blink/renderer/core/html/media/html_video_element.h
+++ b/third_party/blink/renderer/core/html/media/html_video_element.h
@@ -55,8 +55,6 @@
  public:
   static const int kNoAlreadyUploadedFrame = -1;
 
-  static HTMLVideoElement* Create(Document&);
-
   HTMLVideoElement(Document&);
   void Trace(Visitor*) override;
 
diff --git a/third_party/blink/renderer/core/html/media/html_video_element_test.cc b/third_party/blink/renderer/core/html/media/html_video_element_test.cc
index 37e149c..d5a1f3d1 100644
--- a/third_party/blink/renderer/core/html/media/html_video_element_test.cc
+++ b/third_party/blink/renderer/core/html/media/html_video_element_test.cc
@@ -16,6 +16,7 @@
 #include "third_party/blink/renderer/core/loader/empty_clients.h"
 #include "third_party/blink/renderer/core/paint/paint_layer.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/testing/empty_web_media_player.h"
 #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
 
@@ -38,7 +39,7 @@
                          MakeGarbageCollected<test::MediaStubLocalFrameClient>(
                              std::move(mock_media_player)),
                          nullptr);
-    video_ = HTMLVideoElement::Create(GetDocument());
+    video_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     GetDocument().body()->appendChild(video_);
   }
 
diff --git a/third_party/blink/renderer/core/html/media/media_document.cc b/third_party/blink/renderer/core/html/media/media_document.cc
index c1f3144f..8751b11 100644
--- a/third_party/blink/renderer/core/html/media/media_document.cc
+++ b/third_party/blink/renderer/core/html/media/media_document.cc
@@ -92,7 +92,7 @@
   meta->setAttribute(kContentAttr, "width=device-width");
   head->AppendChild(meta);
 
-  HTMLVideoElement* media = HTMLVideoElement::Create(*GetDocument());
+  auto* media = MakeGarbageCollected<HTMLVideoElement>(*GetDocument());
   media->setAttribute(kControlsAttr, "");
   media->setAttribute(kAutoplayAttr, "");
   media->setAttribute(kNameAttr, "media");
diff --git a/third_party/blink/renderer/core/html/media/video_wake_lock_test.cc b/third_party/blink/renderer/core/html/media/video_wake_lock_test.cc
index ca56c94..5fc8dfd 100644
--- a/third_party/blink/renderer/core/html/media/video_wake_lock_test.cc
+++ b/third_party/blink/renderer/core/html/media/video_wake_lock_test.cc
@@ -12,6 +12,7 @@
 #include "third_party/blink/renderer/core/html/media/html_video_element.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
 #include "third_party/blink/renderer/core/testing/wait_for_event.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/testing/empty_web_media_player.h"
 #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
 
@@ -109,7 +110,7 @@
         WTF::BindRepeating(&VideoWakeLockPictureInPictureService::Bind,
                            WTF::Unretained(&pip_service_)));
 
-    video_ = HTMLVideoElement::Create(GetDocument());
+    video_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     video_->SetReadyState(HTMLMediaElement::ReadyState::kHaveMetadata);
     video_wake_lock_ = MakeGarbageCollected<VideoWakeLock>(*video_.Get());
 
diff --git a/third_party/blink/renderer/core/html/parser/html_construction_site.cc b/third_party/blink/renderer/core/html/parser/html_construction_site.cc
index 3f6cbc6..f0be937 100644
--- a/third_party/blink/renderer/core/html/parser/html_construction_site.cc
+++ b/third_party/blink/renderer/core/html/parser/html_construction_site.cc
@@ -420,7 +420,8 @@
   }
   SetAttributes(element, token, parser_content_policy_);
   AttachLater(attachment_root_, element);
-  open_elements_.PushHTMLHtmlElement(HTMLStackItem::Create(element, token));
+  open_elements_.PushHTMLHtmlElement(
+      MakeGarbageCollected<HTMLStackItem>(element, token));
 
   ExecuteQueuedTasks();
   element->InsertedByParser();
@@ -670,7 +671,8 @@
 
 void HTMLConstructionSite::InsertHTMLHeadElement(AtomicHTMLToken* token) {
   DCHECK(!ShouldFosterParent());
-  head_ = HTMLStackItem::Create(CreateElement(token, xhtmlNamespaceURI), token);
+  head_ = MakeGarbageCollected<HTMLStackItem>(
+      CreateElement(token, xhtmlNamespaceURI), token);
   AttachLater(CurrentNode(), head_->GetElement());
   open_elements_.PushHTMLHeadElement(head_);
 }
@@ -679,7 +681,8 @@
   DCHECK(!ShouldFosterParent());
   Element* body = CreateElement(token, xhtmlNamespaceURI);
   AttachLater(CurrentNode(), body);
-  open_elements_.PushHTMLBodyElement(HTMLStackItem::Create(body, token));
+  open_elements_.PushHTMLBodyElement(
+      MakeGarbageCollected<HTMLStackItem>(body, token));
   if (document_)
     document_->WillInsertBody();
 }
@@ -695,13 +698,13 @@
                       WebFeature::kDemotedFormElement);
   }
   AttachLater(CurrentNode(), form_element);
-  open_elements_.Push(HTMLStackItem::Create(form_element, token));
+  open_elements_.Push(MakeGarbageCollected<HTMLStackItem>(form_element, token));
 }
 
 void HTMLConstructionSite::InsertHTMLElement(AtomicHTMLToken* token) {
   Element* element = CreateElement(token, xhtmlNamespaceURI);
   AttachLater(CurrentNode(), element);
-  open_elements_.Push(HTMLStackItem::Create(element, token));
+  open_elements_.Push(MakeGarbageCollected<HTMLStackItem>(element, token));
 }
 
 void HTMLConstructionSite::InsertSelfClosingHTMLElementDestroyingToken(
@@ -746,7 +749,7 @@
   SetAttributes(element, token, parser_content_policy_);
   if (ScriptingContentIsAllowed(parser_content_policy_))
     AttachLater(CurrentNode(), element);
-  open_elements_.Push(HTMLStackItem::Create(element, token));
+  open_elements_.Push(MakeGarbageCollected<HTMLStackItem>(element, token));
 }
 
 void HTMLConstructionSite::InsertForeignElement(
@@ -761,8 +764,10 @@
       !element->IsScriptElement()) {
     AttachLater(CurrentNode(), element, token->SelfClosing());
   }
-  if (!token->SelfClosing())
-    open_elements_.Push(HTMLStackItem::Create(element, token, namespace_uri));
+  if (!token->SelfClosing()) {
+    open_elements_.Push(
+        MakeGarbageCollected<HTMLStackItem>(element, token, namespace_uri));
+  }
 }
 
 void HTMLConstructionSite::InsertTextNode(const StringView& string,
@@ -999,7 +1004,8 @@
   AtomicHTMLToken fake_token(HTMLToken::kStartTag, item->LocalName(),
                              item->Attributes());
   element = CreateElement(&fake_token, item->NamespaceURI());
-  return HTMLStackItem::Create(element, &fake_token, item->NamespaceURI());
+  return MakeGarbageCollected<HTMLStackItem>(element, &fake_token,
+                                             item->NamespaceURI());
 }
 
 bool HTMLConstructionSite::IndexOfFirstUnopenFormattingElement(
diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.cc b/third_party/blink/renderer/core/html/parser/html_document_parser.cc
index 003433b..c8ab1dd 100644
--- a/third_party/blink/renderer/core/html/parser/html_document_parser.cc
+++ b/third_party/blink/renderer/core/html/parser/html_document_parser.cc
@@ -56,6 +56,7 @@
 #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h"
 #include "third_party/blink/renderer/platform/cross_thread_functional.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/histogram.h"
 #include "third_party/blink/renderer/platform/instrumentation/tracing/trace_event.h"
 #include "third_party/blink/renderer/platform/loader/fetch/resource_fetcher.h"
@@ -100,8 +101,8 @@
     : HTMLDocumentParser(document, kAllowScriptingContent, sync_policy) {
   script_runner_ =
       HTMLParserScriptRunner::Create(ReentryPermit(), &document, this);
-  tree_builder_ =
-      HTMLTreeBuilder::Create(this, document, kAllowScriptingContent, options_);
+  tree_builder_ = MakeGarbageCollected<HTMLTreeBuilder>(
+      this, document, kAllowScriptingContent, options_);
 }
 
 HTMLDocumentParser::HTMLDocumentParser(
@@ -112,8 +113,8 @@
                          parser_content_policy,
                          kForceSynchronousParsing) {
   // No script_runner_ in fragment parser.
-  tree_builder_ = HTMLTreeBuilder::Create(this, fragment, context_element,
-                                          parser_content_policy, options_);
+  tree_builder_ = MakeGarbageCollected<HTMLTreeBuilder>(
+      this, fragment, context_element, parser_content_policy, options_);
 
   // For now document fragment parsing never reports errors.
   bool report_errors = false;
@@ -135,10 +136,11 @@
                      ? std::make_unique<HTMLTokenizer>(options_)
                      : nullptr),
       loading_task_runner_(document.GetTaskRunner(TaskType::kNetworking)),
-      parser_scheduler_(
-          sync_policy == kAllowAsynchronousParsing
-              ? HTMLParserScheduler::Create(this, loading_task_runner_.get())
-              : nullptr),
+      parser_scheduler_(sync_policy == kAllowAsynchronousParsing
+                            ? MakeGarbageCollected<HTMLParserScheduler>(
+                                  this,
+                                  loading_task_runner_.get())
+                            : nullptr),
       xss_auditor_delegate_(&document),
       pending_csp_meta_token_(nullptr),
       should_use_threading_(sync_policy == kAllowAsynchronousParsing),
@@ -170,7 +172,7 @@
       !document.IsPrefetchOnly())
     return;
 
-  preloader_ = HTMLResourcePreloader::Create(document);
+  preloader_ = MakeGarbageCollected<HTMLResourcePreloader>(document);
 }
 
 HTMLDocumentParser::~HTMLDocumentParser() = default;
@@ -1130,7 +1132,7 @@
     DocumentFragment* fragment,
     Element* context_element,
     ParserContentPolicy parser_content_policy) {
-  HTMLDocumentParser* parser = HTMLDocumentParser::Create(
+  auto* parser = MakeGarbageCollected<HTMLDocumentParser>(
       fragment, context_element, parser_content_policy);
   parser->Append(source);
   parser->Finish();
diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser.h b/third_party/blink/renderer/core/html/parser/html_document_parser.h
index 2384523..c935616 100644
--- a/third_party/blink/renderer/core/html/parser/html_document_parser.h
+++ b/third_party/blink/renderer/core/html/parser/html_document_parser.h
@@ -71,13 +71,6 @@
   USING_PRE_FINALIZER(HTMLDocumentParser, Dispose);
 
  public:
-  static HTMLDocumentParser* Create(
-      HTMLDocument& document,
-      ParserSynchronizationPolicy background_parsing_policy) {
-    return MakeGarbageCollected<HTMLDocumentParser>(document,
-                                                    background_parsing_policy);
-  }
-
   HTMLDocumentParser(HTMLDocument&, ParserSynchronizationPolicy);
   HTMLDocumentParser(DocumentFragment*,
                      Element* context_element,
@@ -150,12 +143,6 @@
   void ForcePlaintextForTextDocument();
 
  private:
-  static HTMLDocumentParser* Create(DocumentFragment* fragment,
-                                    Element* context_element,
-                                    ParserContentPolicy parser_content_policy) {
-    return MakeGarbageCollected<HTMLDocumentParser>(fragment, context_element,
-                                                    parser_content_policy);
-  }
   HTMLDocumentParser(Document&,
                      ParserContentPolicy,
                      ParserSynchronizationPolicy);
diff --git a/third_party/blink/renderer/core/html/parser/html_document_parser_test.cc b/third_party/blink/renderer/core/html/parser/html_document_parser_test.cc
index 325fbbd..33750ce 100644
--- a/third_party/blink/renderer/core/html/parser/html_document_parser_test.cc
+++ b/third_party/blink/renderer/core/html/parser/html_document_parser_test.cc
@@ -12,6 +12,7 @@
 #include "third_party/blink/renderer/core/loader/prerenderer_client.h"
 #include "third_party/blink/renderer/core/loader/text_resource_decoder_builder.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 
 namespace blink {
 
@@ -52,8 +53,8 @@
   }
 
   HTMLDocumentParser* CreateParser(HTMLDocument& document) {
-    HTMLDocumentParser* parser =
-        HTMLDocumentParser::Create(document, kForceSynchronousParsing);
+    auto* parser = MakeGarbageCollected<HTMLDocumentParser>(
+        document, kForceSynchronousParsing);
     std::unique_ptr<TextResourceDecoder> decoder(
         BuildTextResourceDecoderFor(&document, "text/html", g_null_atom));
     parser->SetDecoder(std::move(decoder));
diff --git a/third_party/blink/renderer/core/html/parser/html_parser_scheduler.h b/third_party/blink/renderer/core/html/parser/html_parser_scheduler.h
index bff4686..612dd39f 100644
--- a/third_party/blink/renderer/core/html/parser/html_parser_scheduler.h
+++ b/third_party/blink/renderer/core/html/parser/html_parser_scheduler.h
@@ -26,8 +26,6 @@
 #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_HTML_PARSER_HTML_PARSER_SCHEDULER_H_
 #define THIRD_PARTY_BLINK_RENDERER_CORE_HTML_PARSER_HTML_PARSER_SCHEDULER_H_
 
-#include <memory>
-
 #include "base/macros.h"
 #include "base/memory/scoped_refptr.h"
 #include "base/single_thread_task_runner.h"
@@ -58,13 +56,6 @@
 class HTMLParserScheduler final
     : public GarbageCollectedFinalized<HTMLParserScheduler> {
  public:
-  static HTMLParserScheduler* Create(
-      HTMLDocumentParser* parser,
-      scoped_refptr<base::SingleThreadTaskRunner> loading_task_runner) {
-    return MakeGarbageCollected<HTMLParserScheduler>(
-        parser, std::move(loading_task_runner));
-  }
-
   HTMLParserScheduler(HTMLDocumentParser*,
                       scoped_refptr<base::SingleThreadTaskRunner>);
   ~HTMLParserScheduler();
diff --git a/third_party/blink/renderer/core/html/parser/html_resource_preloader.cc b/third_party/blink/renderer/core/html/parser/html_resource_preloader.cc
index 69a9792..4e16dc0 100644
--- a/third_party/blink/renderer/core/html/parser/html_resource_preloader.cc
+++ b/third_party/blink/renderer/core/html/parser/html_resource_preloader.cc
@@ -40,10 +40,6 @@
 HTMLResourcePreloader::HTMLResourcePreloader(Document& document)
     : document_(document) {}
 
-HTMLResourcePreloader* HTMLResourcePreloader::Create(Document& document) {
-  return MakeGarbageCollected<HTMLResourcePreloader>(document);
-}
-
 void HTMLResourcePreloader::Trace(Visitor* visitor) {
   visitor->Trace(document_);
 }
diff --git a/third_party/blink/renderer/core/html/parser/html_resource_preloader.h b/third_party/blink/renderer/core/html/parser/html_resource_preloader.h
index de995b53..f161004 100644
--- a/third_party/blink/renderer/core/html/parser/html_resource_preloader.h
+++ b/third_party/blink/renderer/core/html/parser/html_resource_preloader.h
@@ -45,8 +45,6 @@
   friend class HTMLResourcePreloaderTest;
 
  public:
-  static HTMLResourcePreloader* Create(Document&);
-
   explicit HTMLResourcePreloader(Document&);
 
   void Trace(Visitor*);
diff --git a/third_party/blink/renderer/core/html/parser/html_resource_preloader_test.cc b/third_party/blink/renderer/core/html/parser/html_resource_preloader_test.cc
index bdab3f7..4255c0b 100644
--- a/third_party/blink/renderer/core/html/parser/html_resource_preloader_test.cc
+++ b/third_party/blink/renderer/core/html/parser/html_resource_preloader_test.cc
@@ -72,8 +72,8 @@
     DCHECK(preload_request);
     if (test_case.is_cors)
       preload_request->SetCrossOrigin(kCrossOriginAttributeAnonymous);
-    HTMLResourcePreloader* preloader =
-        HTMLResourcePreloader::Create(GetDocument());
+    auto* preloader =
+        MakeGarbageCollected<HTMLResourcePreloader>(GetDocument());
     preloader->Preload(std::move(preload_request));
     ASSERT_TRUE(platform_->GetMockPrescientNetworking().DidPreconnect());
     ASSERT_NE(test_case.is_cors,
diff --git a/third_party/blink/renderer/core/html/parser/html_stack_item.h b/third_party/blink/renderer/core/html/parser/html_stack_item.h
index d2778af..e300375 100644
--- a/third_party/blink/renderer/core/html/parser/html_stack_item.h
+++ b/third_party/blink/renderer/core/html/parser/html_stack_item.h
@@ -41,19 +41,6 @@
  public:
   enum ItemType { kItemForContextElement, kItemForDocumentFragmentNode };
 
-  // Used by document fragment node and context element.
-  static HTMLStackItem* Create(ContainerNode* node, ItemType type) {
-    return MakeGarbageCollected<HTMLStackItem>(node, type);
-  }
-
-  // Used by HTMLElementStack and HTMLFormattingElementList.
-  static HTMLStackItem* Create(
-      ContainerNode* node,
-      AtomicHTMLToken* token,
-      const AtomicString& namespace_uri = html_names::xhtmlNamespaceURI) {
-    return MakeGarbageCollected<HTMLStackItem>(node, token, namespace_uri);
-  }
-
   HTMLStackItem(ContainerNode* node, ItemType type) : node_(node) {
     switch (type) {
       case kItemForDocumentFragmentNode:
diff --git a/third_party/blink/renderer/core/html/parser/html_tree_builder.cc b/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
index 2ca0829..2d3956c 100644
--- a/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
+++ b/third_party/blink/renderer/core/html/parser/html_tree_builder.cc
@@ -51,6 +51,7 @@
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
 #include "third_party/blink/renderer/platform/bindings/runtime_call_stats.h"
 #include "third_party/blink/renderer/platform/bindings/v8_per_isolate_data.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/text/platform_locale.h"
 #include "third_party/blink/renderer/platform/wtf/text/character_names.h"
 
@@ -249,7 +250,7 @@
   // http://www.whatwg.org/specs/web-apps/current-work/multipage/the-end.html#fragment-case
   // For efficiency, we skip step 4.2 ("Let root be a new html element with no
   // attributes") and instead use the DocumentFragment as a root node.
-  tree_.OpenElements()->PushRootNode(HTMLStackItem::Create(
+  tree_.OpenElements()->PushRootNode(MakeGarbageCollected<HTMLStackItem>(
       fragment, HTMLStackItem::kItemForDocumentFragmentNode));
 
   if (IsHTMLTemplateElement(*context_element))
@@ -265,7 +266,7 @@
   DCHECK(fragment);
   DCHECK(!fragment->HasChildren());
   fragment_ = fragment;
-  context_element_stack_item_ = HTMLStackItem::Create(
+  context_element_stack_item_ = MakeGarbageCollected<HTMLStackItem>(
       context_element, HTMLStackItem::kItemForContextElement);
 }
 
diff --git a/third_party/blink/renderer/core/html/parser/html_tree_builder.h b/third_party/blink/renderer/core/html/parser/html_tree_builder.h
index cc8f5145..af7b90d7 100644
--- a/third_party/blink/renderer/core/html/parser/html_tree_builder.h
+++ b/third_party/blink/renderer/core/html/parser/html_tree_builder.h
@@ -52,22 +52,6 @@
   // editing code.
   // TODO(kouhei): Fix editing code to always invoke HTML parser on
   // HTMLDocument.
-  static HTMLTreeBuilder* Create(HTMLDocumentParser* parser,
-                                 Document& document,
-                                 ParserContentPolicy parser_content_policy,
-                                 const HTMLParserOptions& options) {
-    return MakeGarbageCollected<HTMLTreeBuilder>(
-        parser, document, parser_content_policy, options);
-  }
-  static HTMLTreeBuilder* Create(HTMLDocumentParser* parser,
-                                 DocumentFragment* fragment,
-                                 Element* context_element,
-                                 ParserContentPolicy parser_content_policy,
-                                 const HTMLParserOptions& options) {
-    return MakeGarbageCollected<HTMLTreeBuilder>(
-        parser, fragment, context_element, parser_content_policy, options);
-  }
-
   HTMLTreeBuilder(HTMLDocumentParser*,
                   Document&,
                   ParserContentPolicy,
diff --git a/third_party/blink/renderer/core/html/parser/html_view_source_parser.h b/third_party/blink/renderer/core/html/parser/html_view_source_parser.h
index ba9cd536..d953379 100644
--- a/third_party/blink/renderer/core/html/parser/html_view_source_parser.h
+++ b/third_party/blink/renderer/core/html/parser/html_view_source_parser.h
@@ -40,11 +40,6 @@
 class CORE_EXPORT HTMLViewSourceParser final
     : public DecodedDataDocumentParser {
  public:
-  static HTMLViewSourceParser* Create(HTMLViewSourceDocument& document,
-                                      const String& mime_type) {
-    return MakeGarbageCollected<HTMLViewSourceParser>(document, mime_type);
-  }
-
   HTMLViewSourceParser(HTMLViewSourceDocument&, const String& mime_type);
   ~HTMLViewSourceParser() override = default;
 
diff --git a/third_party/blink/renderer/core/html/parser/text_document_parser.h b/third_party/blink/renderer/core/html/parser/text_document_parser.h
index 0fc7fbff0..1556fb0 100644
--- a/third_party/blink/renderer/core/html/parser/text_document_parser.h
+++ b/third_party/blink/renderer/core/html/parser/text_document_parser.h
@@ -31,11 +31,6 @@
 
 class TextDocumentParser final : public HTMLDocumentParser {
  public:
-  static TextDocumentParser* Create(HTMLDocument& document,
-                                    ParserSynchronizationPolicy sync_policy) {
-    return MakeGarbageCollected<TextDocumentParser>(document, sync_policy);
-  }
-
   explicit TextDocumentParser(HTMLDocument&, ParserSynchronizationPolicy);
   ~TextDocumentParser() override;
 
diff --git a/third_party/blink/renderer/core/html/plugin_document.cc b/third_party/blink/renderer/core/html/plugin_document.cc
index 4ba05f1..ab95ea8 100644
--- a/third_party/blink/renderer/core/html/plugin_document.cc
+++ b/third_party/blink/renderer/core/html/plugin_document.cc
@@ -54,12 +54,6 @@
 // FIXME: Share more code with MediaDocumentParser.
 class PluginDocumentParser : public RawDataDocumentParser {
  public:
-  static PluginDocumentParser* Create(PluginDocument* document,
-                                      Color background_color) {
-    return MakeGarbageCollected<PluginDocumentParser>(document,
-                                                      background_color);
-  }
-
   PluginDocumentParser(Document* document, Color background_color)
       : RawDataDocumentParser(document),
         embed_element_(nullptr),
@@ -201,7 +195,7 @@
 }
 
 DocumentParser* PluginDocument::CreateParser() {
-  return PluginDocumentParser::Create(this, background_color_);
+  return MakeGarbageCollected<PluginDocumentParser>(this, background_color_);
 }
 
 WebPluginContainerImpl* PluginDocument::GetPluginView() {
diff --git a/third_party/blink/renderer/core/html/portal/html_portal_element.cc b/third_party/blink/renderer/core/html/portal/html_portal_element.cc
index 8b56786..82a47d7 100644
--- a/third_party/blink/renderer/core/html/portal/html_portal_element.cc
+++ b/third_party/blink/renderer/core/html/portal/html_portal_element.cc
@@ -58,13 +58,6 @@
   visitor->Trace(portal_frame_);
 }
 
-HTMLElement* HTMLPortalElement::Create(Document& document) {
-  if (RuntimeEnabledFeatures::PortalsEnabled())
-    return MakeGarbageCollected<HTMLPortalElement>(document);
-  return MakeGarbageCollected<HTMLUnknownElement>(html_names::kPortalTag,
-                                                  document);
-}
-
 void HTMLPortalElement::Navigate() {
   KURL url = GetNonEmptyURLAttribute(html_names::kSrcAttr);
   if (!url.IsEmpty() && portal_ptr_) {
diff --git a/third_party/blink/renderer/core/html/portal/html_portal_element.h b/third_party/blink/renderer/core/html/portal/html_portal_element.h
index 1864855..296f1022 100644
--- a/third_party/blink/renderer/core/html/portal/html_portal_element.h
+++ b/third_party/blink/renderer/core/html/portal/html_portal_element.h
@@ -30,8 +30,6 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static HTMLElement* Create(Document&);
-
   explicit HTMLPortalElement(
       Document& document,
       const base::UnguessableToken& portal_token = base::UnguessableToken(),
diff --git a/third_party/blink/renderer/core/html/text_document.cc b/third_party/blink/renderer/core/html/text_document.cc
index 3802a6e..26cd7ce 100644
--- a/third_party/blink/renderer/core/html/text_document.cc
+++ b/third_party/blink/renderer/core/html/text_document.cc
@@ -26,6 +26,7 @@
 
 #include "third_party/blink/renderer/core/frame/use_counter.h"
 #include "third_party/blink/renderer/core/html/parser/text_document_parser.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 
 namespace blink {
 
@@ -36,7 +37,8 @@
 }
 
 DocumentParser* TextDocument::CreateParser() {
-  return TextDocumentParser::Create(*this, GetParserSynchronizationPolicy());
+  return MakeGarbageCollected<TextDocumentParser>(
+      *this, GetParserSynchronizationPolicy());
 }
 
 }  // namespace blink
diff --git a/third_party/blink/renderer/core/html/track/audio_track.cc b/third_party/blink/renderer/core/html/track/audio_track.cc
index c89577c..53484fa 100644
--- a/third_party/blink/renderer/core/html/track/audio_track.cc
+++ b/third_party/blink/renderer/core/html/track/audio_track.cc
@@ -13,7 +13,11 @@
                        const AtomicString& label,
                        const AtomicString& language,
                        bool enabled)
-    : TrackBase(WebMediaPlayer::kAudioTrack, kind, label, language, id),
+    : TrackBase(WebMediaPlayer::kAudioTrack,
+                IsValidKindKeyword(kind) ? kind : g_empty_atom,
+                label,
+                language,
+                id),
       enabled_(enabled) {}
 
 AudioTrack::~AudioTrack() = default;
diff --git a/third_party/blink/renderer/core/html/track/audio_track.h b/third_party/blink/renderer/core/html/track/audio_track.h
index db86e9f..380c3b2 100644
--- a/third_party/blink/renderer/core/html/track/audio_track.h
+++ b/third_party/blink/renderer/core/html/track/audio_track.h
@@ -16,16 +16,6 @@
   USING_GARBAGE_COLLECTED_MIXIN(AudioTrack);
 
  public:
-  static AudioTrack* Create(const String& id,
-                            const AtomicString& kind,
-                            const AtomicString& label,
-                            const AtomicString& language,
-                            bool enabled) {
-    return MakeGarbageCollected<AudioTrack>(
-        id, IsValidKindKeyword(kind) ? kind : g_empty_atom, label, language,
-        enabled);
-  }
-
   AudioTrack(const String& id,
              const AtomicString& kind,
              const AtomicString& label,
diff --git a/third_party/blink/renderer/core/html/track/audio_track_list.h b/third_party/blink/renderer/core/html/track/audio_track_list.h
index 44d62fee..9e831d4 100644
--- a/third_party/blink/renderer/core/html/track/audio_track_list.h
+++ b/third_party/blink/renderer/core/html/track/audio_track_list.h
@@ -14,8 +14,6 @@
   DEFINE_WRAPPERTYPEINFO();
 
  public:
-  static AudioTrackList* Create(HTMLMediaElement&);
-
   explicit AudioTrackList(HTMLMediaElement&);
   ~AudioTrackList() override;
 
diff --git a/third_party/blink/renderer/core/html/track/text_track_container.cc b/third_party/blink/renderer/core/html/track/text_track_container.cc
index 85f8ab9..872db89 100644
--- a/third_party/blink/renderer/core/html/track/text_track_container.cc
+++ b/third_party/blink/renderer/core/html/track/text_track_container.cc
@@ -69,22 +69,18 @@
 TextTrackContainer::TextTrackContainer(Document& document)
     : HTMLDivElement(document), default_font_size_(0) {}
 
+TextTrackContainer::TextTrackContainer(HTMLMediaElement& media_element)
+    : TextTrackContainer(media_element.GetDocument()) {
+  SetShadowPseudoId(AtomicString("-webkit-media-text-track-container"));
+  if (IsHTMLVideoElement(media_element))
+    ObserveSizeChanges(media_element);
+}
+
 void TextTrackContainer::Trace(Visitor* visitor) {
   visitor->Trace(video_size_observer_);
   HTMLDivElement::Trace(visitor);
 }
 
-TextTrackContainer* TextTrackContainer::Create(
-    HTMLMediaElement& media_element) {
-  TextTrackContainer* element =
-      MakeGarbageCollected<TextTrackContainer>(media_element.GetDocument());
-  element->SetShadowPseudoId(
-      AtomicString("-webkit-media-text-track-container"));
-  if (IsHTMLVideoElement(media_element))
-    element->ObserveSizeChanges(media_element);
-  return element;
-}
-
 LayoutObject* TextTrackContainer::CreateLayoutObject(const ComputedStyle&,
                                                      LegacyLayout) {
   // TODO(mstensho): Should use LayoutObjectFactory to create the right type of
diff --git a/third_party/blink/renderer/core/html/track/text_track_container.h b/third_party/blink/renderer/core/html/track/text_track_container.h
index 031549c..5735a05 100644
--- a/third_party/blink/renderer/core/html/track/text_track_container.h
+++ b/third_party/blink/renderer/core/html/track/text_track_container.h
@@ -39,9 +39,8 @@
 
 class TextTrackContainer final : public HTMLDivElement {
  public:
-  static TextTrackContainer* Create(HTMLMediaElement&);
-
   TextTrackContainer(Document&);
+  TextTrackContainer(HTMLMediaElement&);
 
   // Runs the "rules for updating the text track rendering". The
   // ExposingControls enum is used in the WebVTT processing model to reset the
diff --git a/third_party/blink/renderer/core/html/track/text_track_list_test.cc b/third_party/blink/renderer/core/html/track/text_track_list_test.cc
index e389d3b..cd4b260 100644
--- a/third_party/blink/renderer/core/html/track/text_track_list_test.cc
+++ b/third_party/blink/renderer/core/html/track/text_track_list_test.cc
@@ -8,13 +8,15 @@
 #include "third_party/blink/renderer/core/html/media/html_video_element.h"
 #include "third_party/blink/renderer/core/html/track/text_track.h"
 #include "third_party/blink/renderer/core/testing/dummy_page_holder.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 
 namespace blink {
 
 TEST(TextTrackListTest, InvalidateTrackIndexes) {
   // Create and fill the list
-  auto* list = MakeGarbageCollected<TextTrackList>(HTMLVideoElement::Create(
-      std::make_unique<DummyPageHolder>()->GetDocument()));
+  auto* list = MakeGarbageCollected<TextTrackList>(
+      MakeGarbageCollected<HTMLVideoElement>(
+          std::make_unique<DummyPageHolder>()->GetDocument()));
   const size_t kNumTextTracks = 4;
   TextTrack* text_tracks[kNumTextTracks];
   for (size_t i = 0; i < kNumTextTracks; ++i) {
diff --git a/third_party/blink/renderer/core/html/track/video_track.h b/third_party/blink/renderer/core/html/track/video_track.h
index 5af8076..8869e97 100644
--- a/third_party/blink/renderer/core/html/track/video_track.h
+++ b/third_party/blink/renderer/core/html/track/video_track.h
@@ -16,16 +16,6 @@
   USING_GARBAGE_COLLECTED_MIXIN(VideoTrack);
 
  public:
-  static VideoTrack* Create(const String& id,
-                            const AtomicString& kind,
-                            const AtomicString& label,
-                            const AtomicString& language,
-                            bool selected) {
-    return MakeGarbageCollected<VideoTrack>(
-        id, IsValidKindKeyword(kind) ? kind : g_empty_atom, label, language,
-        selected);
-  }
-
   VideoTrack(const String& id,
              const AtomicString& kind,
              const AtomicString& label,
diff --git a/third_party/blink/renderer/core/page/context_menu_controller_test.cc b/third_party/blink/renderer/core/page/context_menu_controller_test.cc
index 4090b43..49a2c8d 100644
--- a/third_party/blink/renderer/core/page/context_menu_controller_test.cc
+++ b/third_party/blink/renderer/core/page/context_menu_controller_test.cc
@@ -15,6 +15,7 @@
 #include "third_party/blink/renderer/core/html/media/html_video_element.h"
 #include "third_party/blink/renderer/core/input/context_menu_allowed_scope.h"
 #include "third_party/blink/renderer/core/page/context_menu_controller.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/testing/empty_web_media_player.h"
 #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
 
@@ -110,7 +111,8 @@
   GetDocument()->GetSettings()->SetPictureInPictureEnabled(true);
 
   // Setup video element.
-  Persistent<HTMLVideoElement> video = HTMLVideoElement::Create(*GetDocument());
+  Persistent<HTMLVideoElement> video =
+      MakeGarbageCollected<HTMLVideoElement>(*GetDocument());
   video->SetSrc(video_url);
   GetDocument()->body()->AppendChild(video);
   test::RunPendingTasks();
@@ -166,7 +168,8 @@
   GetDocument()->GetSettings()->SetPictureInPictureEnabled(true);
 
   // Setup video element.
-  Persistent<HTMLVideoElement> video = HTMLVideoElement::Create(*GetDocument());
+  Persistent<HTMLVideoElement> video =
+      MakeGarbageCollected<HTMLVideoElement>(*GetDocument());
   video->SetSrc(video_url);
   GetDocument()->body()->AppendChild(video);
   test::RunPendingTasks();
@@ -226,7 +229,8 @@
   const char video_url[] = "https://example.com/foo.webm";
 
   // Setup video element.
-  Persistent<HTMLVideoElement> video = HTMLVideoElement::Create(*GetDocument());
+  Persistent<HTMLVideoElement> video =
+      MakeGarbageCollected<HTMLVideoElement>(*GetDocument());
   video->SetSrc(video_url);
   GetDocument()->body()->AppendChild(video);
   test::RunPendingTasks();
@@ -282,7 +286,8 @@
   const char video_url[] = "https://example.com/foo.webm";
 
   // Setup video element.
-  Persistent<HTMLVideoElement> video = HTMLVideoElement::Create(*GetDocument());
+  Persistent<HTMLVideoElement> video =
+      MakeGarbageCollected<HTMLVideoElement>(*GetDocument());
   video->SetSrc(video_url);
   GetDocument()->body()->AppendChild(video);
   test::RunPendingTasks();
@@ -337,7 +342,8 @@
   HitTestResult hit_test_result;
 
   // Setup video element.
-  Persistent<HTMLVideoElement> video = HTMLVideoElement::Create(*GetDocument());
+  Persistent<HTMLVideoElement> video =
+      MakeGarbageCollected<HTMLVideoElement>(*GetDocument());
   blink::WebMediaStream web_media_stream;
   blink::WebVector<blink::WebMediaStreamTrack> dummy_tracks;
   web_media_stream.Initialize(dummy_tracks, dummy_tracks);
@@ -395,7 +401,8 @@
   const char video_url[] = "https://example.com/foo.webm";
 
   // Setup video element.
-  Persistent<HTMLVideoElement> video = HTMLVideoElement::Create(*GetDocument());
+  Persistent<HTMLVideoElement> video =
+      MakeGarbageCollected<HTMLVideoElement>(*GetDocument());
   video->SetSrc(video_url);
   GetDocument()->body()->AppendChild(video);
   test::RunPendingTasks();
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc
index fc203ad..b9fed8f 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_display_cutout_fullscreen_button_element_test.cc
@@ -13,6 +13,7 @@
 #include "third_party/blink/renderer/core/loader/empty_clients.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
 #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/runtime_enabled_features.h"
 #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
 #include "third_party/blink/renderer/platform/text/platform_locale.h"
@@ -52,7 +53,7 @@
 
     RuntimeEnabledFeatures::SetDisplayCutoutAPIEnabled(true);
 
-    video_ = HTMLVideoElement::Create(GetDocument());
+    video_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     GetDocument().body()->AppendChild(video_);
     controls_ = MakeGarbageCollected<MediaControlsImpl>(*video_);
     controls_->InitializeControls();
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element_test.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element_test.cc
index ed3ae84..20ae4a4 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_input_element_test.cc
@@ -12,6 +12,7 @@
 #include "third_party/blink/renderer/core/input_type_names.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
 #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/testing/histogram_tester.h"
 
 namespace blink {
@@ -55,7 +56,7 @@
   void SetUp() final {
     // Create page and add a video element with controls.
     PageTestBase::SetUp();
-    media_element_ = HTMLVideoElement::Create(GetDocument());
+    media_element_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     media_element_->SetBooleanAttribute(html_names::kControlsAttr, true);
     GetDocument().body()->AppendChild(media_element_);
 
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element_test.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element_test.cc
index 36dc379..c9d21b5 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_loading_panel_element_test.cc
@@ -15,6 +15,7 @@
 #include "third_party/blink/renderer/core/input_type_names.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
 #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 
 namespace blink {
 
@@ -23,7 +24,7 @@
   void SetUp() final {
     // Create page and add a video element with controls.
     PageTestBase::SetUp();
-    media_element_ = HTMLVideoElement::Create(GetDocument());
+    media_element_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     media_element_->SetBooleanAttribute(html_names::kControlsAttr, true);
     GetDocument().body()->AppendChild(media_element_);
 
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element_test.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element_test.cc
index 526b7ec..97f5c5c 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_panel_element_test.cc
@@ -21,7 +21,7 @@
   void SetUp() final {
     // Create page and add a video element with controls.
     PageTestBase::SetUp();
-    media_element_ = HTMLVideoElement::Create(GetDocument());
+    media_element_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     media_element_->SetBooleanAttribute(html_names::kControlsAttr, true);
     GetDocument().body()->AppendChild(media_element_);
 
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_scrubbing_message_element_test.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_scrubbing_message_element_test.cc
index b2a1718..448180c 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_scrubbing_message_element_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_scrubbing_message_element_test.cc
@@ -10,6 +10,7 @@
 #include "third_party/blink/renderer/core/html/media/html_video_element.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
 #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 
 namespace blink {
 
@@ -25,7 +26,7 @@
   void SetUp() final {
     // Create page and add a video element with controls.
     PageTestBase::SetUp();
-    media_element_ = HTMLVideoElement::Create(GetDocument());
+    media_element_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     media_element_->SetBooleanAttribute(html_names::kControlsAttr, true);
     GetDocument().body()->AppendChild(media_element_);
 
diff --git a/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element_test.cc b/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element_test.cc
index 9e1eb2d..5b3122d 100644
--- a/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/elements/media_control_timeline_element_test.cc
@@ -12,6 +12,7 @@
 #include "third_party/blink/renderer/core/html/media/html_video_element.h"
 #include "third_party/blink/renderer/core/testing/page_test_base.h"
 #include "third_party/blink/renderer/modules/media_controls/media_controls_impl.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 
 namespace blink {
 
@@ -31,7 +32,7 @@
   void SetUp() override {
     PageTestBase::SetUp(IntSize(100, 100));
 
-    video_ = HTMLVideoElement::Create(GetDocument());
+    video_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     controls_ = MakeGarbageCollected<MediaControlsImpl>(*video_);
     timeline_ = MakeGarbageCollected<MediaControlTimelineElement>(*controls_);
 
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_impl_test.cc b/third_party/blink/renderer/modules/media_controls/media_controls_impl_test.cc
index c1290fc..30ba888 100644
--- a/third_party/blink/renderer/modules/media_controls/media_controls_impl_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/media_controls_impl_test.cc
@@ -42,6 +42,7 @@
 #include "third_party/blink/renderer/modules/media_controls/elements/media_control_volume_slider_element.h"
 #include "third_party/blink/renderer/modules/remoteplayback/remote_playback.h"
 #include "third_party/blink/renderer/platform/heap/handle.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/testing/empty_web_media_player.h"
 #include "third_party/blink/renderer/platform/testing/histogram_tester.h"
 #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
@@ -1083,8 +1084,8 @@
        RemovingFromDocumentRemovesListenersAndCallbacks) {
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   page_holder->GetDocument().body()->AppendChild(element);
 
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
@@ -1115,8 +1116,8 @@
        ReInsertingInDocumentRestoresListenersAndCallbacks) {
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   page_holder->GetDocument().body()->AppendChild(element);
 
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_orientation_lock_delegate_test.cc b/third_party/blink/renderer/modules/media_controls/media_controls_orientation_lock_delegate_test.cc
index af928e1..bd5534ad 100644
--- a/third_party/blink/renderer/modules/media_controls/media_controls_orientation_lock_delegate_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/media_controls_orientation_lock_delegate_test.cc
@@ -304,7 +304,7 @@
 
     // Reset the <video> element now we've enabled the runtime feature.
     video_->parentElement()->RemoveChild(video_);
-    video_ = HTMLVideoElement::Create(GetDocument());
+    video_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     video_->setAttribute(html_names::kControlsAttr, g_empty_atom);
     // Most tests should call GetDocument().body()->AppendChild(&Video());
     // This is not done automatically, so that tests control timing of `Attach`,
@@ -434,7 +434,7 @@
   // Same with flag off.
   ScopedVideoFullscreenOrientationLockForTest video_fullscreen_orientation_lock(
       false);
-  HTMLVideoElement* video = HTMLVideoElement::Create(GetDocument());
+  auto* video = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
   GetDocument().body()->AppendChild(video);
   EXPECT_FALSE(HasDelegate(*video->GetMediaControls()));
 }
diff --git a/third_party/blink/renderer/modules/media_controls/media_controls_rotate_to_fullscreen_delegate_test.cc b/third_party/blink/renderer/modules/media_controls/media_controls_rotate_to_fullscreen_delegate_test.cc
index 677d266..0b438f9 100644
--- a/third_party/blink/renderer/modules/media_controls/media_controls_rotate_to_fullscreen_delegate_test.cc
+++ b/third_party/blink/renderer/modules/media_controls/media_controls_rotate_to_fullscreen_delegate_test.cc
@@ -108,7 +108,7 @@
 
     SetupPageWithClients(&clients,
                          MakeGarbageCollected<StubLocalFrameClient>());
-    video_ = HTMLVideoElement::Create(GetDocument());
+    video_ = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
     GetVideo().setAttribute(kControlsAttr, g_empty_atom);
     // Most tests should call GetDocument().body()->AppendChild(&GetVideo());
     // This is not done automatically, so that tests control timing of `Attach`.
@@ -245,7 +245,7 @@
 
   // No delegate when flag is off.
   ScopedVideoRotateToFullscreenForTest video_rotate_to_fullscreen(false);
-  HTMLVideoElement* video = HTMLVideoElement::Create(GetDocument());
+  auto* video = MakeGarbageCollected<HTMLVideoElement>(GetDocument());
   GetDocument().body()->AppendChild(video);
   EXPECT_FALSE(HasDelegate(*video->GetMediaControls()));
 }
diff --git a/third_party/blink/renderer/modules/mediasource/source_buffer.cc b/third_party/blink/renderer/modules/mediasource/source_buffer.cc
index 4d0e011..757e3fd 100644
--- a/third_party/blink/renderer/modules/mediasource/source_buffer.cc
+++ b/third_party/blink/renderer/modules/mediasource/source_buffer.cc
@@ -1014,8 +1014,8 @@
       const auto& kind = track_info.kind;
       // 5.2.7 TODO(servolk): Implement track kind processing.
       // 5.2.8.2 Let new audio track be a new AudioTrack object.
-      AudioTrack* audio_track =
-          AudioTrack::Create(track_info.id, kind, label, language, false);
+      auto* audio_track = MakeGarbageCollected<AudioTrack>(
+          track_info.id, kind, label, language, false);
       SourceBufferTrackBaseSupplement::SetSourceBuffer(*audio_track, this);
       // 5.2.8.7 If audioTracks.length equals 0, then run the following steps:
       if (audioTracks().length() == 0) {
diff --git a/third_party/blink/renderer/modules/remoteplayback/remote_playback_test.cc b/third_party/blink/renderer/modules/remoteplayback/remote_playback_test.cc
index 671b1f0..262bc11e 100644
--- a/third_party/blink/renderer/modules/remoteplayback/remote_playback_test.cc
+++ b/third_party/blink/renderer/modules/remoteplayback/remote_playback_test.cc
@@ -18,6 +18,7 @@
 #include "third_party/blink/renderer/modules/presentation/presentation_controller.h"
 #include "third_party/blink/renderer/modules/remoteplayback/html_media_element_remote_playback.h"
 #include "third_party/blink/renderer/platform/bindings/exception_state.h"
+#include "third_party/blink/renderer/platform/heap/heap.h"
 #include "third_party/blink/renderer/platform/testing/runtime_enabled_features_test_helpers.h"
 #include "third_party/blink/renderer/platform/testing/unit_test_helpers.h"
 
@@ -81,8 +82,8 @@
 
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
 
   auto* resolve = MockFunction::Create(scope.GetScriptState());
@@ -112,8 +113,8 @@
 
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
 
   auto* resolve = MockFunction::Create(scope.GetScriptState());
@@ -146,8 +147,8 @@
 
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
 
   auto* resolve = MockFunction::Create(scope.GetScriptState());
@@ -181,8 +182,8 @@
 
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
 
   auto* connecting_handler = MakeGarbageCollected<
@@ -226,8 +227,8 @@
 
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
 
   MockFunction* resolve = MockFunction::Create(scope.GetScriptState());
@@ -258,8 +259,8 @@
 
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
 
   MockFunction* callback_function =
@@ -300,8 +301,8 @@
 
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
 
   auto* resolve = MockFunction::Create(scope.GetScriptState());
@@ -331,8 +332,8 @@
 
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
 
   MockFunction* callback_function =
@@ -369,8 +370,8 @@
 
   auto page_holder = std::make_unique<DummyPageHolder>();
 
-  HTMLMediaElement* element =
-      HTMLVideoElement::Create(page_holder->GetDocument());
+  auto* element =
+      MakeGarbageCollected<HTMLVideoElement>(page_holder->GetDocument());
   RemotePlayback& remote_playback = RemotePlayback::From(*element);
 
   LocalFrame& frame = page_holder->GetFrame();