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