| Index: third_party/WebKit/Source/core/dom/Document.cpp | 
| diff --git a/third_party/WebKit/Source/core/dom/Document.cpp b/third_party/WebKit/Source/core/dom/Document.cpp | 
| index e59fd92e24388367e640533f8a3d9c6eeb3d1eb2..cbe816ef8f9bf02befee98a13de80c9615995fa0 100644 | 
| --- a/third_party/WebKit/Source/core/dom/Document.cpp | 
| +++ b/third_party/WebKit/Source/core/dom/Document.cpp | 
| @@ -80,6 +80,7 @@ | 
| #include "core/dom/ElementTraversal.h" | 
| #include "core/dom/ExceptionCode.h" | 
| #include "core/dom/ExecutionContextTask.h" | 
| +#include "core/dom/FormElementObserver.h" | 
| #include "core/dom/FrameRequestCallback.h" | 
| #include "core/dom/IntersectionObserverController.h" | 
| #include "core/dom/LayoutTreeBuilderTraversal.h" | 
| @@ -6740,6 +6741,7 @@ DEFINE_TRACE(Document) { | 
| visitor->Trace(resize_observer_controller_); | 
| visitor->Trace(property_registry_); | 
| visitor->Trace(network_state_observer_); | 
| +  visitor->Trace(form_element_observer_); | 
| Supplementable<Document>::Trace(visitor); | 
| TreeScope::Trace(visitor); | 
| ContainerNode::Trace(visitor); | 
| @@ -6763,6 +6765,12 @@ void Document::RecordDeferredLoadReason(WouldLoadReason reason) { | 
| would_load_reason_ = reason; | 
| } | 
|  | 
| +FormElementObserver* Document::GetFormElementObserver() { | 
| +  if (!form_element_observer_) | 
| +    form_element_observer_ = new FormElementObserver(*this); | 
| +  return form_element_observer_; | 
| +} | 
| + | 
| DEFINE_TRACE_WRAPPERS(Document) { | 
| // node_lists_ are traced in their corresponding NodeListsNodeData, keeping | 
| // them only alive for live nodes. Otherwise we would keep lists of dead | 
|  |