| Index: chrome/browser/chromeos/arc/arc_navigation_throttle.cc
|
| diff --git a/chrome/browser/chromeos/arc/arc_navigation_throttle.cc b/chrome/browser/chromeos/arc/arc_navigation_throttle.cc
|
| index 93131e18347c362bde6d5e6e1a02086bee645461..0275bb7befbd74bc18a055f23cdf9096e811025e 100644
|
| --- a/chrome/browser/chromeos/arc/arc_navigation_throttle.cc
|
| +++ b/chrome/browser/chromeos/arc/arc_navigation_throttle.cc
|
| @@ -16,6 +16,7 @@
|
| #include "content/public/browser/browser_thread.h"
|
| #include "content/public/browser/navigation_handle.h"
|
| #include "net/base/registry_controlled_domains/registry_controlled_domain.h"
|
| +#include "ui/base/page_transition_types.h"
|
|
|
| namespace arc {
|
|
|
| @@ -63,8 +64,22 @@ ArcNavigationThrottle::~ArcNavigationThrottle() = default;
|
| content::NavigationThrottle::ThrottleCheckResult
|
| ArcNavigationThrottle::WillStartRequest() {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| - if (!navigation_handle()->HasUserGesture())
|
| +
|
| + const ui::PageTransition transition =
|
| + navigation_handle()->GetPageTransition();
|
| +
|
| + if (!ui::PageTransitionCoreTypeIs(transition, ui::PAGE_TRANSITION_LINK)) {
|
| + // If this navigation event wasn't spawned by the user clicking on a link.
|
| + return content::NavigationThrottle::PROCEED;
|
| + }
|
| +
|
| + if (ui::PageTransitionGetQualifier(transition) != 0) {
|
| + // Qualifiers indicate that this navigation was the result of a click on a
|
| + // forward/back button, or a redirect, or typing in the URL bar, etc. Don't
|
| + // pass any of those types of navigations to the intent helper (see
|
| + // crbug.com/630072).
|
| return content::NavigationThrottle::PROCEED;
|
| + }
|
|
|
| if (!ShouldOverrideUrlLoading(navigation_handle()))
|
| return content::NavigationThrottle::PROCEED;
|
|
|