Commit 0c2012b6 authored by Miyoung Shin's avatar Miyoung Shin Committed by Commit Bot

Convert TextSuggestionHost client to use BrowserInterfaceBroker

This CL converts TextSuggestionHost mojom interface client in blink
to use BrowserInterfaceBroker. Since TextSuggestionHostAndroid life
cycle is managed by RenderWidgetHostConnector, this CL gets its
object from RenderWidgetHostViewAndroid to register its binder.

Bug: 936482
Change-Id: Iccce03e58d9b79ccc8a5f8c011b8ca58e9ed41ff
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1885866
Commit-Queue: Miyoung Shin <myid.shin@igalia.com>
Reviewed-by: default avatarOksana Zhuravlova <oksamyt@chromium.org>
Reviewed-by: default avatarJinsuk Kim <jinsukkim@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Cr-Commit-Position: refs/heads/master@{#711165}
parent 65bc021c
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
#include "components/spellcheck/common/spellcheck.mojom.h" #include "components/spellcheck/common/spellcheck.mojom.h"
#include "content/public/common/service_names.mojom.h" #include "content/public/common/service_names.mojom.h"
#include "services/service_manager/public/cpp/manifest_builder.h" #include "services/service_manager/public/cpp/manifest_builder.h"
#include "third_party/blink/public/mojom/input/input_host.mojom.h"
namespace android_webview { namespace android_webview {
...@@ -27,7 +26,7 @@ const service_manager::Manifest& GetAWContentBrowserOverlayManifest() { ...@@ -27,7 +26,7 @@ const service_manager::Manifest& GetAWContentBrowserOverlayManifest() {
service_manager::Manifest::InterfaceList< service_manager::Manifest::InterfaceList<
autofill::mojom::AutofillDriver, autofill::mojom::AutofillDriver,
autofill::mojom::PasswordManagerDriver, autofill::mojom::PasswordManagerDriver,
blink::mojom::TextSuggestionHost, mojom::JsToJavaMessaging>()) mojom::JsToJavaMessaging>())
.Build()}; .Build()};
return *manifest; return *manifest;
} }
......
...@@ -38,7 +38,6 @@ ...@@ -38,7 +38,6 @@
#include "services/preferences/public/cpp/manifest.h" #include "services/preferences/public/cpp/manifest.h"
#include "services/service_manager/public/cpp/manifest_builder.h" #include "services/service_manager/public/cpp/manifest_builder.h"
#include "third_party/blink/public/mojom/badging/badging.mojom.h" #include "third_party/blink/public/mojom/badging/badging.mojom.h"
#include "third_party/blink/public/mojom/input/input_host.mojom.h"
#include "third_party/blink/public/mojom/installedapp/installed_app_provider.mojom.h" #include "third_party/blink/public/mojom/installedapp/installed_app_provider.mojom.h"
#include "third_party/blink/public/mojom/webshare/webshare.mojom.h" #include "third_party/blink/public/mojom/webshare/webshare.mojom.h"
...@@ -150,7 +149,6 @@ const service_manager::Manifest& GetChromeContentBrowserOverlayManifest() { ...@@ -150,7 +149,6 @@ const service_manager::Manifest& GetChromeContentBrowserOverlayManifest() {
service_manager::Manifest::InterfaceList< service_manager::Manifest::InterfaceList<
autofill::mojom::AutofillDriver, autofill::mojom::AutofillDriver,
autofill::mojom::PasswordManagerDriver, autofill::mojom::PasswordManagerDriver,
blink::mojom::TextSuggestionHost,
chrome::mojom::OfflinePageAutoFetcher, chrome::mojom::OfflinePageAutoFetcher,
chrome::mojom::PrerenderCanceler, chrome::mojom::PrerenderCanceler,
#if defined(OS_CHROMEOS) #if defined(OS_CHROMEOS)
......
...@@ -47,10 +47,7 @@ TextSuggestionHostAndroid::TextSuggestionHostAndroid(JNIEnv* env, ...@@ -47,10 +47,7 @@ TextSuggestionHostAndroid::TextSuggestionHostAndroid(JNIEnv* env,
rwhva_(nullptr), rwhva_(nullptr),
suggestion_menu_timeout_(base::BindRepeating( suggestion_menu_timeout_(base::BindRepeating(
&TextSuggestionHostAndroid::OnSuggestionMenuTimeout, &TextSuggestionHostAndroid::OnSuggestionMenuTimeout,
base::Unretained(this))) { base::Unretained(this))) {}
registry_.AddInterface(base::BindRepeating(
&TextSuggestionHostMojoImplAndroid::Create, base::Unretained(this)));
}
TextSuggestionHostAndroid::~TextSuggestionHostAndroid() { TextSuggestionHostAndroid::~TextSuggestionHostAndroid() {
JNIEnv* env = AttachCurrentThread(); JNIEnv* env = AttachCurrentThread();
...@@ -228,13 +225,6 @@ void TextSuggestionHostAndroid::StopSuggestionMenuTimer() { ...@@ -228,13 +225,6 @@ void TextSuggestionHostAndroid::StopSuggestionMenuTimer() {
suggestion_menu_timeout_.Stop(); suggestion_menu_timeout_.Stop();
} }
void TextSuggestionHostAndroid::OnInterfaceRequestFromFrame(
content::RenderFrameHost* render_frame_host,
const std::string& interface_name,
mojo::ScopedMessagePipeHandle* interface_pipe) {
registry_.TryBindInterface(interface_name, interface_pipe);
}
RenderFrameHost* TextSuggestionHostAndroid::GetFocusedFrame() { RenderFrameHost* TextSuggestionHostAndroid::GetFocusedFrame() {
DCHECK_CURRENTLY_ON(BrowserThread::UI); DCHECK_CURRENTLY_ON(BrowserThread::UI);
// We get the focused frame from the WebContents of the page. Although // We get the focused frame from the WebContents of the page. Although
......
...@@ -8,7 +8,6 @@ ...@@ -8,7 +8,6 @@
#include "content/browser/android/render_widget_host_connector.h" #include "content/browser/android/render_widget_host_connector.h"
#include "content/browser/renderer_host/input/timeout_monitor.h" #include "content/browser/renderer_host/input/timeout_monitor.h"
#include "mojo/public/cpp/bindings/remote.h" #include "mojo/public/cpp/bindings/remote.h"
#include "services/service_manager/public/cpp/binder_registry.h"
#include "third_party/blink/public/mojom/input/input_host.mojom.h" #include "third_party/blink/public/mojom/input/input_host.mojom.h"
#include "third_party/blink/public/mojom/input/input_messages.mojom.h" #include "third_party/blink/public/mojom/input/input_messages.mojom.h"
...@@ -88,12 +87,6 @@ class TextSuggestionHostAndroid : public RenderWidgetHostConnector, ...@@ -88,12 +87,6 @@ class TextSuggestionHostAndroid : public RenderWidgetHostConnector,
// suggestion menu timer. // suggestion menu timer.
void StopSuggestionMenuTimer(); void StopSuggestionMenuTimer();
// WebContentsObserver overrides
void OnInterfaceRequestFromFrame(
content::RenderFrameHost* render_frame_host,
const std::string& interface_name,
mojo::ScopedMessagePipeHandle* interface_pipe) override;
private: private:
RenderFrameHost* GetFocusedFrame(); RenderFrameHost* GetFocusedFrame();
base::android::ScopedJavaLocalRef<jobject> GetJavaTextSuggestionHost(); base::android::ScopedJavaLocalRef<jobject> GetJavaTextSuggestionHost();
...@@ -104,7 +97,6 @@ class TextSuggestionHostAndroid : public RenderWidgetHostConnector, ...@@ -104,7 +97,6 @@ class TextSuggestionHostAndroid : public RenderWidgetHostConnector,
void OnSuggestionMenuTimeout(); void OnSuggestionMenuTimeout();
double DpToPxIfNeeded(double value); double DpToPxIfNeeded(double value);
service_manager::BinderRegistry registry_;
// Current RenderWidgetHostView connected to this instance. Can be null. // Current RenderWidgetHostView connected to this instance. Can be null.
RenderWidgetHostViewAndroid* rwhva_; RenderWidgetHostViewAndroid* rwhva_;
JavaObjectWeakGlobalRef java_text_suggestion_host_; JavaObjectWeakGlobalRef java_text_suggestion_host_;
......
...@@ -83,8 +83,11 @@ ...@@ -83,8 +83,11 @@
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
#include "content/browser/android/date_time_chooser_android.h" #include "content/browser/android/date_time_chooser_android.h"
#include "content/browser/android/text_suggestion_host_mojo_impl_android.h"
#include "content/browser/renderer_host/render_widget_host_view_android.h"
#include "services/device/public/mojom/nfc.mojom.h" #include "services/device/public/mojom/nfc.mojom.h"
#include "third_party/blink/public/mojom/hid/hid.mojom.h" #include "third_party/blink/public/mojom/hid/hid.mojom.h"
#include "third_party/blink/public/mojom/input/input_host.mojom.h"
#endif #endif
namespace content { namespace content {
...@@ -150,6 +153,15 @@ void BindDateTimeChooserForFrame( ...@@ -150,6 +153,15 @@ void BindDateTimeChooserForFrame(
WebContents::FromRenderFrameHost(host)); WebContents::FromRenderFrameHost(host));
date_time_chooser->OnDateTimeChooserReceiver(std::move(receiver)); date_time_chooser->OnDateTimeChooserReceiver(std::move(receiver));
} }
void BindTextSuggestionHostForFrame(
content::RenderFrameHost* host,
mojo::PendingReceiver<blink::mojom::TextSuggestionHost> receiver) {
auto* view = static_cast<RenderWidgetHostViewAndroid*>(host->GetView());
DCHECK(view);
TextSuggestionHostMojoImplAndroid::Create(view->text_suggestion_host(),
std::move(receiver));
}
#endif #endif
} // namespace } // namespace
...@@ -314,6 +326,8 @@ void PopulateBinderMapWithContext( ...@@ -314,6 +326,8 @@ void PopulateBinderMapWithContext(
#if defined(OS_ANDROID) #if defined(OS_ANDROID)
map->Add<blink::mojom::DateTimeChooser>( map->Add<blink::mojom::DateTimeChooser>(
base::BindRepeating(&BindDateTimeChooserForFrame)); base::BindRepeating(&BindDateTimeChooserForFrame));
map->Add<blink::mojom::TextSuggestionHost>(
base::BindRepeating(&BindTextSuggestionHostForFrame));
#endif // defined(OS_ANDROID) #endif // defined(OS_ANDROID)
GetContentClient()->browser()->RegisterBrowserInterfaceBindersForFrame(map); GetContentClient()->browser()->RegisterBrowserInterfaceBindersForFrame(map);
......
...@@ -278,6 +278,9 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid ...@@ -278,6 +278,9 @@ class CONTENT_EXPORT RenderWidgetHostViewAndroid
TextSuggestionHostAndroid* text_suggestion_host) { TextSuggestionHostAndroid* text_suggestion_host) {
text_suggestion_host_ = text_suggestion_host; text_suggestion_host_ = text_suggestion_host;
} }
TextSuggestionHostAndroid* text_suggestion_host() const {
return text_suggestion_host_;
}
void set_gesture_listener_manager(GestureListenerManager* manager) { void set_gesture_listener_manager(GestureListenerManager* manager) {
gesture_listener_manager_ = manager; gesture_listener_manager_ = manager;
} }
......
...@@ -206,7 +206,6 @@ const service_manager::Manifest& GetContentBrowserManifest() { ...@@ -206,7 +206,6 @@ const service_manager::Manifest& GetContentBrowserManifest() {
"blink.mojom.PrefetchURLLoaderService", "blink.mojom.PrefetchURLLoaderService",
"blink.mojom.QuotaDispatcherHost", "blink.mojom.QuotaDispatcherHost",
"blink.mojom.SharedWorkerConnector", "blink.mojom.SharedWorkerConnector",
"blink.mojom.TextSuggestionHost",
"blink.mojom.UnhandledTapNotifier", "blink.mojom.UnhandledTapNotifier",
"content.mojom.BrowserTarget", "content.mojom.BrowserTarget",
"content.mojom.InputInjector", "content.mojom.InputInjector",
......
...@@ -4,7 +4,7 @@ ...@@ -4,7 +4,7 @@
#include "third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.h" #include "third_party/blink/renderer/core/editing/suggestion/text_suggestion_controller.h"
#include "services/service_manager/public/cpp/interface_provider.h" #include "third_party/blink/public/common/browser_interface_broker_proxy.h"
#include "third_party/blink/renderer/core/clipboard/data_transfer_access_policy.h" #include "third_party/blink/renderer/core/clipboard/data_transfer_access_policy.h"
#include "third_party/blink/renderer/core/editing/editing_utilities.h" #include "third_party/blink/renderer/core/editing/editing_utilities.h"
#include "third_party/blink/renderer/core/editing/editor.h" #include "third_party/blink/renderer/core/editing/editor.h"
...@@ -234,7 +234,7 @@ void TextSuggestionController::HandlePotentialSuggestionTap( ...@@ -234,7 +234,7 @@ void TextSuggestionController::HandlePotentialSuggestionTap(
return; return;
if (!text_suggestion_host_) { if (!text_suggestion_host_) {
GetFrame().GetInterfaceProvider().GetInterface( GetFrame().GetBrowserInterfaceBroker().GetInterface(
text_suggestion_host_.BindNewPipeAndPassReceiver()); text_suggestion_host_.BindNewPipeAndPassReceiver());
} }
......
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