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