OLD | NEW |
---|---|
(Empty) | |
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/files/file_path.h" | |
6 #include "base/test/values_test_util.h" | |
7 #include "chrome/browser/extensions/api/declarative_content/content_action.h" | |
8 #include "chrome/browser/extensions/extension_browsertest.h" | |
9 #include "chrome/browser/extensions/test_extension_dir.h" | |
10 #include "testing/gmock/include/gmock/gmock.h" | |
11 #include "testing/gtest/include/gtest/gtest.h" | |
12 | |
13 namespace extensions { | |
14 namespace { | |
15 | |
16 const char kRequestContentScriptManifest[] = | |
17 "{\n" | |
18 " \"name\": \"Request Content Script browsertest\",\n" | |
19 " \"version\": \"0.1\",\n" | |
20 " \"manifest_version\": 2,\n" | |
21 " \"description\": \n" | |
22 " \"browser test for the declarativeContentRequestContentScript\",\n" | |
23 " \"background\": {\n" | |
24 " \"scripts\": [\"background.js\"]\n" | |
25 " },\n" | |
26 " \"permissions\": [\n" | |
27 " \"declarativeContent\"\n" | |
28 " ]\n" | |
29 "}\n"; | |
30 | |
31 class RequestContentScriptTest : public ExtensionBrowserTest { | |
32 public: | |
33 void InitBasicExtensionFiles() { | |
34 ext_dir().WriteManifest(kRequestContentScriptManifest); | |
35 ext_dir().WriteFile(FILE_PATH_LITERAL("background.js"), ""); | |
36 } | |
37 | |
38 const Extension* LoadTestExtension() { | |
39 const Extension* extension = | |
40 LoadExtension(ext_dir().unpacked_path()); | |
41 return extension; | |
42 } | |
43 | |
44 TestExtensionDir& ext_dir() { return ext_dir_; } | |
45 | |
46 private: | |
47 TestExtensionDir ext_dir_; | |
48 }; | |
49 | |
50 IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, MissingScripts) { | |
Jeffrey Yasskin
2014/08/22 01:12:24
These look like they just duplicate tests in conte
Mark Dittmer
2014/08/22 19:59:19
I originally implemented these as unittest, but th
| |
51 InitBasicExtensionFiles(); | |
52 const Extension* extension = LoadTestExtension(); | |
53 ASSERT_TRUE(extension); | |
54 | |
55 std::string error; | |
56 bool bad_message = false; | |
57 scoped_refptr<const ContentAction> result = ContentAction::Create( | |
58 profile(), | |
59 extension, | |
60 *base::test::ParseJson( | |
61 "{\n" | |
62 " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" | |
63 " \"allFrames\": true,\n" | |
64 " \"matchAboutBlank\": true\n" | |
65 "}"), | |
66 &error, | |
67 &bad_message); | |
68 EXPECT_THAT(error, testing::HasSubstr("Missing parameter is required")); | |
69 EXPECT_FALSE(bad_message); | |
70 ASSERT_FALSE(result.get()); | |
71 } | |
72 | |
73 IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, CSS) { | |
74 InitBasicExtensionFiles(); | |
75 ext_dir().WriteFile(FILE_PATH_LITERAL("style.css"), ""); | |
76 const Extension* extension = LoadTestExtension(); | |
77 ASSERT_TRUE(extension); | |
78 | |
79 std::string error; | |
80 bool bad_message = false; | |
81 scoped_refptr<const ContentAction> result = ContentAction::Create( | |
82 profile(), | |
83 extension, | |
84 *base::test::ParseJson( | |
85 "{\n" | |
86 " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" | |
87 " \"css\": [\"style.css\"]\n" | |
88 "}"), | |
89 &error, | |
90 &bad_message); | |
91 EXPECT_EQ("", error); | |
92 EXPECT_FALSE(bad_message); | |
93 ASSERT_TRUE(result.get()); | |
94 EXPECT_EQ(ContentAction::ACTION_REQUEST_CONTENT_SCRIPT, result->GetType()); | |
95 } | |
96 | |
97 IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, JS) { | |
98 InitBasicExtensionFiles(); | |
99 ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); | |
100 const Extension* extension = LoadTestExtension(); | |
101 ASSERT_TRUE(extension); | |
102 | |
103 std::string error; | |
104 bool bad_message = false; | |
105 scoped_refptr<const ContentAction> result = ContentAction::Create( | |
106 profile(), | |
107 extension, | |
108 *base::test::ParseJson( | |
109 "{\n" | |
110 " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" | |
111 " \"js\": [\"script.js\"]\n" | |
112 "}"), | |
113 &error, | |
114 &bad_message); | |
115 EXPECT_EQ("", error); | |
116 EXPECT_FALSE(bad_message); | |
117 ASSERT_TRUE(result.get()); | |
118 EXPECT_EQ(ContentAction::ACTION_REQUEST_CONTENT_SCRIPT, result->GetType()); | |
119 } | |
120 | |
121 IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, CSSBadType) { | |
122 InitBasicExtensionFiles(); | |
123 ext_dir().WriteFile(FILE_PATH_LITERAL("style.css"), ""); | |
124 const Extension* extension = LoadTestExtension(); | |
125 ASSERT_TRUE(extension); | |
126 | |
127 std::string error; | |
128 bool bad_message = false; | |
129 scoped_refptr<const ContentAction> result = ContentAction::Create( | |
130 profile(), | |
131 extension, | |
132 *base::test::ParseJson( | |
133 "{\n" | |
134 " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" | |
135 " \"css\": \"style.css\"\n" | |
136 "}"), | |
137 &error, | |
138 &bad_message); | |
139 EXPECT_TRUE(bad_message); | |
140 ASSERT_FALSE(result.get()); | |
141 } | |
142 | |
143 IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, JSBadType) { | |
144 InitBasicExtensionFiles(); | |
145 ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); | |
146 const Extension* extension = LoadTestExtension(); | |
147 ASSERT_TRUE(extension); | |
148 | |
149 std::string error; | |
150 bool bad_message = false; | |
151 scoped_refptr<const ContentAction> result = ContentAction::Create( | |
152 profile(), | |
153 extension, | |
154 *base::test::ParseJson( | |
155 "{\n" | |
156 " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" | |
157 " \"js\": \"script.js\"\n" | |
158 "}"), | |
159 &error, | |
160 &bad_message); | |
161 EXPECT_TRUE(bad_message); | |
162 ASSERT_FALSE(result.get()); | |
163 } | |
164 | |
165 IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, AllFrames) { | |
166 InitBasicExtensionFiles(); | |
167 ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); | |
168 const Extension* extension = LoadTestExtension(); | |
169 ASSERT_TRUE(extension); | |
170 | |
171 std::string error; | |
172 bool bad_message = false; | |
173 scoped_refptr<const ContentAction> result = ContentAction::Create( | |
174 profile(), | |
175 extension, | |
176 *base::test::ParseJson( | |
177 "{\n" | |
178 " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" | |
179 " \"js\": [\"script.js\"],\n" | |
180 " \"allFrames\": true\n" | |
181 "}"), | |
182 &error, | |
183 &bad_message); | |
184 EXPECT_EQ("", error); | |
185 EXPECT_FALSE(bad_message); | |
186 ASSERT_TRUE(result.get()); | |
187 EXPECT_EQ(ContentAction::ACTION_REQUEST_CONTENT_SCRIPT, result->GetType()); | |
188 } | |
189 | |
190 IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, MatchAboutBlank) { | |
191 InitBasicExtensionFiles(); | |
192 ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); | |
193 const Extension* extension = LoadTestExtension(); | |
194 ASSERT_TRUE(extension); | |
195 | |
196 std::string error; | |
197 bool bad_message = false; | |
198 scoped_refptr<const ContentAction> result = ContentAction::Create( | |
199 profile(), | |
200 extension, | |
201 *base::test::ParseJson( | |
202 "{\n" | |
203 " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" | |
204 " \"js\": [\"script.js\"],\n" | |
205 " \"matchAboutBlank\": true\n" | |
206 "}"), | |
207 &error, | |
208 &bad_message); | |
209 EXPECT_EQ("", error); | |
210 EXPECT_FALSE(bad_message); | |
211 ASSERT_TRUE(result.get()); | |
212 EXPECT_EQ(ContentAction::ACTION_REQUEST_CONTENT_SCRIPT, result->GetType()); | |
213 } | |
214 | |
215 IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, AllFramesBadType) { | |
216 InitBasicExtensionFiles(); | |
217 ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); | |
218 const Extension* extension = LoadTestExtension(); | |
219 ASSERT_TRUE(extension); | |
220 | |
221 std::string error; | |
222 bool bad_message = false; | |
223 scoped_refptr<const ContentAction> result = ContentAction::Create( | |
224 profile(), | |
225 extension, | |
226 *base::test::ParseJson( | |
227 "{\n" | |
228 " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" | |
229 " \"js\": [\"script.js\"],\n" | |
230 " \"allFrames\": null\n" | |
231 "}"), | |
232 &error, | |
233 &bad_message); | |
234 EXPECT_TRUE(bad_message); | |
235 ASSERT_FALSE(result.get()); | |
236 } | |
237 | |
238 IN_PROC_BROWSER_TEST_F(RequestContentScriptTest, MatchAboutBlankBadType) { | |
239 InitBasicExtensionFiles(); | |
240 ext_dir().WriteFile(FILE_PATH_LITERAL("script.js"), ""); | |
241 const Extension* extension = LoadTestExtension(); | |
242 ASSERT_TRUE(extension); | |
243 | |
244 std::string error; | |
245 bool bad_message = false; | |
246 scoped_refptr<const ContentAction> result = ContentAction::Create( | |
247 profile(), | |
248 extension, | |
249 *base::test::ParseJson( | |
250 "{\n" | |
251 " \"instanceType\": \"declarativeContent.RequestContentScript\",\n" | |
252 " \"js\": [\"script.js\"],\n" | |
253 " \"matchAboutBlank\": null\n" | |
254 "}"), | |
255 &error, | |
256 &bad_message); | |
257 EXPECT_TRUE(bad_message); | |
258 ASSERT_FALSE(result.get()); | |
259 } | |
260 | |
261 } // namespace | |
262 } // namespace extensions | |
OLD | NEW |