Skip to content

Commit f91ae6e

Browse files
alancutterChromium LUCI CQ
authored andcommitted
Forward kWebAppEnableLinkCapturing flag into Blink as WebAppLinkCapturing flag
This CL simplifies the declarative link capturing flag situation by making WebAppLinkCapturing inherit the value of kWebAppEnableLinkCapturing. This means Blink only needs to read one flag to determine whether this feature is enabled. This is required for using implied_by: ['WebAppLinkCapturing'] in runtime_enabled_features.json5 in a future CL. Bug: 1163398 Change-Id: Ia0593cf9cf572b865a9c86497fb9e49fe033e58a Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2966419 Reviewed-by: Nate Chapin <[email protected]> Reviewed-by: Dominick Ng <[email protected]> Commit-Queue: Alan Cutter <[email protected]> Cr-Commit-Position: refs/heads/master@{#893685}
1 parent 233c102 commit f91ae6e

File tree

3 files changed

+107
-111
lines changed

3 files changed

+107
-111
lines changed

content/child/runtime_features.cc

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,7 @@ void SetRuntimeFeaturesFromChromiumFeatures() {
397397
kThrottleDisplayNoneAndVisibilityHiddenCrossOriginIframes},
398398
{"TrustedDOMTypes", features::kTrustedDOMTypes},
399399
{"UserAgentClientHint", features::kUserAgentClientHint},
400+
{"WebAppLinkCapturing", blink::features::kWebAppEnableLinkCapturing},
400401
{"WebAppTabStrip", features::kDesktopPWAsTabStrip},
401402
{"WebAppWindowControlsOverlay",
402403
features::kWebAppWindowControlsOverlay},

third_party/blink/renderer/modules/manifest/manifest_parser.cc

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1334,12 +1334,8 @@ String ManifestParser::ParseGCMSenderID(const JSONObject* object) {
13341334

13351335
mojom::blink::CaptureLinks ManifestParser::ParseCaptureLinks(
13361336
const JSONObject* object) {
1337-
// Parse if either the command line flag is passed (for about:flags) or the
1338-
// runtime enabled feature is turned on (for origin trial).
1339-
if (!base::FeatureList::IsEnabled(features::kWebAppEnableLinkCapturing) &&
1340-
!RuntimeEnabledFeatures::WebAppLinkCapturingEnabled(feature_context_)) {
1337+
if (!RuntimeEnabledFeatures::WebAppLinkCapturingEnabled(feature_context_))
13411338
return mojom::blink::CaptureLinks::kUndefined;
1342-
}
13431339

13441340
String capture_links_string;
13451341
if (object->GetString("capture_links", &capture_links_string)) {

third_party/blink/renderer/modules/manifest/manifest_parser_unittest.cc

Lines changed: 105 additions & 106 deletions
Original file line numberDiff line numberDiff line change
@@ -4402,15 +4402,6 @@ TEST_F(ManifestParserTest, GCMSenderIDParseRules) {
44024402
}
44034403
}
44044404

4405-
TEST_F(ManifestParserTest, CaptureLinksParseRules) {
4406-
// Feature not enabled, should not be parsed.
4407-
{
4408-
auto& manifest = ParseManifest(R"({ "capture_links": "none" })");
4409-
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kUndefined);
4410-
EXPECT_EQ(0u, GetErrorCount());
4411-
}
4412-
}
4413-
44144405
TEST_F(ManifestParserTest, StorageIsolationDisabled) {
44154406
// Feature not enabled, should not be parsed.
44164407
{
@@ -4447,110 +4438,118 @@ TEST_F(ManifestParserTest, StorageIsolationBadScope) {
44474438
}
44484439
}
44494440

4450-
class ManifestCaptureLinksParserTest : public ManifestParserTest {
4451-
public:
4452-
ManifestCaptureLinksParserTest() {
4453-
scoped_feature_list_.InitAndEnableFeature(
4454-
features::kWebAppEnableLinkCapturing);
4455-
}
4456-
4457-
private:
4458-
base::test::ScopedFeatureList scoped_feature_list_;
4459-
};
4460-
4461-
TEST_F(ManifestCaptureLinksParserTest, CaptureLinksParseRules) {
4462-
// Smoke test.
4463-
{
4464-
auto& manifest = ParseManifest(R"({ "capture_links": "none" })");
4465-
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kNone);
4466-
EXPECT_EQ(0u, GetErrorCount());
4467-
}
4441+
TEST_F(ManifestParserTest, CaptureLinksParseRules) {
44684442
{
4469-
auto& manifest = ParseManifest(R"({ "capture_links": ["new-client"] })");
4470-
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kNewClient);
4471-
EXPECT_EQ(0u, GetErrorCount());
4472-
}
4443+
ScopedWebAppLinkCapturingForTest feature(false);
44734444

4474-
// Empty array is fine.
4475-
{
4476-
auto& manifest = ParseManifest(R"({ "capture_links": [] })");
4445+
// Feature not enabled, should not be parsed.
4446+
auto& manifest = ParseManifest(R"({ "capture_links": "none" })");
44774447
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kUndefined);
44784448
EXPECT_EQ(0u, GetErrorCount());
44794449
}
44804450

4481-
// Unknown single string.
4482-
{
4483-
auto& manifest = ParseManifest(R"({ "capture_links": "unknown" })");
4484-
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kUndefined);
4485-
EXPECT_EQ(1u, GetErrorCount());
4486-
EXPECT_EQ("capture_links value 'unknown' ignored, unknown value.",
4487-
errors()[0]);
4488-
}
4489-
4490-
// First known value in array is used.
44914451
{
4492-
auto& manifest = ParseManifest(
4493-
R"({ "capture_links": ["none", "existing-client-navigate"] })");
4494-
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kNone);
4495-
EXPECT_EQ(0u, GetErrorCount());
4496-
}
4497-
{
4498-
auto& manifest = ParseManifest(R"({
4499-
"capture_links": [
4500-
"unknown",
4501-
"existing-client-navigate",
4502-
"also-unknown",
4503-
"none"
4504-
]
4505-
})");
4506-
EXPECT_EQ(manifest->capture_links,
4507-
mojom::blink::CaptureLinks::kExistingClientNavigate);
4508-
EXPECT_EQ(1u, GetErrorCount());
4509-
EXPECT_EQ("capture_links value 'unknown' ignored, unknown value.",
4510-
errors()[0]);
4511-
}
4512-
{
4513-
auto& manifest = ParseManifest(R"({
4514-
"capture_links": [
4515-
1234,
4516-
"new-client",
4517-
null,
4518-
"none"
4519-
]
4520-
})");
4521-
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kNewClient);
4522-
EXPECT_EQ(1u, GetErrorCount());
4523-
EXPECT_EQ("capture_links value '1234' ignored, string expected.",
4524-
errors()[0]);
4525-
}
4526-
4527-
// Don't parse if the property isn't a string or array of strings.
4528-
{
4529-
auto& manifest = ParseManifest(R"({ "capture_links": null })");
4530-
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kUndefined);
4531-
EXPECT_EQ(1u, GetErrorCount());
4532-
EXPECT_EQ(
4533-
"property 'capture_links' ignored, type string or array of strings "
4534-
"expected.",
4535-
errors()[0]);
4536-
}
4537-
{
4538-
auto& manifest = ParseManifest(R"({ "capture_links": 1234 })");
4539-
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kUndefined);
4540-
EXPECT_EQ(1u, GetErrorCount());
4541-
EXPECT_EQ(
4542-
"property 'capture_links' ignored, type string or array of strings "
4543-
"expected.",
4544-
errors()[0]);
4545-
}
4546-
{
4547-
auto& manifest = ParseManifest(R"({ "capture_links": [12, 34] })");
4548-
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kUndefined);
4549-
EXPECT_EQ(2u, GetErrorCount());
4550-
EXPECT_EQ("capture_links value '12' ignored, string expected.",
4551-
errors()[0]);
4552-
EXPECT_EQ("capture_links value '34' ignored, string expected.",
4553-
errors()[1]);
4452+
ScopedWebAppLinkCapturingForTest feature(true);
4453+
// Smoke test.
4454+
{
4455+
auto& manifest = ParseManifest(R"({ "capture_links": "none" })");
4456+
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kNone);
4457+
EXPECT_EQ(0u, GetErrorCount());
4458+
}
4459+
{
4460+
auto& manifest = ParseManifest(R"({ "capture_links": ["new-client"] })");
4461+
EXPECT_EQ(manifest->capture_links,
4462+
mojom::blink::CaptureLinks::kNewClient);
4463+
EXPECT_EQ(0u, GetErrorCount());
4464+
}
4465+
4466+
// Empty array is fine.
4467+
{
4468+
auto& manifest = ParseManifest(R"({ "capture_links": [] })");
4469+
EXPECT_EQ(manifest->capture_links,
4470+
mojom::blink::CaptureLinks::kUndefined);
4471+
EXPECT_EQ(0u, GetErrorCount());
4472+
}
4473+
4474+
// Unknown single string.
4475+
{
4476+
auto& manifest = ParseManifest(R"({ "capture_links": "unknown" })");
4477+
EXPECT_EQ(manifest->capture_links,
4478+
mojom::blink::CaptureLinks::kUndefined);
4479+
EXPECT_EQ(1u, GetErrorCount());
4480+
EXPECT_EQ("capture_links value 'unknown' ignored, unknown value.",
4481+
errors()[0]);
4482+
}
4483+
4484+
// First known value in array is used.
4485+
{
4486+
auto& manifest = ParseManifest(
4487+
R"({ "capture_links": ["none", "existing-client-navigate"] })");
4488+
EXPECT_EQ(manifest->capture_links, mojom::blink::CaptureLinks::kNone);
4489+
EXPECT_EQ(0u, GetErrorCount());
4490+
}
4491+
{
4492+
auto& manifest = ParseManifest(R"({
4493+
"capture_links": [
4494+
"unknown",
4495+
"existing-client-navigate",
4496+
"also-unknown",
4497+
"none"
4498+
]
4499+
})");
4500+
EXPECT_EQ(manifest->capture_links,
4501+
mojom::blink::CaptureLinks::kExistingClientNavigate);
4502+
EXPECT_EQ(1u, GetErrorCount());
4503+
EXPECT_EQ("capture_links value 'unknown' ignored, unknown value.",
4504+
errors()[0]);
4505+
}
4506+
{
4507+
auto& manifest = ParseManifest(R"({
4508+
"capture_links": [
4509+
1234,
4510+
"new-client",
4511+
null,
4512+
"none"
4513+
]
4514+
})");
4515+
EXPECT_EQ(manifest->capture_links,
4516+
mojom::blink::CaptureLinks::kNewClient);
4517+
EXPECT_EQ(1u, GetErrorCount());
4518+
EXPECT_EQ("capture_links value '1234' ignored, string expected.",
4519+
errors()[0]);
4520+
}
4521+
4522+
// Don't parse if the property isn't a string or array of strings.
4523+
{
4524+
auto& manifest = ParseManifest(R"({ "capture_links": null })");
4525+
EXPECT_EQ(manifest->capture_links,
4526+
mojom::blink::CaptureLinks::kUndefined);
4527+
EXPECT_EQ(1u, GetErrorCount());
4528+
EXPECT_EQ(
4529+
"property 'capture_links' ignored, type string or array of strings "
4530+
"expected.",
4531+
errors()[0]);
4532+
}
4533+
{
4534+
auto& manifest = ParseManifest(R"({ "capture_links": 1234 })");
4535+
EXPECT_EQ(manifest->capture_links,
4536+
mojom::blink::CaptureLinks::kUndefined);
4537+
EXPECT_EQ(1u, GetErrorCount());
4538+
EXPECT_EQ(
4539+
"property 'capture_links' ignored, type string or array of strings "
4540+
"expected.",
4541+
errors()[0]);
4542+
}
4543+
{
4544+
auto& manifest = ParseManifest(R"({ "capture_links": [12, 34] })");
4545+
EXPECT_EQ(manifest->capture_links,
4546+
mojom::blink::CaptureLinks::kUndefined);
4547+
EXPECT_EQ(2u, GetErrorCount());
4548+
EXPECT_EQ("capture_links value '12' ignored, string expected.",
4549+
errors()[0]);
4550+
EXPECT_EQ("capture_links value '34' ignored, string expected.",
4551+
errors()[1]);
4552+
}
45544553
}
45554554
}
45564555

0 commit comments

Comments
 (0)