Commit f30eedb4 authored by Minoru Chikamune's avatar Minoru Chikamune Committed by Commit Bot

Migrate SpatialNavigationController to use GC mojo wrappers.

No behavior change. This CL reduces potential risks of use-after-free bugs.

Bug: 1049056
Change-Id: I4f034c6f54893086074b200deb6c656d52b570e3
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2147521Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarKouhei Ueno <kouhei@chromium.org>
Commit-Queue: Minoru Chikamune <chikamune@chromium.org>
Cr-Commit-Position: refs/heads/master@{#758780}
parent 3a03bb2d
......@@ -15,6 +15,7 @@
#include "third_party/blink/renderer/core/editing/frame_selection.h"
#include "third_party/blink/renderer/core/events/keyboard_event.h"
#include "third_party/blink/renderer/core/events/web_input_event_conversion.h"
#include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/core/frame/local_frame.h"
#include "third_party/blink/renderer/core/frame/settings.h"
#include "third_party/blink/renderer/core/frame/visual_viewport.h"
......@@ -162,7 +163,11 @@ bool IsInAccessibilityMode(Page* page) {
SpatialNavigationController::SpatialNavigationController(Page& page)
: page_(&page),
spatial_navigation_state_(mojom::blink::SpatialNavigationState::New()) {
spatial_navigation_state_(mojom::blink::SpatialNavigationState::New()),
spatial_navigation_host_(
DynamicTo<LocalFrame>(page.MainFrame())
? DynamicTo<LocalFrame>(page.MainFrame())->DomWindow()
: nullptr) {
DCHECK(page_->GetSettings().GetSpatialNavigationEnabled());
}
......@@ -300,6 +305,7 @@ void SpatialNavigationController::DidDetachFrameView(
void SpatialNavigationController::Trace(Visitor* visitor) {
visitor->Trace(interest_element_);
visitor->Trace(page_);
visitor->Trace(spatial_navigation_host_);
}
bool SpatialNavigationController::Advance(
......@@ -693,7 +699,8 @@ bool SpatialNavigationController::UpdateHasDefaultVideoControls(
return true;
}
const mojo::Remote<mojom::blink::SpatialNavigationHost>&
const HeapMojoRemote<mojom::blink::SpatialNavigationHost,
HeapMojoWrapperMode::kWithoutContextObserver>&
SpatialNavigationController::GetSpatialNavigationHost() {
if (!spatial_navigation_host_.is_bound()) {
LocalFrame* frame = DynamicTo<LocalFrame>(page_->MainFrame());
......
......@@ -5,11 +5,12 @@
#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_PAGE_SPATIAL_NAVIGATION_CONTROLLER_H_
#define THIRD_PARTY_BLINK_RENDERER_CORE_PAGE_SPATIAL_NAVIGATION_CONTROLLER_H_
#include "mojo/public/cpp/bindings/remote.h"
#include "third_party/blink/public/mojom/page/spatial_navigation.mojom-blink.h"
#include "third_party/blink/renderer/core/core_export.h"
#include "third_party/blink/renderer/core/page/spatial_navigation.h"
#include "third_party/blink/renderer/platform/heap/handle.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_remote.h"
#include "third_party/blink/renderer/platform/mojo/heap_mojo_wrapper_mode.h"
namespace blink {
......@@ -106,7 +107,8 @@ class CORE_EXPORT SpatialNavigationController final
bool UpdateIsFormFocused(Element* element);
bool UpdateHasDefaultVideoControls(Element* element);
const mojo::Remote<mojom::blink::SpatialNavigationHost>&
const HeapMojoRemote<mojom::blink::SpatialNavigationHost,
HeapMojoWrapperMode::kWithoutContextObserver>&
GetSpatialNavigationHost();
void ResetMojoBindings();
......@@ -121,7 +123,9 @@ class CORE_EXPORT SpatialNavigationController final
bool enter_key_press_seen_ = false;
mojom::blink::SpatialNavigationStatePtr spatial_navigation_state_;
mojo::Remote<mojom::blink::SpatialNavigationHost> spatial_navigation_host_;
HeapMojoRemote<mojom::blink::SpatialNavigationHost,
HeapMojoWrapperMode::kWithoutContextObserver>
spatial_navigation_host_;
};
} // namespace blink
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment