0

Add missing params from NavigationParams to NavigationHandle

Adds the params that NavigationHandle is missing from NavigationParams
so that a followup CL can delete NavigationParams and migrate all
usage to NavigationHandle.

Bug: 1290507
Change-Id: I701f13ae0905b3816881f0d197b7b3926757a381
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3452608
Reviewed-by: Bo Liu <boliu@chromium.org>
Reviewed-by: Yaron Friedman <yfriedman@chromium.org>
Commit-Queue: Michael Thiessen <mthiesse@chromium.org>
Cr-Commit-Position: refs/heads/main@{#969722}
This commit is contained in:
Michael Thiessen
2022-02-11 00:19:08 +00:00
committed by Chromium LUCI CQ
parent 6c12a403d1
commit 9fca5b9a8a
9 changed files with 93 additions and 31 deletions
android_webview/javatests/src/org/chromium/android_webview/test
chrome
android
junit
src
browser
optimization_guide
android
java
src
org
chromium
chrome
javatests
src
org
chromium
chrome
browser
ui
android
toolbar
java
src
org
chromium
chrome
browser
toolbar
content
browser
public
android
java
src
org
chromium
content_public

@ -199,7 +199,8 @@ public class AwWebContentsObserverTest {
boolean isSameDocument, boolean isFragmentNavigation, boolean isRendererInitiated,
int transition) {
NavigationHandle navigation = new NavigationHandle(0 /* navigationHandleProxy */, gurl,
isInPrimaryMainFrame, isSameDocument, isRendererInitiated, null, null, transition);
null, isInPrimaryMainFrame, isSameDocument, isRendererInitiated, null, null,
transition, false, false, false, false, 0);
mWebContentsObserver.didStartNavigation(navigation);
navigation.didFinish(gurl, isErrorPage, true /* hasCommitted */, isFragmentNavigation,

@ -258,9 +258,11 @@ public class QualityEnforcerUnitTest {
when(mTab.getOriginalUrl()).thenReturn(url);
NavigationHandle navigation = new NavigationHandle(0 /* navigationHandleProxy */, url,
true /* isInPrimaryMainFrame */, false /* isSameDocument */,
null /* referrerUrl */, true /* isInPrimaryMainFrame */, false /* isSameDocument */,
false /* isRendererInitiated */, null /* initiatorOrigin */,
null /* impressionData */, 0 /* pageTransition */);
null /* impressionData */, 0 /* pageTransition */, false /* isPost */,
false /* hasUserGesture */, false /* isRedirect */, false /* isExternalProtocol */,
0 /* navigationId */);
navigation.didFinish(url, false /* isErrorPage */, true /* hasCommitted */,
false /* isFragmentNavigation */, false /* isDownload */,
false /* isValidSearchFormUrl */, 0 /* pageTransition */, errorCode,

@ -185,9 +185,11 @@ public class CurrentPageVerifierTest {
GURL gurl = createMockGurl(url);
when(mTab.getUrl()).thenReturn(gurl);
NavigationHandle navigation = new NavigationHandle(0 /* navigationHandleProxy */, gurl,
true /* isInPrimaryMainFrame */, false /* isSameDocument */,
null /* referrerUrl */, true /* isInPrimaryMainFrame */, false /* isSameDocument */,
false /* isRendererInitiated */, null /* initiatorOrigin */,
null /* impressionData */, 0 /* pageTransition */);
null /* impressionData */, 0 /* pageTransition */, false /* isPost */,
false /* hasUserGesture */, false /* isRedirect */, false /* isExternalProtocol */,
0 /* navigationId */);
for (CustomTabTabObserver tabObserver : mTabObserverCaptor.getAllValues()) {
tabObserver.onDidStartNavigation(mTab, navigation);
}

@ -125,8 +125,11 @@ public class MediaNotificationTestTabHolder {
when(gurlOrigin.getSpec()).thenAnswer(invocation -> url);
NavigationHandle navigation = new NavigationHandle(0 /* navigationHandleProxy */, gurl,
true /* isInPrimaryMainFrame */, isSameDocument, false /* isRendererInitiated */,
null /* initiatorOrigin */, null /* impressionData */, 0 /* pageTransition */);
null /* referrerUrl */, true /* isInPrimaryMainFrame */, isSameDocument,
false /* isRendererInitiated */, null /* initiatorOrigin */,
null /* impressionData */, 0 /* pageTransition */, false /* isPost */,
false /* hasUserGesture */, false /* isRedirect */, false /* isExternalProtocol */,
0 /* navigationId */);
mMediaSessionTabHelper.mMediaSessionHelper.mWebContentsObserver.didStartNavigation(
navigation);

@ -64,8 +64,8 @@ public class OptimizationGuideBridgeNativeUnitTest {
public void testCanApplyOptimizationAsyncHasHint() {
OptimizationGuideBridge bridge = new OptimizationGuideBridge();
NavigationHandle navHandle =
new NavigationHandle(0, new GURL(TEST_URL), true, false, false, null, null, 0);
NavigationHandle navHandle = new NavigationHandle(0, new GURL(TEST_URL), null, true, false,
false, null, null, 0, false, false, false, false, 0);
OptimizationGuideCallback callback = new OptimizationGuideCallback();
bridge.canApplyOptimizationAsync(navHandle, OptimizationType.PERFORMANCE_HINTS, callback);

@ -131,8 +131,8 @@ public class OptimizationGuideBridgeUnitTest {
public void testCanApplyOptimizationAsync_withoutNativeBridge() {
GURL gurl = new GURL(TEST_URL);
OptimizationGuideBridge bridge = new OptimizationGuideBridge(0);
NavigationHandle navHandle =
new NavigationHandle(0, new GURL(TEST_URL), true, false, false, null, null, 0);
NavigationHandle navHandle = new NavigationHandle(0, new GURL(TEST_URL), null, true, false,
false, null, null, 0, false, false, false, false, 0);
bridge.canApplyOptimizationAsync(
navHandle, OptimizationType.PERFORMANCE_HINTS, mCallbackMock);
@ -151,8 +151,8 @@ public class OptimizationGuideBridgeUnitTest {
public void testCanApplyOptimizationAsync() {
GURL gurl = new GURL(TEST_URL);
OptimizationGuideBridge bridge = new OptimizationGuideBridge(1);
NavigationHandle navHandle =
new NavigationHandle(0, gurl, true, false, false, null, null, 0);
NavigationHandle navHandle = new NavigationHandle(
0, gurl, null, true, false, false, null, null, 0, false, false, false, false, 0);
bridge.canApplyOptimizationAsync(
navHandle, OptimizationType.PERFORMANCE_HINTS, mCallbackMock);

@ -82,8 +82,8 @@ public class LoadProgressMediatorTest {
assertEquals(mModel.get(LoadProgressProperties.COMPLETION_STATE),
CompletionState.FINISHED_DONT_ANIMATE);
NavigationHandle navigation =
new NavigationHandle(0, URL_1, true, false, false, null, null, 0);
NavigationHandle navigation = new NavigationHandle(
0, URL_1, null, true, false, false, null, null, 0, false, false, false, false, 0);
mTabObserver.onDidStartNavigation(mTab, navigation);
assertEquals(
mModel.get(LoadProgressProperties.COMPLETION_STATE), CompletionState.UNFINISHED);
@ -119,8 +119,8 @@ public class LoadProgressMediatorTest {
@UiThreadTest
public void switchToLoadedTab() {
initMediator();
NavigationHandle navigation =
new NavigationHandle(0, URL_1, true, false, false, null, null, 0);
NavigationHandle navigation = new NavigationHandle(
0, URL_1, null, true, false, false, null, null, 0, false, false, false, false, 0);
mTabObserver.onDidStartNavigation(mTab, navigation);
assertEquals(
mModel.get(LoadProgressProperties.COMPLETION_STATE), CompletionState.UNFINISHED);
@ -139,14 +139,15 @@ public class LoadProgressMediatorTest {
public void loadNativePage() {
initMediator();
doReturn(0.1f).when(mTab).getProgress();
NavigationHandle navigation =
new NavigationHandle(0, URL_1, true, false, false, null, null, 0);
NavigationHandle navigation = new NavigationHandle(
0, URL_1, null, true, false, false, null, null, 0, false, false, false, false, 0);
mTabObserver.onDidStartNavigation(mTab, navigation);
assertEquals(
mModel.get(LoadProgressProperties.COMPLETION_STATE), CompletionState.UNFINISHED);
assertEquals(mModel.get(LoadProgressProperties.PROGRESS), 0.1f, MathUtils.EPSILON);
navigation = new NavigationHandle(0, NATIVE_PAGE_URL, true, false, false, null, null, 0);
navigation = new NavigationHandle(0, NATIVE_PAGE_URL, null, true, false, false, null, null,
0, false, false, false, false, 0);
mTabObserver.onDidStartNavigation(mTab, navigation);
assertEquals(mModel.get(LoadProgressProperties.COMPLETION_STATE),
CompletionState.FINISHED_DONT_ANIMATE);
@ -157,8 +158,8 @@ public class LoadProgressMediatorTest {
@UiThreadTest
public void switchToTabWithNativePage() {
initMediator();
NavigationHandle navigation =
new NavigationHandle(0, URL_1, true, false, false, null, null, 0);
NavigationHandle navigation = new NavigationHandle(
0, URL_1, null, true, false, false, null, null, 0, false, false, false, false, 0);
mTabObserver.onDidStartNavigation(mTab, navigation);
assertEquals(
mModel.get(LoadProgressProperties.COMPLETION_STATE), CompletionState.UNFINISHED);
@ -179,8 +180,8 @@ public class LoadProgressMediatorTest {
@UiThreadTest
public void pageCrashes() {
initMediator();
NavigationHandle navigation =
new NavigationHandle(0, URL_1, true, false, false, null, null, 0);
NavigationHandle navigation = new NavigationHandle(
0, URL_1, null, true, false, false, null, null, 0, false, false, false, false, 0);
mTabObserver.onDidStartNavigation(mTab, navigation);
assertEquals(
mModel.get(LoadProgressProperties.COMPLETION_STATE), CompletionState.UNFINISHED);
@ -228,15 +229,15 @@ public class LoadProgressMediatorTest {
assertEquals(mModel.get(LoadProgressProperties.COMPLETION_STATE),
CompletionState.FINISHED_DONT_ANIMATE);
NavigationHandle navigation =
new NavigationHandle(0, gurl, true, false, false, null, null, 0);
NavigationHandle navigation = new NavigationHandle(
0, gurl, null, true, false, false, null, null, 0, false, false, false, false, 0);
mTabObserver.onDidStartNavigation(mTab, navigation);
mTabObserver.onLoadProgressChanged(mTab, 1.0f);
assertEquals(mModel.get(LoadProgressProperties.PROGRESS), 1.0f, MathUtils.EPSILON);
assertEquals(mModel.get(LoadProgressProperties.COMPLETION_STATE),
CompletionState.FINISHED_DO_ANIMATE);
NavigationHandle sameDocNav =
new NavigationHandle(0, gurl, true, true, false, null, null, 0);
NavigationHandle sameDocNav = new NavigationHandle(
0, gurl, null, true, true, false, null, null, 0, false, false, false, false, 0);
mTabObserver.onDidStartNavigation(mTab, sameDocNav);
assertEquals(mModel.get(LoadProgressProperties.PROGRESS), 1.0f, MathUtils.EPSILON);

@ -43,13 +43,20 @@ NavigationHandleProxy::NavigationHandleProxy(
java_navigation_handle_ = Java_NavigationHandle_Constructor(
env, reinterpret_cast<jlong>(this),
url::GURLAndroid::FromNativeGURL(env, cpp_navigation_handle_->GetURL()),
url::GURLAndroid::FromNativeGURL(
env, cpp_navigation_handle_->GetReferrer().url),
cpp_navigation_handle_->IsInPrimaryMainFrame(),
cpp_navigation_handle_->IsSameDocument(),
cpp_navigation_handle_->IsRendererInitiated(),
cpp_navigation_handle_->GetInitiatorOrigin()
? cpp_navigation_handle_->GetInitiatorOrigin()->CreateJavaObject()
: nullptr,
impression_byte_buffer, cpp_navigation_handle_->GetPageTransition());
impression_byte_buffer, cpp_navigation_handle_->GetPageTransition(),
cpp_navigation_handle_->IsPost(),
cpp_navigation_handle_->HasUserGesture(),
cpp_navigation_handle_->WasServerRedirect(),
cpp_navigation_handle_->IsExternalProtocol(),
cpp_navigation_handle_->GetNavigationId());
}
void NavigationHandleProxy::DidRedirect() {

@ -28,6 +28,7 @@ public class NavigationHandle {
private final boolean mIsSameDocument;
private @PageTransition int mPageTransition;
private GURL mUrl;
private GURL mReferrerUrl;
private boolean mHasCommitted;
private boolean mIsDownload;
private boolean mIsErrorPage;
@ -37,19 +38,32 @@ public class NavigationHandle {
private int mHttpStatusCode;
private final Origin mInitiatorOrigin;
private final Impression mImpression;
private final boolean mIsPost;
private final boolean mHasUserGesture;
private final boolean mIsRedirect;
private final boolean mIsExternalProtocol;
private final long mNavigationId;
@CalledByNative
public NavigationHandle(long nativeNavigationHandleProxy, GURL url,
public NavigationHandle(long nativeNavigationHandleProxy, GURL url, GURL referrerUrl,
boolean isInPrimaryMainFrame, boolean isSameDocument, boolean isRendererInitiated,
Origin initiatorOrigin, ByteBuffer impressionData, @PageTransition int transition) {
Origin initiatorOrigin, ByteBuffer impressionData, @PageTransition int transition,
boolean isPost, boolean hasUserGesture, boolean isRedirect, boolean isExternalProtocol,
long navigationId) {
mNativeNavigationHandleProxy = nativeNavigationHandleProxy;
mUrl = url;
mReferrerUrl = referrerUrl;
mIsInPrimaryMainFrame = isInPrimaryMainFrame;
mIsSameDocument = isSameDocument;
mIsRendererInitiated = isRendererInitiated;
mInitiatorOrigin = initiatorOrigin;
mImpression = impressionData != null ? Impression.deserialize(impressionData) : null;
mPageTransition = transition;
mIsPost = isPost;
mHasUserGesture = hasUserGesture;
mIsRedirect = isRedirect;
mIsExternalProtocol = isExternalProtocol;
mNavigationId = navigationId;
}
/**
@ -99,6 +113,11 @@ public class NavigationHandle {
return mUrl;
}
/** The referrer URL for the navigation. */
public GURL getReferrerUrl() {
return mReferrerUrl;
}
/**
* Whether the navigation is taking place in the main frame of the primary
* frame tree. With MPArch (crbug.com/1164280), a WebContents may have
@ -242,6 +261,33 @@ public class NavigationHandle {
return mImpression;
}
/** True if the the navigation method is "POST". */
public boolean isPost() {
return mIsPost;
}
/** True if the navigation was initiated by the user. */
public boolean hasUserGesture() {
return mHasUserGesture;
}
/** Is the navigation a redirect (in which case URL is the "target" address). */
public boolean isRedirect() {
return mIsRedirect;
}
/** True if the target URL can't be handled by Chrome's internal protocol handlers. */
public boolean isExternalProtocol() {
return mIsExternalProtocol;
}
/**
* Get a unique ID for this navigation.
*/
public long getNavigationId() {
return mNavigationId;
}
@NativeMethods
interface Natives {
void setRequestHeader(