[go: up one dir, main page]

Reset bindings in DidDetachFrameView

We're already doing cleanup in this function, and with this change
we do our other cleanup here, too.

(cherry picked from commit 07fc424a8cb44bc98d27e52dc460fc861b290d7e)

Bug: 970252
Change-Id: I44748e1bef4941219d447ce22228816bf79dd963
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1645129
Commit-Queue: Ian Vollick <vollick@chromium.org>
Reviewed-by: David Bokan <bokan@chromium.org>
Cr-Original-Commit-Position: refs/heads/master@{#666713}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1653230
Reviewed-by: Ian Vollick <vollick@chromium.org>
Cr-Commit-Position: refs/branch-heads/3809@{#229}
Cr-Branched-From: d82dec1a818f378c464ba307ddd9c92133eac355-refs/heads/master@{#665002}
diff --git a/third_party/blink/renderer/core/page/page.cc b/third_party/blink/renderer/core/page/page.cc
index bcab966..0f8ae209 100644
--- a/third_party/blink/renderer/core/page/page.cc
+++ b/third_party/blink/renderer/core/page/page.cc
@@ -307,8 +307,6 @@
   if (validation_message_client_)
     validation_message_client_->DocumentDetached(*document);
   hosts_using_features_.DocumentDetached(*document);
-  if (spatial_navigation_controller_ && document->GetFrame()->IsMainFrame())
-    spatial_navigation_controller_->ResetMojoBindings();
 }
 
 bool Page::OpenedByDOM() const {
diff --git a/third_party/blink/renderer/core/page/spatial_navigation_controller.cc b/third_party/blink/renderer/core/page/spatial_navigation_controller.cc
index e398bd1..02d9677a 100644
--- a/third_party/blink/renderer/core/page/spatial_navigation_controller.cc
+++ b/third_party/blink/renderer/core/page/spatial_navigation_controller.cc
@@ -213,6 +213,8 @@
   // etc.) then reset navigation.
   if (interest_element_ && !interest_element_->GetDocument().View())
     interest_element_ = nullptr;
+  // TODO(crbug.com/956209): should be checked via an integration test.
+  ResetMojoBindings();
 }
 
 void SpatialNavigationController::Trace(blink::Visitor* visitor) {
diff --git a/third_party/blink/renderer/core/page/spatial_navigation_controller.h b/third_party/blink/renderer/core/page/spatial_navigation_controller.h
index 05ee39d..12d6555 100644
--- a/third_party/blink/renderer/core/page/spatial_navigation_controller.h
+++ b/third_party/blink/renderer/core/page/spatial_navigation_controller.h
@@ -40,8 +40,6 @@
   void OnSpatialNavigationSettingChanged();
   void FocusedNodeChanged(Document*);
 
-  void ResetMojoBindings();
-
   void Trace(blink::Visitor*);
 
  private:
@@ -100,6 +98,7 @@
   bool UpdateHasDefaultVideoControls(Element* element);
 
   const mojom::blink::SpatialNavigationHostPtr& GetSpatialNavigationHost();
+  void ResetMojoBindings();
 
   // The currently indicated element or nullptr if no node is indicated by
   // spatial navigation.