Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1064)

Unified Diff: content/browser/android/ime_adapter_android.cc

Issue 2792063003: Factor out RenderWidgetHostConnector (Closed)
Patch Set: format Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/browser/android/ime_adapter_android.cc
diff --git a/content/browser/android/ime_adapter_android.cc b/content/browser/android/ime_adapter_android.cc
index 695e53727c802388abe4594840a74010db712c56..4e0a08e74410494f6cd4e2fa1afed76aa1de4e24 100644
--- a/content/browser/android/ime_adapter_android.cc
+++ b/content/browser/android/ime_adapter_android.cc
@@ -14,12 +14,10 @@
#include "base/android/scoped_java_ref.h"
#include "base/strings/utf_string_conversions.h"
#include "base/time/time.h"
-#include "content/browser/frame_host/interstitial_page_impl.h"
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/browser/renderer_host/render_view_host_delegate.h"
#include "content/browser/renderer_host/render_widget_host_impl.h"
#include "content/browser/renderer_host/render_widget_host_view_android.h"
-#include "content/browser/web_contents/web_contents_impl.h"
#include "content/common/input_messages.h"
#include "content/common/view_messages.h"
#include "content/public/browser/browser_thread.h"
@@ -115,7 +113,7 @@ void AppendUnderlineSpan(JNIEnv*,
ImeAdapterAndroid::ImeAdapterAndroid(JNIEnv* env,
const JavaParamRef<jobject>& obj,
WebContents* web_contents)
- : WebContentsObserver(web_contents), rwhva_(nullptr) {
+ : RenderProcessConnector(web_contents) {
java_ime_adapter_ = JavaObjectWeakGlobalRef(env, obj);
}
@@ -124,68 +122,24 @@ ImeAdapterAndroid::~ImeAdapterAndroid() {
ScopedJavaLocalRef<jobject> obj = java_ime_adapter_.get(env);
if (!obj.is_null())
Java_ImeAdapter_destroy(env, obj);
-
- UpdateRenderProcessConnection(nullptr);
-}
-
-RenderWidgetHostViewAndroid* ImeAdapterAndroid::GetRenderWidgetHostViewAndroid()
- const {
- RenderWidgetHostView* rwhv = web_contents()->GetRenderWidgetHostView();
- WebContentsImpl* web_contents_impl =
- static_cast<WebContentsImpl*>(web_contents());
- if (web_contents_impl->ShowingInterstitialPage()) {
- rwhv = web_contents_impl->GetInterstitialPage()
- ->GetMainFrame()
- ->GetRenderViewHost()
- ->GetWidget()
- ->GetView();
- }
- return static_cast<RenderWidgetHostViewAndroid*>(rwhv);
+ UpdateRenderProcessConnection(rwhva(), nullptr);
boliu 2017/04/07 18:47:10 I think RenderProcessConnector can do this part as
Jinsuk Kim 2017/04/10 05:11:47 Good catch.. done.
}
void ImeAdapterAndroid::RenderViewReady() {
- UpdateRenderProcessConnection(GetRenderWidgetHostViewAndroid());
-
+ RenderProcessConnector::RenderViewReady();
boliu 2017/04/07 18:47:10 shouldn't this just be the first call of UpdateRen
Jinsuk Kim 2017/04/10 05:11:47 In the new patch it is not necessary to override |
JNIEnv* env = AttachCurrentThread();
ScopedJavaLocalRef<jobject> obj = java_ime_adapter_.get(env);
if (!obj.is_null())
Java_ImeAdapter_onConnectedToRenderProcess(env, obj);
}
-void ImeAdapterAndroid::RenderViewHostChanged(RenderViewHost* old_host,
- RenderViewHost* new_host) {
- if (new_host) {
- UpdateRenderProcessConnection(static_cast<RenderWidgetHostViewAndroid*>(
- new_host->GetWidget()->GetView()));
- } else {
- UpdateRenderProcessConnection(nullptr);
- }
-}
-
-void ImeAdapterAndroid::DidAttachInterstitialPage() {
- UpdateRenderProcessConnection(GetRenderWidgetHostViewAndroid());
-}
-
-void ImeAdapterAndroid::DidDetachInterstitialPage() {
- UpdateRenderProcessConnection(GetRenderWidgetHostViewAndroid());
-}
-
-void ImeAdapterAndroid::WebContentsDestroyed() {
- delete this;
-}
-
void ImeAdapterAndroid::UpdateRenderProcessConnection(
+ RenderWidgetHostViewAndroid* old_rwhva,
RenderWidgetHostViewAndroid* new_rwhva) {
- if (rwhva_.get() == new_rwhva)
- return;
- if (rwhva_)
- rwhva_->set_ime_adapter(nullptr);
- if (new_rwhva) {
+ if (old_rwhva)
+ old_rwhva->set_ime_adapter(nullptr);
+ if (new_rwhva)
new_rwhva->set_ime_adapter(this);
- rwhva_ = new_rwhva->GetWeakPtrAndroid();
- } else {
- rwhva_.reset();
- }
}
void ImeAdapterAndroid::UpdateState(const TextInputState& state) {
@@ -214,12 +168,12 @@ bool ImeAdapterAndroid::SendKeyEvent(
int scan_code,
bool is_system_key,
int unicode_char) {
- if (!rwhva_)
+ if (!rwhva())
return false;
NativeWebKeyboardEvent event = NativeWebKeyboardEventFromKeyEvent(
env, original_key_event, type, modifiers, time_ms, key_code, scan_code,
is_system_key, unicode_char);
- rwhva_->SendKeyEvent(event);
+ rwhva()->SendKeyEvent(event);
return true;
}
@@ -400,18 +354,18 @@ void ImeAdapterAndroid::RequestCursorUpdate(
RenderWidgetHostImpl* ImeAdapterAndroid::GetFocusedWidget() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
- return rwhva_ ? rwhva_->GetFocusedWidget() : nullptr;
+ return rwhva() ? rwhva()->GetFocusedWidget() : nullptr;
}
RenderFrameHost* ImeAdapterAndroid::GetFocusedFrame() {
DCHECK_CURRENTLY_ON(BrowserThread::UI);
// We get the focused frame from the WebContents of the page. Although
- // |rwhva_->GetFocusedWidget()| does a similar thing, there is no direct way
+ // |rwhva()->GetFocusedWidget()| does a similar thing, there is no direct way
// to get a RenderFrameHost from its RWH.
- if (!rwhva_)
+ if (!rwhva())
return nullptr;
RenderWidgetHostImpl* rwh =
- RenderWidgetHostImpl::From(rwhva_->GetRenderWidgetHost());
+ RenderWidgetHostImpl::From(rwhva()->GetRenderWidgetHost());
if (!rwh || !rwh->delegate())
return nullptr;

Powered by Google App Engine
This is Rietveld 408576698