Commit 44c2d10b authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: |areRendererInputEventsIgnored| from Tab to RenderFrameHost

The API can be better in RenderFrameHost which actually can handle
the request. This CL moves the API and updates its single call site.

Bug: 925242, 995903
Change-Id: I7bf5df33371c0588261d80e17ea488b4cb471a9c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1831658Reviewed-by: default avatarTheresa  <twellington@chromium.org>
Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#701851}
parent e4f4c058
......@@ -355,7 +355,7 @@ public class TabModalPresenter
if (isShowing) mActiveTab.exitFullscreenMode();
// Also need to update browser control state after dismissal to refresh the constraints.
if (isShowing && mActiveTab.areRendererInputEventsIgnored()) {
if (isShowing && areRendererInputEventsIgnored()) {
mChromeFullscreenManager.showAndroidControls(true);
} else {
TabBrowserControlsState.update(mActiveTab, BrowserControlsState.SHOWN,
......@@ -363,6 +363,10 @@ public class TabModalPresenter
}
}
private boolean areRendererInputEventsIgnored() {
return mActiveTab.getWebContents().getMainFrame().areInputEventsIgnored();
}
/**
* Helper method to run fade-in animation when the specified dialog view is shown.
* @param dialogView The dialog view to be shown.
......
......@@ -1876,14 +1876,6 @@ public class Tab {
return mIsRendererUnresponsive;
}
/**
* @return Whether input events from the renderer are ignored on the browser side.
*/
public boolean areRendererInputEventsIgnored() {
assert mNativeTabAndroid != 0;
return TabJni.get().areRendererInputEventsIgnored(mNativeTabAndroid, Tab.this);
}
@NativeMethods
interface Natives {
void init(Tab caller);
......@@ -1908,6 +1900,5 @@ public class Tab {
void createHistoricalTab(long nativeTabAndroid, Tab caller);
void loadOriginalImage(long nativeTabAndroid, Tab caller);
void attachDetachedTab(long nativeTabAndroid, Tab caller);
boolean areRendererInputEventsIgnored(long nativeTabAndroid, Tab caller);
}
}
......@@ -479,14 +479,6 @@ void TabAndroid::AttachDetachedTab(
}
}
bool TabAndroid::AreRendererInputEventsIgnored(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj) {
content::RenderProcessHost* render_process_host =
web_contents()->GetMainFrame()->GetProcess();
return render_process_host->IsBlocked();
}
scoped_refptr<content::DevToolsAgentHost> TabAndroid::GetDevToolsAgentHost() {
return devtools_host_;
}
......
......@@ -181,11 +181,6 @@ class TabAndroid {
void AttachDetachedTab(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
bool AreRendererInputEventsIgnored(
JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
private:
JavaObjectWeakGlobalRef weak_java_tab_;
......
......@@ -15,6 +15,7 @@
#include "content/browser/frame_host/render_frame_host_impl.h"
#include "content/public/android/content_jni_headers/RenderFrameHostImpl_jni.h"
#include "content/public/browser/browser_context.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/site_instance.h"
#include "url/origin.h"
......@@ -114,4 +115,10 @@ jboolean RenderFrameHostAndroid::IsRenderFrameCreated(
return render_frame_host_->IsRenderFrameCreated();
}
jboolean RenderFrameHostAndroid::IsProcessBlocked(
JNIEnv* env,
const base::android::JavaParamRef<jobject>&) const {
return render_frame_host_->GetProcess()->IsBlocked();
}
} // namespace content
......@@ -60,6 +60,9 @@ class RenderFrameHostAndroid : public base::SupportsUserData::Data {
JNIEnv* env,
const base::android::JavaParamRef<jobject>&) const;
jboolean IsProcessBlocked(JNIEnv* env,
const base::android::JavaParamRef<jobject>&) const;
RenderFrameHostImpl* render_frame_host() const { return render_frame_host_; }
private:
......
......@@ -126,6 +126,13 @@ public class RenderFrameHostImpl implements RenderFrameHost {
mNativeRenderFrameHostAndroid, RenderFrameHostImpl.this);
}
@Override
public boolean areInputEventsIgnored() {
if (mNativeRenderFrameHostAndroid == 0) return false;
return RenderFrameHostImplJni.get().isProcessBlocked(
mNativeRenderFrameHostAndroid, RenderFrameHostImpl.this);
}
@NativeMethods
interface Natives {
String getLastCommittedURL(long nativeRenderFrameHostAndroid, RenderFrameHostImpl caller);
......@@ -137,5 +144,6 @@ public class RenderFrameHostImpl implements RenderFrameHost {
long nativeRenderFrameHostAndroid, RenderFrameHostImpl caller);
void notifyUserActivation(long nativeRenderFrameHostAndroid, RenderFrameHostImpl caller);
boolean isRenderFrameCreated(long nativeRenderFrameHostAndroid, RenderFrameHostImpl caller);
boolean isProcessBlocked(long nativeRenderFrameHostAndroid, RenderFrameHostImpl caller);
}
}
......@@ -62,4 +62,9 @@ public interface RenderFrameHost {
* @return {@code true} if render frame is created.
*/
boolean isRenderFrameCreated();
/**
* @return Whether input events from the renderer are ignored on the browser side.
*/
boolean areInputEventsIgnored();
}
......@@ -43,4 +43,9 @@ public class MockRenderFrameHost implements RenderFrameHost {
public boolean isRenderFrameCreated() {
return false;
}
@Override
public boolean areInputEventsIgnored() {
return false;
}
}
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