1// Copyright (c) 2012 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 "chrome/common/extensions/extension_manifest_constants.h"
6#include "chrome/common/extensions/manifest_tests/extension_manifest_test.h"
7#include "chrome/common/extensions/web_accessible_resources_handler.h"
8#include "testing/gtest/include/gtest/gtest.h"
9
10using extensions::Extension;
11using extensions::WebAccessibleResourcesInfo;
12
13class WebAccessibleResourcesManifestTest : public ExtensionManifestTest {
14};
15
16TEST_F(WebAccessibleResourcesManifestTest, WebAccessibleResources) {
17  // Manifest version 2 with web accessible resources specified.
18  scoped_refptr<Extension> extension1(
19      LoadAndExpectSuccess("web_accessible_resources_1.json"));
20
21  // Manifest version 2 with no web accessible resources.
22  scoped_refptr<Extension> extension2(
23      LoadAndExpectSuccess("web_accessible_resources_2.json"));
24
25  // Default manifest version with web accessible resources specified.
26  scoped_refptr<Extension> extension3(
27      LoadAndExpectSuccess("web_accessible_resources_3.json"));
28
29  // Default manifest version with no web accessible resources.
30  scoped_refptr<Extension> extension4(
31      LoadAndExpectSuccess("web_accessible_resources_4.json"));
32
33  // Default manifest version with wildcard web accessible resource.
34  scoped_refptr<Extension> extension5(
35      LoadAndExpectSuccess("web_accessible_resources_5.json"));
36
37  // Default manifest version with wildcard with specific path and extension.
38  scoped_refptr<Extension> extension6(
39      LoadAndExpectSuccess("web_accessible_resources_6.json"));
40
41  EXPECT_TRUE(
42      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension1.get()));
43  EXPECT_FALSE(
44      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension2.get()));
45  EXPECT_TRUE(
46      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension3.get()));
47  EXPECT_FALSE(
48      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension4.get()));
49  EXPECT_TRUE(
50      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension5.get()));
51  EXPECT_TRUE(
52      WebAccessibleResourcesInfo::HasWebAccessibleResources(extension6.get()));
53
54  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
55      extension1.get(), "test"));
56  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
57      extension1.get(), "none"));
58
59  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
60      extension2.get(), "test"));
61
62  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
63      extension3.get(), "test"));
64  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
65      extension3.get(), "none"));
66
67  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
68      extension4.get(), "test"));
69  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
70      extension4.get(), "none"));
71
72  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
73      extension5.get(), "anything"));
74  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
75      extension5.get(), "path/anything"));
76
77  EXPECT_TRUE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
78      extension6.get(), "path/anything.ext"));
79  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
80      extension6.get(), "anything.ext"));
81  EXPECT_FALSE(WebAccessibleResourcesInfo::IsResourceWebAccessible(
82      extension6.get(), "path/anything.badext"));
83}
84