Remove the legacy/fallback chrome-devtools: scheme from the codebase.
This CL stops rewriting chrome-devtools: scheme URLs into devtools: scheme URLs, by tweaking //components/url_formatter/url_fixer.cc. This CL also stops special-casing chrome-devtools: scheme in //components/policy/core/browser/url_util.cc. The CL then also proceeds to remove all other mentions of the chrome-devtools: scheme from the codebase. This part of the change was initially done with the following command: $ git grep -l 'chrome-devtools[^-]' | xargs -n 1 \ sed -i -e 's/chrome-devtools/devtools/g' and then manually reviewing and tweaking the edited files. Bug: 1055524 Change-Id: Ie9d51332e4c28fd6201f4b5590bbba5c79fc09d2 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2088335 Reviewed-by: Ted Choc <tedchoc@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Reviewed-by: Sergey Poromov <poromov@chromium.org> Reviewed-by: Tommy Li <tommycli@chromium.org> Reviewed-by: Peter Kasting <pkasting@chromium.org> Commit-Queue: Łukasz Anforowicz <lukasza@chromium.org> Cr-Commit-Position: refs/heads/master@{#748242}
This commit is contained in:

committed by
Commit Bot

parent
2c695fe87c
commit
6700d12448
chrome
android
java
src
org
chromium
chrome
browser
externalnav
javatests
src
org
chromium
chrome
browser
externalnav
browser
components
embedder_support
android
java
src
org
chromium
components
embedder_support
omnibox
policy
core
url_formatter
docs/ui/ui_devtools
third_party/blink/renderer/core/layout
@ -437,7 +437,7 @@ public class ExternalNavigationHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The "about:", "chrome:", "chrome-native:", "chrome-devtools:", and "devtools:" schemes
|
* The "about:", "chrome:", "chrome-native:", and "devtools:" schemes
|
||||||
* are internal to the browser; don't want these to be dispatched to other apps.
|
* are internal to the browser; don't want these to be dispatched to other apps.
|
||||||
*/
|
*/
|
||||||
private boolean hasInternalScheme(
|
private boolean hasInternalScheme(
|
||||||
@ -454,8 +454,7 @@ public class ExternalNavigationHandler {
|
|||||||
if (url.startsWith(ContentUrlConstants.ABOUT_SCHEME)
|
if (url.startsWith(ContentUrlConstants.ABOUT_SCHEME)
|
||||||
|| url.startsWith(UrlConstants.CHROME_URL_SHORT_PREFIX)
|
|| url.startsWith(UrlConstants.CHROME_URL_SHORT_PREFIX)
|
||||||
|| url.startsWith(UrlConstants.CHROME_NATIVE_URL_SHORT_PREFIX)
|
|| url.startsWith(UrlConstants.CHROME_NATIVE_URL_SHORT_PREFIX)
|
||||||
|| url.startsWith(UrlConstants.DEVTOOLS_URL_SHORT_PREFIX)
|
|| url.startsWith(UrlConstants.DEVTOOLS_URL_SHORT_PREFIX)) {
|
||||||
|| url.startsWith(UrlConstants.DEVTOOLS_FALLBACK_URL_SHORT_PREFIX)) {
|
|
||||||
if (DEBUG) Log.i(TAG, "Navigating to a chrome-internal page");
|
if (DEBUG) Log.i(TAG, "Navigating to a chrome-internal page");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -313,7 +313,6 @@ public class ExternalNavigationHandlerTest {
|
|||||||
"chrome://history",
|
"chrome://history",
|
||||||
"chrome-native://newtab",
|
"chrome-native://newtab",
|
||||||
"devtools://foo",
|
"devtools://foo",
|
||||||
"chrome-devtools://foo",
|
|
||||||
"intent:chrome-urls#Intent;package=com.android.chrome;scheme=about;end;",
|
"intent:chrome-urls#Intent;package=com.android.chrome;scheme=about;end;",
|
||||||
"intent:chrome-urls#Intent;package=com.android.chrome;scheme=chrome;end;",
|
"intent:chrome-urls#Intent;package=com.android.chrome;scheme=chrome;end;",
|
||||||
"intent://com.android.chrome.FileProvider/foo.html#Intent;scheme=content;end;",
|
"intent://com.android.chrome.FileProvider/foo.html#Intent;scheme=content;end;",
|
||||||
|
@ -52,5 +52,12 @@ TEST_F(ChromeAutocompleteSchemeClassifierTest, BlockedScheme) {
|
|||||||
metrics::OmniboxInputType::QUERY);
|
metrics::OmniboxInputType::QUERY);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
TEST_F(ChromeAutocompleteSchemeClassifierTest, DevToolsUrl) {
|
||||||
|
GURL url("devtools://foo");
|
||||||
|
// An internal scheme should also be recognized as a URL.
|
||||||
|
EXPECT_EQ(scheme_classifier_->GetInputTypeForScheme(url.scheme()),
|
||||||
|
metrics::OmniboxInputType::URL);
|
||||||
|
}
|
||||||
|
|
||||||
// Can't test registered apps handling with mocking of shell_integration
|
// Can't test registered apps handling with mocking of shell_integration
|
||||||
// because shell_integration is implemented via namespace shell_integration.
|
// because shell_integration is implemented via namespace shell_integration.
|
||||||
|
@ -2415,7 +2415,7 @@ class DevToolsPolicyTest : public InProcessBrowserTest {
|
|||||||
|
|
||||||
IN_PROC_BROWSER_TEST_F(DevToolsPolicyTest, OpenBlackListedDevTools) {
|
IN_PROC_BROWSER_TEST_F(DevToolsPolicyTest, OpenBlackListedDevTools) {
|
||||||
base::ListValue blacklist;
|
base::ListValue blacklist;
|
||||||
blacklist.AppendString("chrome-devtools://*");
|
blacklist.AppendString("devtools://*");
|
||||||
policy::PolicyMap policies;
|
policy::PolicyMap policies;
|
||||||
policies.Set(policy::key::kURLBlacklist, policy::POLICY_LEVEL_MANDATORY,
|
policies.Set(policy::key::kURLBlacklist, policy::POLICY_LEVEL_MANDATORY,
|
||||||
policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD,
|
policy::POLICY_SCOPE_USER, policy::POLICY_SOURCE_CLOUD,
|
||||||
|
@ -29,7 +29,6 @@ public class UrlConstants {
|
|||||||
public static final String CHROME_NATIVE_URL_SHORT_PREFIX = "chrome-native:";
|
public static final String CHROME_NATIVE_URL_SHORT_PREFIX = "chrome-native:";
|
||||||
public static final String FILE_URL_SHORT_PREFIX = "file:";
|
public static final String FILE_URL_SHORT_PREFIX = "file:";
|
||||||
public static final String DEVTOOLS_URL_SHORT_PREFIX = "devtools:";
|
public static final String DEVTOOLS_URL_SHORT_PREFIX = "devtools:";
|
||||||
public static final String DEVTOOLS_FALLBACK_URL_SHORT_PREFIX = "chrome-devtools:";
|
|
||||||
public static final String INTENT_URL_SHORT_PREFIX = "intent:";
|
public static final String INTENT_URL_SHORT_PREFIX = "intent:";
|
||||||
public static final String APP_INTENT_URL_SHORT_PREFIX = "android-app:";
|
public static final String APP_INTENT_URL_SHORT_PREFIX = "android-app:";
|
||||||
|
|
||||||
|
@ -26,7 +26,6 @@ namespace {
|
|||||||
|
|
||||||
// Hardcode constant to avoid any dependencies on content/.
|
// Hardcode constant to avoid any dependencies on content/.
|
||||||
const char kViewSourceScheme[] = "view-source";
|
const char kViewSourceScheme[] = "view-source";
|
||||||
const char kDevToolsScheme[] = "devtools";
|
|
||||||
|
|
||||||
void AdjustCursorPositionIfNecessary(size_t num_leading_chars_removed,
|
void AdjustCursorPositionIfNecessary(size_t num_leading_chars_removed,
|
||||||
size_t* cursor_position) {
|
size_t* cursor_position) {
|
||||||
@ -206,14 +205,6 @@ metrics::OmniboxInputType AutocompleteInput::Parse(
|
|||||||
return metrics::OmniboxInputType::URL;
|
return metrics::OmniboxInputType::URL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (base::LowerCaseEqualsASCII(parsed_scheme_utf8, kDevToolsScheme)) {
|
|
||||||
// A user might type in the fallback url when using devtools. In
|
|
||||||
// this case, |parsed_scheme_utf8| will tell us that this is a devtools URL,
|
|
||||||
// but |parts->scheme| might be empty.e.g. if the user typed
|
|
||||||
// "chrome-devtools://".
|
|
||||||
return metrics::OmniboxInputType::URL;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Treat javascript: scheme queries followed by things that are unlikely to
|
// Treat javascript: scheme queries followed by things that are unlikely to
|
||||||
// be code as UNKNOWN, rather than script to execute (URL).
|
// be code as UNKNOWN, rather than script to execute (URL).
|
||||||
if (RE2::FullMatch(base::UTF16ToUTF8(text), "(?i)javascript:([^;=().\"]*)")) {
|
if (RE2::FullMatch(base::UTF16ToUTF8(text), "(?i)javascript:([^;=().\"]*)")) {
|
||||||
|
@ -178,8 +178,12 @@ TEST(AutocompleteInputTest, InputType) {
|
|||||||
{ASCIIToUTF16("filesystem:http"), metrics::OmniboxInputType::QUERY},
|
{ASCIIToUTF16("filesystem:http"), metrics::OmniboxInputType::QUERY},
|
||||||
{ASCIIToUTF16("filesystem:"), metrics::OmniboxInputType::QUERY},
|
{ASCIIToUTF16("filesystem:"), metrics::OmniboxInputType::QUERY},
|
||||||
{ASCIIToUTF16("chrome-search://"), metrics::OmniboxInputType::QUERY},
|
{ASCIIToUTF16("chrome-search://"), metrics::OmniboxInputType::QUERY},
|
||||||
{ASCIIToUTF16("chrome-devtools:"), metrics::OmniboxInputType::QUERY},
|
{ASCIIToUTF16("chrome-devtools:"), metrics::OmniboxInputType::UNKNOWN},
|
||||||
|
{ASCIIToUTF16("chrome-devtools://"), metrics::OmniboxInputType::UNKNOWN},
|
||||||
|
{ASCIIToUTF16("chrome-devtools://x"), metrics::OmniboxInputType::UNKNOWN},
|
||||||
{ASCIIToUTF16("devtools:"), metrics::OmniboxInputType::QUERY},
|
{ASCIIToUTF16("devtools:"), metrics::OmniboxInputType::QUERY},
|
||||||
|
{ASCIIToUTF16("devtools://"), metrics::OmniboxInputType::QUERY},
|
||||||
|
{ASCIIToUTF16("devtools://x"), metrics::OmniboxInputType::URL},
|
||||||
{ASCIIToUTF16("about://f;"), metrics::OmniboxInputType::QUERY},
|
{ASCIIToUTF16("about://f;"), metrics::OmniboxInputType::QUERY},
|
||||||
{ASCIIToUTF16("://w"), metrics::OmniboxInputType::UNKNOWN},
|
{ASCIIToUTF16("://w"), metrics::OmniboxInputType::UNKNOWN},
|
||||||
{ASCIIToUTF16(":w"), metrics::OmniboxInputType::UNKNOWN},
|
{ASCIIToUTF16(":w"), metrics::OmniboxInputType::UNKNOWN},
|
||||||
@ -199,6 +203,7 @@ TEST(AutocompleteInputTest, InputType) {
|
|||||||
{ASCIIToUTF16("example."), metrics::OmniboxInputType::UNKNOWN},
|
{ASCIIToUTF16("example."), metrics::OmniboxInputType::UNKNOWN},
|
||||||
{ASCIIToUTF16(".example"), metrics::OmniboxInputType::UNKNOWN},
|
{ASCIIToUTF16(".example"), metrics::OmniboxInputType::UNKNOWN},
|
||||||
{ASCIIToUTF16(".example."), metrics::OmniboxInputType::UNKNOWN},
|
{ASCIIToUTF16(".example."), metrics::OmniboxInputType::UNKNOWN},
|
||||||
|
{ASCIIToUTF16("example:"), metrics::OmniboxInputType::UNKNOWN},
|
||||||
{ASCIIToUTF16("example:80/ "), metrics::OmniboxInputType::URL},
|
{ASCIIToUTF16("example:80/ "), metrics::OmniboxInputType::URL},
|
||||||
{ASCIIToUTF16("http://foo.invalid"), metrics::OmniboxInputType::UNKNOWN},
|
{ASCIIToUTF16("http://foo.invalid"), metrics::OmniboxInputType::UNKNOWN},
|
||||||
{ASCIIToUTF16("foo.invalid/"), metrics::OmniboxInputType::QUERY},
|
{ASCIIToUTF16("foo.invalid/"), metrics::OmniboxInputType::QUERY},
|
||||||
@ -369,24 +374,3 @@ TEST(AutocompleteInputTest, InputTypeWithCursorPosition) {
|
|||||||
input.cursor_position());
|
input.cursor_position());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TEST(AutocompleteInputTest, InputParsedToFallback) {
|
|
||||||
struct test_data {
|
|
||||||
const base::string16 input;
|
|
||||||
const std::string parsed_input;
|
|
||||||
} input_cases[] = {
|
|
||||||
{ASCIIToUTF16("devtools://bundled/devtools/inspector.html"),
|
|
||||||
std::string("devtools://bundled/devtools/inspector.html")},
|
|
||||||
{ASCIIToUTF16("chrome-devtools://bundled/devtools/inspector.html"),
|
|
||||||
std::string("devtools://bundled/devtools/inspector.html")},
|
|
||||||
};
|
|
||||||
|
|
||||||
for (size_t i = 0; i < base::size(input_cases); ++i) {
|
|
||||||
SCOPED_TRACE(input_cases[i].input);
|
|
||||||
AutocompleteInput input(input_cases[i].input,
|
|
||||||
metrics::OmniboxEventProto::OTHER,
|
|
||||||
TestSchemeClassifier());
|
|
||||||
input.set_prevent_inline_autocomplete(true);
|
|
||||||
EXPECT_EQ(input_cases[i].parsed_input, input.canonicalized_url().spec());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
@ -26,7 +26,7 @@ metrics::OmniboxInputType TestSchemeClassifier::GetInputTypeForScheme(
|
|||||||
url::kWssScheme, url::kFileScheme, url::kAboutScheme,
|
url::kWssScheme, url::kFileScheme, url::kAboutScheme,
|
||||||
url::kFtpScheme, url::kBlobScheme, url::kFileSystemScheme,
|
url::kFtpScheme, url::kBlobScheme, url::kFileSystemScheme,
|
||||||
"view-source", "javascript", "chrome",
|
"view-source", "javascript", "chrome",
|
||||||
"chrome-ui",
|
"chrome-ui", "devtools",
|
||||||
};
|
};
|
||||||
for (const char* known_scheme : kKnownURLSchemes) {
|
for (const char* known_scheme : kKnownURLSchemes) {
|
||||||
if (scheme == known_scheme)
|
if (scheme == known_scheme)
|
||||||
|
@ -288,16 +288,7 @@ TEST_F(URLBlacklistManagerTest, Filtering) {
|
|||||||
blacklist.Allow(allowed.get());
|
blacklist.Allow(allowed.get());
|
||||||
EXPECT_FALSE(blacklist.IsURLBlocked(GURL("http://example.com")));
|
EXPECT_FALSE(blacklist.IsURLBlocked(GURL("http://example.com")));
|
||||||
|
|
||||||
// Treats chrome-devtools and devtools schemes the same way.
|
// Devtools should not be blocked.
|
||||||
blocked.reset(new base::ListValue);
|
|
||||||
blocked->AppendString("*");
|
|
||||||
blacklist.Block(blocked.get());
|
|
||||||
allowed.reset(new base::ListValue);
|
|
||||||
allowed->AppendString("chrome-devtools://*");
|
|
||||||
blacklist.Allow(allowed.get());
|
|
||||||
EXPECT_FALSE(blacklist.IsURLBlocked(GURL("devtools://something.com")));
|
|
||||||
EXPECT_TRUE(blacklist.IsURLBlocked(GURL("https://something.com")));
|
|
||||||
|
|
||||||
blocked.reset(new base::ListValue);
|
blocked.reset(new base::ListValue);
|
||||||
blocked->AppendString("*");
|
blocked->AppendString("*");
|
||||||
blacklist.Block(blocked.get());
|
blacklist.Block(blocked.get());
|
||||||
|
@ -51,9 +51,6 @@ const char kGoogleWebCacheQueryPattern[] =
|
|||||||
const char kGoogleTranslateSubdomain[] = "translate.";
|
const char kGoogleTranslateSubdomain[] = "translate.";
|
||||||
const char kAlternateGoogleTranslateHost[] = "translate.googleusercontent.com";
|
const char kAlternateGoogleTranslateHost[] = "translate.googleusercontent.com";
|
||||||
|
|
||||||
const char kDevToolsLegacyScheme[] = "chrome-devtools";
|
|
||||||
const char kDevToolsScheme[] = "devtools";
|
|
||||||
|
|
||||||
// Maximum filters per policy. Filters over this index are ignored.
|
// Maximum filters per policy. Filters over this index are ignored.
|
||||||
const size_t kMaxFiltersPerPolicy = 1000;
|
const size_t kMaxFiltersPerPolicy = 1000;
|
||||||
|
|
||||||
@ -299,16 +296,6 @@ bool FilterToComponents(const std::string& filter,
|
|||||||
std::string lc_filter = base::ToLowerASCII(filter);
|
std::string lc_filter = base::ToLowerASCII(filter);
|
||||||
const std::string url_scheme = url_formatter::SegmentURL(filter, &parsed);
|
const std::string url_scheme = url_formatter::SegmentURL(filter, &parsed);
|
||||||
|
|
||||||
// This is for backward compatibility between 'chrome-devtools' and 'devtools'
|
|
||||||
// schemes. url_formatter::SegmentURL will return 'devtools' if the filter's
|
|
||||||
// scheme is the deprecated 'chrome-devtools'. To comply with that
|
|
||||||
// transformation, since both schemes are equivalent, if the filter's scheme
|
|
||||||
// was 'chrome-devtools', it should be replaced by 'devtools'.
|
|
||||||
if (url_scheme == kDevToolsScheme &&
|
|
||||||
lc_filter.find(kDevToolsLegacyScheme) == 0) {
|
|
||||||
lc_filter.replace(0, 15, kDevToolsScheme);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if it's a scheme wildcard pattern. We support both versions
|
// Check if it's a scheme wildcard pattern. We support both versions
|
||||||
// (scheme:* and scheme://*) the later being consistent with old filter
|
// (scheme:* and scheme://*) the later being consistent with old filter
|
||||||
// definitions.
|
// definitions.
|
||||||
|
@ -37,7 +37,6 @@ namespace {
|
|||||||
// Hardcode these constants to avoid dependences on //chrome and //content.
|
// Hardcode these constants to avoid dependences on //chrome and //content.
|
||||||
const char kChromeUIScheme[] = "chrome";
|
const char kChromeUIScheme[] = "chrome";
|
||||||
const char kDevToolsScheme[] = "devtools";
|
const char kDevToolsScheme[] = "devtools";
|
||||||
const char kDevToolsFallbackScheme[] = "chrome-devtools";
|
|
||||||
const char kChromeUIDefaultHost[] = "version";
|
const char kChromeUIDefaultHost[] = "version";
|
||||||
const char kViewSourceScheme[] = "view-source";
|
const char kViewSourceScheme[] = "view-source";
|
||||||
|
|
||||||
@ -461,7 +460,7 @@ std::string SegmentURLInternal(std::string* text, url::Parsed* parts) {
|
|||||||
// Proceed with about, chrome, and devtools schemes,
|
// Proceed with about, chrome, and devtools schemes,
|
||||||
// but not file or nonstandard schemes.
|
// but not file or nonstandard schemes.
|
||||||
if ((scheme != url::kAboutScheme) && (scheme != kChromeUIScheme) &&
|
if ((scheme != url::kAboutScheme) && (scheme != kChromeUIScheme) &&
|
||||||
(scheme != kDevToolsScheme) && (scheme != kDevToolsFallbackScheme) &&
|
(scheme != kDevToolsScheme) &&
|
||||||
!url::IsStandard(scheme.c_str(),
|
!url::IsStandard(scheme.c_str(),
|
||||||
url::Component(0, static_cast<int>(scheme.length())))) {
|
url::Component(0, static_cast<int>(scheme.length())))) {
|
||||||
return scheme;
|
return scheme;
|
||||||
@ -479,14 +478,6 @@ std::string SegmentURLInternal(std::string* text, url::Parsed* parts) {
|
|||||||
return scheme;
|
return scheme;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (scheme == kDevToolsFallbackScheme) {
|
|
||||||
// Have the GURL parser do the heavy lifting for us.
|
|
||||||
url::ParseStandardURL(text->data(), text_length, parts);
|
|
||||||
// Now replace the fallback scheme alias with the real one
|
|
||||||
parts->scheme.reset();
|
|
||||||
return kDevToolsScheme;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (parts->scheme.is_valid()) {
|
if (parts->scheme.is_valid()) {
|
||||||
// Have the GURL parser do the heavy lifting for us.
|
// Have the GURL parser do the heavy lifting for us.
|
||||||
url::ParseStandardURL(text->data(), text_length, parts);
|
url::ParseStandardURL(text->data(), text_length, parts);
|
||||||
@ -585,22 +576,15 @@ GURL FixupURL(const std::string& text, const std::string& desired_tld) {
|
|||||||
return about_url;
|
return about_url;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Parse and rebuild about: and chrome: URLs.
|
// For some schemes whose layouts we understand, we rebuild the URL.
|
||||||
bool chrome_url =
|
bool chrome_url =
|
||||||
(scheme == url::kAboutScheme) || (scheme == kChromeUIScheme);
|
(scheme == url::kAboutScheme) || (scheme == kChromeUIScheme);
|
||||||
|
bool devtools_url = (scheme == kDevToolsScheme);
|
||||||
// Parse and rebuild devtools: and the fallback chrome-devtools: URLs.
|
|
||||||
bool devtools_url =
|
|
||||||
(scheme == kDevToolsScheme) || (scheme == kDevToolsFallbackScheme);
|
|
||||||
|
|
||||||
// For some schemes whose layouts we understand, we rebuild it.
|
|
||||||
if (chrome_url || devtools_url ||
|
if (chrome_url || devtools_url ||
|
||||||
url::IsStandard(scheme.c_str(),
|
url::IsStandard(scheme.c_str(),
|
||||||
url::Component(0, static_cast<int>(scheme.length())))) {
|
url::Component(0, static_cast<int>(scheme.length())))) {
|
||||||
// Replace the about: scheme with the chrome: scheme, or
|
// Replace the about: scheme with the chrome: scheme.
|
||||||
// chrome-devtoools: scheme with the devtools: scheme.
|
std::string url(scheme == url::kAboutScheme ? kChromeUIScheme : scheme);
|
||||||
std::string url(chrome_url ? kChromeUIScheme
|
|
||||||
: devtools_url ? kDevToolsScheme : scheme);
|
|
||||||
url.append(url::kStandardSchemeSeparator);
|
url.append(url::kStandardSchemeSeparator);
|
||||||
|
|
||||||
// We need to check whether the |username| is valid because it is our
|
// We need to check whether the |username| is valid because it is our
|
||||||
@ -716,9 +700,7 @@ bool IsEquivalentScheme(const std::string& scheme1,
|
|||||||
const std::string& scheme2) {
|
const std::string& scheme2) {
|
||||||
return scheme1 == scheme2 ||
|
return scheme1 == scheme2 ||
|
||||||
(scheme1 == url::kAboutScheme && scheme2 == kChromeUIScheme) ||
|
(scheme1 == url::kAboutScheme && scheme2 == kChromeUIScheme) ||
|
||||||
(scheme1 == kChromeUIScheme && scheme2 == url::kAboutScheme) ||
|
(scheme1 == kChromeUIScheme && scheme2 == url::kAboutScheme);
|
||||||
(scheme1 == kDevToolsScheme && scheme2 == kDevToolsFallbackScheme) ||
|
|
||||||
(scheme1 == kDevToolsFallbackScheme && scheme2 == kDevToolsScheme);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace url_formatter
|
} // namespace url_formatter
|
||||||
|
@ -260,18 +260,6 @@ static const SegmentCase segment_cases[] = {
|
|||||||
url::Component(43, 17), // query
|
url::Component(43, 17), // query
|
||||||
url::Component(), // ref
|
url::Component(), // ref
|
||||||
},
|
},
|
||||||
{
|
|
||||||
"chrome-devtools://bundled/devtools/inspector.html?ws=localhost:9221",
|
|
||||||
"devtools",
|
|
||||||
url::Component(), // scheme
|
|
||||||
url::Component(), // username
|
|
||||||
url::Component(), // password
|
|
||||||
url::Component(18, 7), // host
|
|
||||||
url::Component(), // port
|
|
||||||
url::Component(25, 24), // path
|
|
||||||
url::Component(50, 17), // query
|
|
||||||
url::Component(), // ref
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef testing::Test URLFixerTest;
|
typedef testing::Test URLFixerTest;
|
||||||
@ -282,6 +270,8 @@ TEST(URLFixerTest, SegmentURL) {
|
|||||||
|
|
||||||
for (size_t i = 0; i < base::size(segment_cases); ++i) {
|
for (size_t i = 0; i < base::size(segment_cases); ++i) {
|
||||||
SegmentCase value = segment_cases[i];
|
SegmentCase value = segment_cases[i];
|
||||||
|
SCOPED_TRACE(testing::Message() << "test #" << i << ": " << value.input);
|
||||||
|
|
||||||
result = url_formatter::SegmentURL(value.input, &parts);
|
result = url_formatter::SegmentURL(value.input, &parts);
|
||||||
EXPECT_EQ(value.result, result);
|
EXPECT_EQ(value.result, result);
|
||||||
EXPECT_EQ(value.scheme, parts.scheme);
|
EXPECT_EQ(value.scheme, parts.scheme);
|
||||||
@ -395,16 +385,9 @@ struct FixupCase {
|
|||||||
// Devtools scheme.
|
// Devtools scheme.
|
||||||
{"devtools://bundled/devtools/node.html",
|
{"devtools://bundled/devtools/node.html",
|
||||||
"devtools://bundled/devtools/node.html"},
|
"devtools://bundled/devtools/node.html"},
|
||||||
// Devtools fallback scheme.
|
|
||||||
{"chrome-devtools://bundled/devtools/toolbox.html",
|
|
||||||
"devtools://bundled/devtools/toolbox.html"},
|
|
||||||
// Devtools scheme with websocket query.
|
// Devtools scheme with websocket query.
|
||||||
{"devtools://bundled/devtools/inspector.html?ws=ws://localhost:9222/guid",
|
{"devtools://bundled/devtools/inspector.html?ws=ws://localhost:9222/guid",
|
||||||
"devtools://bundled/devtools/inspector.html?ws=ws://localhost:9222/guid"},
|
"devtools://bundled/devtools/inspector.html?ws=ws://localhost:9222/guid"},
|
||||||
// Devtools fallback scheme with websocket query.
|
|
||||||
{"chrome-devtools://bundled/devtools/inspector.html?ws=ws://localhost:9222/"
|
|
||||||
"guid",
|
|
||||||
"devtools://bundled/devtools/inspector.html?ws=ws://localhost:9222/guid"},
|
|
||||||
// host:123 should be rewritten to http://host:123/, but only if the port
|
// host:123 should be rewritten to http://host:123/, but only if the port
|
||||||
// number is valid - in particular telephone numbers are not port numbers
|
// number is valid - in particular telephone numbers are not port numbers
|
||||||
// (see also SendTabToSelfUtilTest.ShouldNotOfferFeatureForTelephoneLink).
|
// (see also SendTabToSelfUtilTest.ShouldNotOfferFeatureForTelephoneLink).
|
||||||
|
@ -15,7 +15,7 @@ currently supported on Linux, Windows, Mac, and ChromeOS.
|
|||||||
|
|
||||||
* If you want to use different port, add port in the flag `--enable-ui-devtools=<port>`.
|
* If you want to use different port, add port in the flag `--enable-ui-devtools=<port>`.
|
||||||
2. In the Chrome Omnibox, go to chrome://inspect#other and click `inspect` under UIDevToolsClient.
|
2. In the Chrome Omnibox, go to chrome://inspect#other and click `inspect` under UIDevToolsClient.
|
||||||
* Direct link is chrome-devtools://devtools/bundled/inspector.html?ws=localhost:9223/0.
|
* Direct link is devtools://devtools/bundled/inspector.html?ws=localhost:9223/0.
|
||||||
|
|
||||||
|
|
||||||
## How to Use
|
## How to Use
|
||||||
|
@ -105,7 +105,7 @@ void RegionToTracedValue(const LayoutShiftRegion& region, TracedValue& value) {
|
|||||||
#if DCHECK_IS_ON()
|
#if DCHECK_IS_ON()
|
||||||
bool ShouldLog(const LocalFrame& frame) {
|
bool ShouldLog(const LocalFrame& frame) {
|
||||||
const String& url = frame.GetDocument()->Url().GetString();
|
const String& url = frame.GetDocument()->Url().GetString();
|
||||||
return !url.StartsWith("chrome-devtools:") && !url.StartsWith("devtools:");
|
return !url.StartsWith("devtools:");
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user