| Index: chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationParams.java | 
| diff --git a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationParams.java b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationParams.java | 
| index 16aa3eee1b92b89753f6b8a119ec97c844793dfd..eadb29947d30115bc612afd979fe9e8b7b0ee4d5 100644 | 
| --- a/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationParams.java | 
| +++ b/chrome/android/java/src/org/chromium/chrome/browser/externalnav/ExternalNavigationParams.java | 
| @@ -43,6 +43,9 @@ public class ExternalNavigationParams { | 
| /** Whether this navigation happens in main frame. */ | 
| private final boolean mIsMainFrame; | 
|  | 
| +    /** Whether this navigation is launched by user gesture. */ | 
| +    private final boolean mHasUserGesture; | 
| + | 
| /** | 
| * Whether the current tab should be closed when an URL load was overridden and an | 
| * intent launched. | 
| @@ -51,8 +54,8 @@ public class ExternalNavigationParams { | 
|  | 
| private ExternalNavigationParams(String url, boolean isIncognito, String referrerUrl, | 
| int pageTransition, boolean isRedirect, boolean appMustBeInForeground, | 
| -            TabRedirectHandler redirectHandler, Tab tab, | 
| -            boolean openInNewTab, boolean isBackgroundTabNavigation, boolean isMainFrame, | 
| +            TabRedirectHandler redirectHandler, Tab tab, boolean openInNewTab, | 
| +            boolean isBackgroundTabNavigation, boolean isMainFrame, boolean hasUserGesture, | 
| boolean shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent) { | 
| mUrl = url; | 
| mIsIncognito = isIncognito; | 
| @@ -65,6 +68,7 @@ public class ExternalNavigationParams { | 
| mOpenInNewTab = openInNewTab; | 
| mIsBackgroundTabNavigation = isBackgroundTabNavigation; | 
| mIsMainFrame = isMainFrame; | 
| +        mHasUserGesture = hasUserGesture; | 
| mShouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent = | 
| shouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent; | 
| } | 
| @@ -127,6 +131,11 @@ public class ExternalNavigationParams { | 
| return mIsMainFrame; | 
| } | 
|  | 
| +    /** @return Whether this navigation is launched by user gesture. */ | 
| +    public boolean hasUserGesture() { | 
| +        return mHasUserGesture; | 
| +    } | 
| + | 
| /** | 
| * @return Whether the current tab should be closed when an URL load was overridden and an | 
| *         intent launched. | 
| @@ -169,6 +178,9 @@ public class ExternalNavigationParams { | 
| /** Whether this navigation happens in main frame. */ | 
| private boolean mIsMainFrame; | 
|  | 
| +        /** Whether this navigation is launched by user gesture. */ | 
| +        private boolean mHasUserGesture; | 
| + | 
| /** | 
| * Whether the current tab should be closed when an URL load was overridden and an | 
| * intent launched. | 
| @@ -225,6 +237,12 @@ public class ExternalNavigationParams { | 
| return this; | 
| } | 
|  | 
| +        /** Sets whether this navigation happens in main frame. */ | 
| +        public Builder setHasUserGesture(boolean v) { | 
| +            mHasUserGesture = v; | 
| +            return this; | 
| +        } | 
| + | 
| /** Sets whether the current tab should be closed when an URL load was overridden and an | 
| * intent launched. | 
| */ | 
| @@ -237,8 +255,8 @@ public class ExternalNavigationParams { | 
| public ExternalNavigationParams build() { | 
| return new ExternalNavigationParams(mUrl, mIsIncognito, mReferrerUrl, mPageTransition, | 
| mIsRedirect, mApplicationMustBeInForeground, mRedirectHandler, | 
| -                    mTab, mOpenInNewTab, mIsBackgroundTabNavigation, | 
| -                    mIsMainFrame, mShouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent); | 
| +                    mTab, mOpenInNewTab, mIsBackgroundTabNavigation, mIsMainFrame, | 
| +                    mHasUserGesture, mShouldCloseContentsOnOverrideUrlLoadingAndLaunchIntent); | 
| } | 
| } | 
| } | 
|  |