Add support to chrome://flags for command line flags that need to be treated as a list of origins
This CL adds support for command line flags that are lists of url::Origins. E.g. The value in --flag=value will now be modifyable from the chrome://flags page using a free form textbox, and will be treated as a comma separated list of origins (e.g. http://example1.test,http://example2.test)
The string from the textbox is transformed as follows:
- Continuous whitespace characters are collapsed into single a space
- String is tokenized using space and comma as delimiters
- Each token is parsed as a GURL. Invalid URLs or URLs with a scheme other than http and https are discarded.
- Remaining URLs are converted to url::Origins, then joined into a single, comma separated string.
The CL also adds --unsafely-treat-insecure-origin-as-secure as the first such flag to chrome://flags. Developers will now be able to modify the list of insecure origins treated as secure from the chrome://flags page on all platforms.
Bug: 834381
Change-Id: Iad44b5b2724687c7bea1ae45c23ccc910eb5cc9f
Reviewed-on: https://chromium-review.googlesource.com/1038152
Reviewed-by: Lei Zhang <[email protected]>
Reviewed-by: Mattias Nissler <[email protected]>
Reviewed-by: Mike West <[email protected]>
Reviewed-by: Edward Jung <[email protected]>
Reviewed-by: Alexei Svitkine <[email protected]>
Commit-Queue: Mustafa Emre Acer <[email protected]>
Cr-Commit-Position: refs/heads/master@{#560791}
diff --git a/components/flags_ui/flags_state_unittest.cc b/components/flags_ui/flags_state_unittest.cc
index 9524d90..17a8a9e 100644
--- a/components/flags_ui/flags_state_unittest.cc
+++ b/components/flags_ui/flags_state_unittest.cc
@@ -46,6 +46,7 @@
const char kFlags8[] = "flag8";
const char kFlags9[] = "flag9";
const char kFlags10[] = "flag10";
+const char kFlags11[] = "flag11";
const char kSwitch1[] = "switch";
const char kSwitch2[] = "switch2";
@@ -53,6 +54,9 @@
const char kSwitch6[] = "switch6";
const char kValueForSwitch2[] = "value_for_switch2";
+const char kStringSwitch[] = "string_switch";
+const char kValueForStringSwitch[] = "value_for_string_switch";
+
const char kMultiSwitch1[] = "multi_switch1";
const char kMultiSwitch2[] = "multi_switch2";
const char kValueForMultiSwitch2[] = "value_for_multi_switch2";
@@ -143,7 +147,10 @@
0, // Ends up being mapped to the current platform.
FeatureEntry::FEATURE_WITH_PARAMS_VALUE, nullptr, nullptr, nullptr,
nullptr, &kTestFeature2, 4, nullptr, kTestVariations2, kTestTrial},
-};
+ {kFlags11, kDummyName, kDummyDescription,
+ 0, // Ends up being mapped to the current platform.
+ FeatureEntry::ORIGIN_LIST_VALUE, kStringSwitch, kValueForStringSwitch,
+ nullptr, nullptr, nullptr /* feature */, 0, nullptr, nullptr, nullptr}};
class FlagsStateTest : public ::testing::Test {
protected:
@@ -886,7 +893,7 @@
&supported_entries, &unsupported_entries,
base::Bind(&SkipFeatureEntry));
// All |kEntries| except for |kFlags3| should be supported.
- EXPECT_EQ(9u, supported_entries.GetSize());
+ EXPECT_EQ(10u, supported_entries.GetSize());
EXPECT_EQ(1u, unsupported_entries.GetSize());
EXPECT_EQ(arraysize(kEntries),
supported_entries.GetSize() + unsupported_entries.GetSize());