Commit 3cb0d252 authored by Eugene But's avatar Eugene But Committed by Commit Bot

Fix chrome://x-callback-url support.

kExternalFilesLoadedInWebState flag forced to load all external URL in
WebState which broke the support for chrome://x-callback-url URLs.

This CL enables kExternalFilesLoadedInWebState codepath only for file://
URLs, because WebState can only load file URLs. With this change
ExternalFileController is still not used when
kExternalFilesLoadedInWebState is enabled.

Bug: 923869
Change-Id: Iff438df5f8abb14dc85338acf18a3403fe3acd68
Reviewed-on: https://chromium-review.googlesource.com/c/1432593
Commit-Queue: Peter Lee <pkl@chromium.org>
Auto-Submit: Eugene But <eugenebut@chromium.org>
Reviewed-by: default avatarPeter Lee <pkl@chromium.org>
Cr-Commit-Position: refs/heads/master@{#625830}
parent 6124e542
...@@ -265,18 +265,18 @@ NSString* const kShortcutQRScanner = @"OpenQRScanner"; ...@@ -265,18 +265,18 @@ NSString* const kShortcutQRScanner = @"OpenQRScanner";
: ApplicationMode::NORMAL; : ApplicationMode::NORMAL;
GURL URL; GURL URL;
GURL virtualURL; GURL virtualURL;
if (base::FeatureList::IsEnabled( GURL completeURL = startupInformation.startupParameters.completeURL;
GURL externalURL = startupInformation.startupParameters.externalURL;
if (completeURL.SchemeIsFile() &&
base::FeatureList::IsEnabled(
experimental_flags::kExternalFilesLoadedInWebState)) { experimental_flags::kExternalFilesLoadedInWebState)) {
// External URL will be loaded by WebState, which expects |completeURL|. // External URL will be loaded by WebState, which expects |completeURL|.
// Omnibox however suppose to display |externalURL|, which is used as // Omnibox however suppose to display |externalURL|, which is used as
// virtual URL. // virtual URL.
URL = startupInformation.startupParameters.completeURL; URL = completeURL;
virtualURL = startupInformation.startupParameters.externalURL; virtualURL = externalURL;
} else { } else {
// |externalURL| is rewritten to chrome:// URL, which is expected by URL = externalURL;
// ExternalFileController. ExternalFileController will be used to load
// file:// URL. TODO(crbug.com/913602): Remove this code.
URL = startupInformation.startupParameters.externalURL;
} }
[tabOpener dismissModalsAndOpenSelectedTabInMode:targetMode [tabOpener dismissModalsAndOpenSelectedTabInMode:targetMode
withURL:URL withURL:URL
......
...@@ -575,11 +575,7 @@ TEST_P(UserActivityHandlerTest, HandleStartupParamsNonU2F) { ...@@ -575,11 +575,7 @@ TEST_P(UserActivityHandlerTest, HandleStartupParamsNonU2F) {
// Tests. // Tests.
EXPECT_OCMOCK_VERIFY(startupInformationMock); EXPECT_OCMOCK_VERIFY(startupInformationMock);
EXPECT_EQ(gurl, tabOpener.url); EXPECT_EQ(gurl, tabOpener.url);
if (GetParam() == ExternalFilesLoadedInWebStateFeature::Enabled) { EXPECT_TRUE(tabOpener.virtualURL.is_empty());
EXPECT_EQ(gurl, tabOpener.virtualURL);
} else {
EXPECT_TRUE(tabOpener.virtualURL.is_empty());
}
EXPECT_EQ(ApplicationMode::INCOGNITO, [tabOpener applicationMode]); EXPECT_EQ(ApplicationMode::INCOGNITO, [tabOpener applicationMode]);
} }
......
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