1 // Copyright 2014 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "base/strings/string_number_conversions.h" 6 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h" 7 #include "extensions/common/error_utils.h" 8 #include "extensions/common/manifest_constants.h" 9 #include "extensions/common/manifest_handlers/webview_info.h" 10 11 using extensions::ErrorUtils; 12 using extensions::Extension; 13 using extensions::WebviewInfo; 14 namespace errors = extensions::manifest_errors; 15 16 class WebviewAccessibleResourcesManifestTest : public ExtensionManifestTest { 17 }; 18 19 TEST_F(WebviewAccessibleResourcesManifestTest, WebviewAccessibleResources) { 20 // Manifest version 2 with webview accessible resources specified. 21 scoped_refptr<Extension> extension1( 22 LoadAndExpectSuccess("webview_accessible_resources_1.json")); 23 24 EXPECT_FALSE( 25 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 26 "fail", 27 "a.html")); 28 EXPECT_FALSE( 29 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 30 "fail", 31 "b.html")); 32 EXPECT_FALSE( 33 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 34 "fail", 35 "c.html")); 36 EXPECT_FALSE( 37 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 38 "fail", 39 "d.html")); 40 41 EXPECT_TRUE( 42 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 43 "foo", 44 "a.html")); 45 EXPECT_TRUE( 46 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 47 "foo", 48 "b.html")); 49 EXPECT_FALSE( 50 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 51 "foo", 52 "c.html")); 53 EXPECT_FALSE( 54 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 55 "foo", 56 "d.html")); 57 58 EXPECT_TRUE( 59 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 60 "bar", 61 "a.html")); 62 EXPECT_FALSE( 63 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 64 "bar", 65 "b.html")); 66 EXPECT_TRUE( 67 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 68 "bar", 69 "c.html")); 70 EXPECT_FALSE( 71 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 72 "bar", 73 "d.html")); 74 75 EXPECT_TRUE( 76 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 77 "foobar", 78 "a.html")); 79 EXPECT_TRUE( 80 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 81 "foobar", 82 "b.html")); 83 EXPECT_TRUE( 84 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 85 "foobar", 86 "c.html")); 87 EXPECT_FALSE( 88 WebviewInfo::IsResourceWebviewAccessible(extension1.get(), 89 "foobar", 90 "d.html")); 91 } 92 93 TEST_F(WebviewAccessibleResourcesManifestTest, InvalidManifest) { 94 LoadAndExpectError("webview_accessible_resources_invalid1.json", 95 errors::kInvalidWebview); 96 LoadAndExpectError("webview_accessible_resources_invalid2.json", 97 errors::kInvalidWebviewPartitionsList); 98 LoadAndExpectError("webview_accessible_resources_invalid3.json", 99 errors::kInvalidWebviewPartitionsList); 100 LoadAndExpectError("webview_accessible_resources_invalid4.json", 101 ErrorUtils::FormatErrorMessage( 102 errors::kInvalidWebviewPartition, base::IntToString(0))); 103 LoadAndExpectError("webview_accessible_resources_invalid5.json", 104 errors::kInvalidWebviewPartitionName); 105 LoadAndExpectError("webview_accessible_resources_invalid6.json", 106 errors::kInvalidWebviewAccessibleResourcesList); 107 LoadAndExpectError("webview_accessible_resources_invalid7.json", 108 errors::kInvalidWebviewAccessibleResourcesList); 109 LoadAndExpectError("webview_accessible_resources_invalid8.json", 110 ErrorUtils::FormatErrorMessage( 111 errors::kInvalidWebviewAccessibleResource, base::IntToString(0))); 112 } 113