| // Copyright 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "base/strings/string_number_conversions.h" |
| #include "chrome/common/extensions/manifest_tests/chrome_manifest_test.h" |
| #include "extensions/common/error_utils.h" |
| #include "extensions/common/manifest_constants.h" |
| #include "extensions/common/manifest_handlers/webview_info.h" |
| |
| using extensions::ErrorUtils; |
| using extensions::Extension; |
| using extensions::WebviewInfo; |
| namespace errors = extensions::manifest_errors; |
| |
| class WebviewAccessibleResourcesManifestTest : public ChromeManifestTest { |
| }; |
| |
| TEST_F(WebviewAccessibleResourcesManifestTest, WebviewAccessibleResources) { |
| // Manifest version 2 with webview accessible resources specified. |
| scoped_refptr<Extension> extension( |
| LoadAndExpectSuccess("webview_accessible_resources_1.json")); |
| |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "fail", "a.html")); |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "fail", "b.html")); |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "fail", "c.html")); |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "fail", "d.html")); |
| |
| EXPECT_TRUE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "foo", "a.html")); |
| EXPECT_TRUE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "foo", "b.html")); |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "foo", "c.html")); |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "foo", "d.html")); |
| |
| EXPECT_TRUE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "bar", "a.html")); |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "bar", "b.html")); |
| EXPECT_TRUE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "bar", "c.html")); |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "bar", "d.html")); |
| |
| EXPECT_TRUE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "foobar", "a.html")); |
| EXPECT_TRUE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "foobar", "b.html")); |
| EXPECT_TRUE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "foobar", "c.html")); |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(extension.get(), |
| "foobar", "d.html")); |
| |
| EXPECT_FALSE(WebviewInfo::IsResourceWebviewAccessible(nullptr, |
| "foobar", "a.html")); |
| } |
| |
| TEST_F(WebviewAccessibleResourcesManifestTest, InvalidManifest) { |
| LoadAndExpectError("webview_accessible_resources_invalid1.json", |
| errors::kInvalidWebview); |
| LoadAndExpectError("webview_accessible_resources_invalid2.json", |
| errors::kInvalidWebviewPartitionsList); |
| LoadAndExpectError("webview_accessible_resources_invalid3.json", |
| errors::kInvalidWebviewPartitionsList); |
| LoadAndExpectError("webview_accessible_resources_invalid4.json", |
| ErrorUtils::FormatErrorMessage( |
| errors::kInvalidWebviewPartition, base::IntToString(0))); |
| LoadAndExpectError("webview_accessible_resources_invalid5.json", |
| errors::kInvalidWebviewPartitionName); |
| LoadAndExpectError("webview_accessible_resources_invalid6.json", |
| errors::kInvalidWebviewAccessibleResourcesList); |
| LoadAndExpectError("webview_accessible_resources_invalid7.json", |
| errors::kInvalidWebviewAccessibleResourcesList); |
| LoadAndExpectError("webview_accessible_resources_invalid8.json", |
| ErrorUtils::FormatErrorMessage( |
| errors::kInvalidWebviewAccessibleResource, base::IntToString(0))); |
| } |