Commit 2d6e89ea authored by Jinsuk Kim's avatar Jinsuk Kim Committed by Commit Bot

Android: WebContentsObserver.NavigationEntryChanged for Tab done right

WebContentsObserver.NavigationEntryChanged is required for Tab.
The plumbing was done not through WebContentsObserver->Proxy but
from Tab native to Java directly via native WCO. This CL does it
properly.

Bug: 925242
Change-Id: I59989f3257f9249a6a07fe57ee7b6a5a07fc920e
Reviewed-on: https://chromium-review.googlesource.com/c/1481177Reviewed-by: default avatarTed Choc <tedchoc@chromium.org>
Commit-Queue: Jinsuk Kim <jinsukkim@chromium.org>
Cr-Commit-Position: refs/heads/master@{#636211}
parent e5d411c8
......@@ -1956,15 +1956,6 @@ public class Tab
return activity != null && activity.isCustomTab();
}
/**
* Called when the navigation entry containing the history item changed,
* for example because of a scroll offset or form field change.
*/
@CalledByNative
private void onNavEntryChanged() {
mIsTabStateDirty = true;
}
/**
* Called when navigation entries were removed.
*/
......
......@@ -331,6 +331,11 @@ public class TabWebContentsObserver extends TabWebContentsUserData {
mTab.notifyNavigationEntriesDeleted();
}
@Override
public void navigationEntriesChanged() {
mTab.setIsTabStateDirty(true);
}
@Override
public void viewportFitChanged(@WebContentsObserver.ViewportFitType int value) {
DisplayCutoutController.from(mTab).setViewportFit(value);
......
......@@ -826,12 +826,6 @@ void TabAndroid::ClearThumbnailPlaceholder(JNIEnv* env,
tab_content_manager_->NativeRemoveTabThumbnail(GetAndroidId());
}
void TabAndroid::NavigationEntryChanged(
const content::EntryChangedDetails& change_details) {
JNIEnv* env = base::android::AttachCurrentThread();
Java_Tab_onNavEntryChanged(env, weak_java_tab_.get(env));
}
void TabAndroid::DidFinishNavigation(
content::NavigationHandle* navigation_handle) {
// Skip subframe, same-document, or non-committed navigations (downloads or
......
......@@ -251,8 +251,6 @@ class TabAndroid : public favicon::FaviconDriverObserver,
void AttachDetachedTab(JNIEnv* env,
const base::android::JavaParamRef<jobject>& obj);
void NavigationEntryChanged(
const content::EntryChangedDetails& change_details) override;
void DidFinishNavigation(
content::NavigationHandle* navigation_handle) override;
......
......@@ -187,6 +187,13 @@ void WebContentsObserverProxy::NavigationEntriesDeleted() {
Java_WebContentsObserverProxy_navigationEntriesDeleted(env, java_observer_);
}
void WebContentsObserverProxy::NavigationEntryChanged(
const EntryChangedDetails& change_details) {
JNIEnv* env = AttachCurrentThread();
// TODO(jinsukkim): Convert |change_details| to Java object when needed.
Java_WebContentsObserverProxy_navigationEntriesChanged(env, java_observer_);
}
void WebContentsObserverProxy::DidAttachInterstitialPage() {
JNIEnv* env = AttachCurrentThread();
Java_WebContentsObserverProxy_didAttachInterstitialPage(env, java_observer_);
......
......@@ -54,6 +54,8 @@ class WebContentsObserverProxy : public WebContentsObserver {
void NavigationEntryCommitted(
const LoadCommittedDetails& load_details) override;
void NavigationEntriesDeleted() override;
void NavigationEntryChanged(
const EntryChangedDetails& change_details) override;
void WebContentsDestroyed() override;
void DidAttachInterstitialPage() override;
void DidDetachInterstitialPage() override;
......
......@@ -195,6 +195,14 @@ class WebContentsObserverProxy extends WebContentsObserver {
}
}
@Override
@CalledByNative
public void navigationEntriesChanged() {
for (mObserversIterator.rewind(); mObserversIterator.hasNext();) {
mObserversIterator.next().navigationEntriesChanged();
}
}
@Override
@CalledByNative
public void didAttachInterstitialPage() {
......
......@@ -135,6 +135,11 @@ public abstract class WebContentsObserver {
*/
public void navigationEntriesDeleted() {}
/**
* Called when navigation entries were changed.
*/
public void navigationEntriesChanged() {}
/**
* Called when an interstitial page gets attached to the tab content.
*/
......
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