Commit 9ce071e2 authored by Solomon Kinard's avatar Solomon Kinard Committed by Chromium LUCI CQ

[Extensions][web_accessible_resources] Add wildcard test for clarity.

This should make it easier to for casual readers to see which wildcards
are allowed. Reference:
https://developer.chrome.com/docs/extensions/mv2/match_patterns/

Bug: 1133624
Change-Id: Ifd5b26e7b052f07c62dc0846cff4dfe922d52134
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2613512
Commit-Queue: Solomon Kinard <solomonkinard@chromium.org>
Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#843313}
parent 657104c8
......@@ -17,10 +17,10 @@ class WebAccessibleResourcesManifestTest : public ChromeManifestTest {
int manifest_version = 3) {
constexpr char kManifestStub[] =
R"({
"name": "Test",
"version": "0.1",
"manifest_version": %d,
"web_accessible_resources": %s
"name": "Test",
"version": "0.1",
"manifest_version": %d,
"web_accessible_resources": %s
})";
base::Value manifest_value = base::test::ParseJson(base::StringPrintf(
kManifestStub, manifest_version, web_accessible_resources.c_str()));
......@@ -225,12 +225,13 @@ TEST_F(WebAccessibleResourcesManifestTest, WebAccessibleResourcesV3Invalid) {
// Succeed if site requesting resource exists in matches.
TEST_F(WebAccessibleResourcesManifestTest,
WebAccessibleResourcesOriginRequestingResourceExistsInMatches) {
scoped_refptr<Extension> extension(LoadAndExpectSuccess(GetManifestData(R"([
{
"resources": ["test"],
"matches": ["https://allowed.example/*"]
}
])")));
scoped_refptr<Extension> extension(LoadAndExpectSuccess(GetManifestData(
R"([
{
"resources": ["test"],
"matches": ["https://allowed.example/*"]
}
])")));
EXPECT_TRUE(
WebAccessibleResourcesInfo::HasWebAccessibleResources(extension.get()));
EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
......@@ -252,7 +253,7 @@ TEST_F(WebAccessibleResourcesManifestTest,
"resources": ["test"],
"matches": ["https://error.example/*"],
}
])";
])";
LoadAndExpectError(GetManifestData(kWebAccessibleResources, 2),
"Invalid value for 'web_accessible_resources[0]'. Value "
"is not a string.");
......@@ -274,16 +275,16 @@ TEST_F(WebAccessibleResourcesManifestTest,
"abcdefghijklmnopabcdefghijklmnop") {
constexpr char kManifestStub[] =
R"({
"name": "Test",
"version": "0.1",
"manifest_version": 3,
"web_accessible_resources": [
{
"resources": ["test"],
"extension_ids": ["%s"]
}
]
})";
"name": "Test",
"version": "0.1",
"manifest_version": 3,
"web_accessible_resources": [
{
"resources": ["test"],
"extension_ids": ["%s"]
}
]
})";
base::Value manifest_value = base::test::ParseJson(
base::StringPrintf(kManifestStub, extension_id.c_str()));
EXPECT_EQ(base::Value::Type::DICTIONARY, manifest_value.type());
......@@ -301,3 +302,36 @@ TEST_F(WebAccessibleResourcesManifestTest,
EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
extension1.get(), "test", initiator_origin));
}
// Tests wildcards
TEST_F(WebAccessibleResourcesManifestTest, WebAccessibleResourcesWildcard) {
struct {
const char* title;
const char* web_accessible_resources;
} test_cases[] = {
{"Succeed if text based wildcard is used.",
R"([
{
"resources": ["test"],
"matches": ["<all_urls>"]
}
])"},
{"Succeed if asterisk based wildcard is used.",
R"([
{
"resources": ["test"],
"matches": ["*://*/*"]
}
])"},
};
for (const auto& test_case : test_cases) {
SCOPED_TRACE(base::StringPrintf("Error: '%s'", test_case.title));
scoped_refptr<Extension> extension(LoadAndExpectSuccess(
GetManifestData(test_case.web_accessible_resources)));
EXPECT_TRUE(
WebAccessibleResourcesInfo::HasWebAccessibleResources(extension.get()));
EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
extension.get(), "test",
url::Origin::Create(GURL("https://allowed.example"))));
}
}
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