Commit f933c913 authored by Evan Stade's avatar Evan Stade Committed by Commit Bot

WebLayer: dismiss find in page on navigation.

Bug: 1038415
Change-Id: I799c77bb441d34c68cd425e34e841ecd2c167a1c
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2031711Reviewed-by: default avatarScott Violet <sky@chromium.org>
Commit-Queue: Evan Stade <estade@chromium.org>
Cr-Commit-Position: refs/heads/master@{#737852}
parent e1342100
......@@ -19,12 +19,10 @@ import org.chromium.weblayer_private.interfaces.StrictModeWorkaround;
@JNINamespace("weblayer")
public final class NavigationControllerImpl extends INavigationController.Stub {
private long mNativeNavigationController;
private TabImpl mTab;
private INavigationControllerClient mNavigationControllerClient;
public NavigationControllerImpl(TabImpl tab, INavigationControllerClient client) {
mNavigationControllerClient = client;
mTab = tab;
mNativeNavigationController =
NavigationControllerImplJni.get().getNavigationController(tab.getNativeTab());
NavigationControllerImplJni.get().setNavigationControllerImpl(
......
......@@ -21,9 +21,11 @@ import org.chromium.components.autofill.AutofillProviderImpl;
import org.chromium.components.find_in_page.FindInPageBridge;
import org.chromium.components.find_in_page.FindMatchRectsDetails;
import org.chromium.components.find_in_page.FindResultBar;
import org.chromium.content_public.browser.NavigationHandle;
import org.chromium.content_public.browser.SelectionPopupController;
import org.chromium.content_public.browser.ViewEventSink;
import org.chromium.content_public.browser.WebContents;
import org.chromium.content_public.browser.WebContentsObserver;
import org.chromium.ui.base.ViewAndroidDelegate;
import org.chromium.ui.base.WindowAndroid;
import org.chromium.weblayer_private.interfaces.IDownloadCallbackClient;
......@@ -47,6 +49,7 @@ public final class TabImpl extends ITab.Stub {
private ProfileImpl mProfile;
private WebContents mWebContents;
private WebContentsObserver mWebContentsObserver;
private TabCallbackProxy mTabCallbackProxy;
private NavigationControllerImpl mNavigationController;
private DownloadCallbackProxy mDownloadCallbackProxy;
......@@ -122,6 +125,16 @@ public final class TabImpl extends ITab.Stub {
};
mWebContents.initialize("", mViewAndroidDelegate, new InternalAccessDelegateImpl(),
windowAndroid, WebContents.createDefaultInternalsHolder());
mWebContentsObserver = new WebContentsObserver() {
@Override
public void didStartNavigation(NavigationHandle navigationHandle) {
if (navigationHandle.isInMainFrame() && !navigationHandle.isSameDocument()) {
hideFindInPageUiAndNotifyClient();
}
}
};
mWebContents.addObserver(mWebContentsObserver);
}
public ProfileImpl getProfile() {
......@@ -193,6 +206,7 @@ public final class TabImpl extends ITab.Stub {
mNativeTab, TabImpl.this, topControlsContainerViewHandle);
mWebContents.onShow();
}
/**
* Called when this TabImpl is no longer the active TabImpl.
*/
......@@ -339,6 +353,7 @@ public final class TabImpl extends ITab.Stub {
try {
if (mFindInPageCallbackClient != null) mFindInPageCallbackClient.onFindEnded();
mFindInPageCallbackClient = null;
} catch (RemoteException e) {
throw new AndroidRuntimeException(e);
}
......@@ -423,6 +438,7 @@ public final class TabImpl extends ITab.Stub {
hideFindInPageUiAndNotifyClient();
mFindInPageCallbackClient = null;
mNavigationController = null;
mWebContents.removeObserver(mWebContentsObserver);
TabImplJni.get().deleteTab(mNativeTab);
mNativeTab = 0;
}
......
......@@ -31,7 +31,6 @@ import org.chromium.weblayer.DownloadCallback;
import org.chromium.weblayer.ErrorPageCallback;
import org.chromium.weblayer.FindInPageCallback;
import org.chromium.weblayer.FullscreenCallback;
import org.chromium.weblayer.Navigation;
import org.chromium.weblayer.NavigationCallback;
import org.chromium.weblayer.NavigationController;
import org.chromium.weblayer.NewTabCallback;
......@@ -192,7 +191,6 @@ public class WebLayerShellActivity extends FragmentActivity {
@Override
public void onNewTab(Tab newTab, @NewTabType int type) {
setTabCallbacks(newTab, fragment);
mBrowser.getActiveTab().getFindInPageController().setFindInPageCallback(null);
mPreviousTabList.add(mBrowser.getActiveTab());
mBrowser.setActiveTab(newTab);
}
......@@ -239,11 +237,6 @@ public class WebLayerShellActivity extends FragmentActivity {
}
});
tab.getNavigationController().registerNavigationCallback(new NavigationCallback() {
@Override
public void onNavigationStarted(Navigation navigation) {
mBrowser.getActiveTab().getFindInPageController().setFindInPageCallback(null);
}
@Override
public void onLoadStateChanged(boolean isLoading, boolean toDifferentDocument) {
mLoadProgressBar.setVisibility(
......
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