| 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 4db4b12a3b23a32ff0badce1e5f90f7602386134..ae7f574fe6c1e60912ccdffd467c264ff4ee390d 100644
|
| --- a/chrome/browser/chromeos/arc/arc_navigation_throttle.cc
|
| +++ b/chrome/browser/chromeos/arc/arc_navigation_throttle.cc
|
| @@ -27,7 +27,9 @@ namespace arc {
|
|
|
| namespace {
|
|
|
| -constexpr int kMinInstanceVersion = 7;
|
| +constexpr uint32_t kMinVersionForHandleUrl = 2;
|
| +constexpr uint32_t kMinVersionForRequestUrlHandlerList = 2;
|
| +constexpr uint32_t kMinVersionForAddPreferredPackage = 7;
|
|
|
| scoped_refptr<ActivityIconLoader> GetIconLoader() {
|
| DCHECK_CURRENTLY_ON(content::BrowserThread::UI);
|
| @@ -111,9 +113,9 @@ ArcNavigationThrottle::HandleRequest() {
|
| if (!ShouldOverrideUrlLoading(previous_url, current_url))
|
| return content::NavigationThrottle::PROCEED;
|
|
|
| - arc::ArcServiceManager* arc_service_manager = arc::ArcServiceManager::Get();
|
| + ArcServiceManager* arc_service_manager = ArcServiceManager::Get();
|
| DCHECK(arc_service_manager);
|
| - scoped_refptr<arc::LocalActivityResolver> local_resolver =
|
| + scoped_refptr<LocalActivityResolver> local_resolver =
|
| arc_service_manager->activity_resolver();
|
| if (local_resolver->ShouldChromeHandleUrl(url)) {
|
| // Allow navigation to proceed if there isn't an android app that handles
|
| @@ -121,11 +123,11 @@ ArcNavigationThrottle::HandleRequest() {
|
| return content::NavigationThrottle::PROCEED;
|
| }
|
|
|
| - mojom::IntentHelperInstance* bridge_instance =
|
| - arc::ArcIntentHelperBridge::GetIntentHelperInstance(kMinInstanceVersion);
|
| - if (!bridge_instance)
|
| + auto* instance = ArcIntentHelperBridge::GetIntentHelperInstance(
|
| + "RequestUrlHandlerList", kMinVersionForRequestUrlHandlerList);
|
| + if (!instance)
|
| return content::NavigationThrottle::PROCEED;
|
| - bridge_instance->RequestUrlHandlerList(
|
| + instance->RequestUrlHandlerList(
|
| url.spec(), base::Bind(&ArcNavigationThrottle::OnAppCandidatesReceived,
|
| weak_ptr_factory_.GetWeakPtr()));
|
| return content::NavigationThrottle::DEFER;
|
| @@ -227,11 +229,11 @@ void ArcNavigationThrottle::OnIntentPickerClosed(
|
|
|
| previous_user_action_ = close_reason;
|
|
|
| - mojom::IntentHelperInstance* bridge =
|
| - arc::ArcIntentHelperBridge::GetIntentHelperInstance(kMinInstanceVersion);
|
| - if (!bridge || selected_app_index >= handlers.size()) {
|
| + // Make sure that the instance at least supports HandleUrl.
|
| + auto* instance = ArcIntentHelperBridge::GetIntentHelperInstance(
|
| + "HandleUrl", kMinVersionForHandleUrl);
|
| + if (!instance || selected_app_index >= handlers.size())
|
| close_reason = CloseReason::ERROR;
|
| - }
|
|
|
| switch (close_reason) {
|
| case CloseReason::ERROR:
|
| @@ -244,7 +246,12 @@ void ArcNavigationThrottle::OnIntentPickerClosed(
|
| break;
|
| }
|
| case CloseReason::ALWAYS_PRESSED: {
|
| - bridge->AddPreferredPackage(handlers[selected_app_index]->package_name);
|
| + // Call AddPreferredPackage if it is supported.
|
| + if (ArcIntentHelperBridge::GetIntentHelperInstance(
|
| + "AddPreferredPackage", kMinVersionForAddPreferredPackage)) {
|
| + instance->AddPreferredPackage(
|
| + handlers[selected_app_index]->package_name);
|
| + }
|
| // fall through.
|
| }
|
| case CloseReason::JUST_ONCE_PRESSED:
|
| @@ -253,8 +260,8 @@ void ArcNavigationThrottle::OnIntentPickerClosed(
|
| handlers[selected_app_index]->package_name)) {
|
| handle->Resume();
|
| } else {
|
| - bridge->HandleUrl(url.spec(),
|
| - handlers[selected_app_index]->package_name);
|
| + instance->HandleUrl(url.spec(),
|
| + handlers[selected_app_index]->package_name);
|
| handle->CancelDeferredNavigation(
|
| content::NavigationThrottle::CANCEL_AND_IGNORE);
|
| if (handle->GetWebContents()->GetController().IsInitialNavigation())
|
|
|