Oilpan: turn EventHandlerRegistry::m_frameHost into a traced reference.

R=haraken
BUG=509911

Review URL: https://codereview.chromium.org/1280043002

git-svn-id: svn://svn.chromium.org/blink/trunk@200171 bbb929c8-8fbe-4397-9dbb-9b2b20218538
diff --git a/Source/core/frame/EventHandlerRegistry.cpp b/Source/core/frame/EventHandlerRegistry.cpp
index f04362b..8c30986 100644
--- a/Source/core/frame/EventHandlerRegistry.cpp
+++ b/Source/core/frame/EventHandlerRegistry.cpp
@@ -41,7 +41,7 @@
 } // namespace
 
 EventHandlerRegistry::EventHandlerRegistry(FrameHost& frameHost)
-    : m_frameHost(frameHost)
+    : m_frameHost(&frameHost)
 {
 }
 
@@ -196,7 +196,7 @@
 
 void EventHandlerRegistry::notifyHasHandlersChanged(EventHandlerClass handlerClass, bool hasActiveHandlers)
 {
-    ScrollingCoordinator* scrollingCoordinator = m_frameHost.page().scrollingCoordinator();
+    ScrollingCoordinator* scrollingCoordinator = m_frameHost->page().scrollingCoordinator();
 
     switch (handlerClass) {
     case ScrollEvent:
@@ -208,7 +208,7 @@
             scrollingCoordinator->updateHaveWheelEventHandlers();
         break;
     case TouchEvent:
-        m_frameHost.chromeClient().needTouchEvents(hasActiveHandlers);
+        m_frameHost->chromeClient().needTouchEvents(hasActiveHandlers);
         break;
 #if ENABLE(ASSERT)
     case EventsForTesting:
@@ -222,13 +222,14 @@
 
 void EventHandlerRegistry::notifyDidAddOrRemoveEventHandlerTarget(EventHandlerClass handlerClass)
 {
-    ScrollingCoordinator* scrollingCoordinator = m_frameHost.page().scrollingCoordinator();
+    ScrollingCoordinator* scrollingCoordinator = m_frameHost->page().scrollingCoordinator();
     if (scrollingCoordinator && handlerClass == TouchEvent)
         scrollingCoordinator->touchEventTargetRectsDidChange();
 }
 
 DEFINE_TRACE(EventHandlerRegistry)
 {
+    visitor->trace(m_frameHost);
     visitor->template registerWeakMembers<EventHandlerRegistry, &EventHandlerRegistry::clearWeakMembers>(this);
 }
 
@@ -289,13 +290,13 @@
             if (Node* node = eventTarget.key->toNode()) {
                 // See the comment for |documentDetached| if either of these assertions fails.
                 ASSERT(node->document().frameHost());
-                ASSERT(node->document().frameHost() == &m_frameHost);
+                ASSERT(node->document().frameHost() == m_frameHost);
             } else if (LocalDOMWindow* window = eventTarget.key->toDOMWindow()) {
                 // If any of these assertions fail, LocalDOMWindow failed to unregister its handlers
                 // properly.
                 ASSERT(window->frame());
                 ASSERT(window->frame()->host());
-                ASSERT(window->frame()->host() == &m_frameHost);
+                ASSERT(window->frame()->host() == m_frameHost);
             }
         }
     }
diff --git a/Source/core/frame/EventHandlerRegistry.h b/Source/core/frame/EventHandlerRegistry.h
index ae4f5c7..64e990d 100644
--- a/Source/core/frame/EventHandlerRegistry.h
+++ b/Source/core/frame/EventHandlerRegistry.h
@@ -98,7 +98,7 @@
 
     void checkConsistency() const;
 
-    FrameHost& m_frameHost;
+    RawPtrWillBeMember<FrameHost> m_frameHost;
     EventTargetSet m_targets[EventHandlerClassCount];
 };