OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h" | 5 #include "chrome/common/extensions/manifest_tests/extension_manifest_test.h" |
6 | 6 |
7 #include "base/file_path.h" | 7 #include "base/file_path.h" |
8 #include "base/file_util.h" | 8 #include "base/file_util.h" |
9 #include "base/values.h" | 9 #include "base/values.h" |
10 #include "base/json/json_file_value_serializer.h" | 10 #include "base/json/json_file_value_serializer.h" |
11 #include "base/path_service.h" | 11 #include "base/path_service.h" |
12 #include "chrome/common/chrome_paths.h" | 12 #include "chrome/common/chrome_paths.h" |
13 #include "chrome/common/extensions/extension.h" | |
14 #include "chrome/common/extensions/extension_l10n_util.h" | 13 #include "chrome/common/extensions/extension_l10n_util.h" |
15 #include "ui/base/l10n/l10n_util.h" | 14 #include "ui/base/l10n/l10n_util.h" |
16 | 15 |
17 using extensions::Extension; | 16 using extensions::Extension; |
18 | 17 |
19 ExtensionManifestTest::ExtensionManifestTest() | 18 ExtensionManifestTest::ExtensionManifestTest() |
20 : enable_apps_(true), | 19 : enable_apps_(true), |
21 // UNKNOWN == trunk. | 20 // UNKNOWN == trunk. |
22 current_channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {} | 21 current_channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {} |
23 | 22 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
82 return manifest_; | 81 return manifest_; |
83 | 82 |
84 manifest_ = LoadManifestFile(name_, error); | 83 manifest_ = LoadManifestFile(name_, error); |
85 manifest_holder_.reset(manifest_); | 84 manifest_holder_.reset(manifest_); |
86 return manifest_; | 85 return manifest_; |
87 } | 86 } |
88 | 87 |
89 scoped_refptr<Extension> ExtensionManifestTest::LoadExtension( | 88 scoped_refptr<Extension> ExtensionManifestTest::LoadExtension( |
90 const Manifest& manifest, | 89 const Manifest& manifest, |
91 std::string* error, | 90 std::string* error, |
92 Extension::Location location, | 91 extensions::Manifest::Location location, |
93 int flags) { | 92 int flags) { |
94 DictionaryValue* value = manifest.GetManifest(error); | 93 DictionaryValue* value = manifest.GetManifest(error); |
95 if (!value) | 94 if (!value) |
96 return NULL; | 95 return NULL; |
97 FilePath path; | 96 FilePath path; |
98 PathService::Get(chrome::DIR_TEST_DATA, &path); | 97 PathService::Get(chrome::DIR_TEST_DATA, &path); |
99 path = path.AppendASCII("extensions").AppendASCII("manifest_tests"); | 98 path = path.AppendASCII("extensions").AppendASCII("manifest_tests"); |
100 return Extension::Create(path.DirName(), location, *value, flags, error); | 99 return Extension::Create(path.DirName(), location, *value, flags, error); |
101 } | 100 } |
102 | 101 |
103 scoped_refptr<Extension> ExtensionManifestTest::LoadAndExpectSuccess( | 102 scoped_refptr<Extension> ExtensionManifestTest::LoadAndExpectSuccess( |
104 const Manifest& manifest, | 103 const Manifest& manifest, |
105 Extension::Location location, | 104 extensions::Manifest::Location location, |
106 int flags) { | 105 int flags) { |
107 std::string error; | 106 std::string error; |
108 scoped_refptr<Extension> extension = | 107 scoped_refptr<Extension> extension = |
109 LoadExtension(manifest, &error, location, flags); | 108 LoadExtension(manifest, &error, location, flags); |
110 EXPECT_TRUE(extension) << manifest.name(); | 109 EXPECT_TRUE(extension) << manifest.name(); |
111 EXPECT_EQ("", error) << manifest.name(); | 110 EXPECT_EQ("", error) << manifest.name(); |
112 return extension; | 111 return extension; |
113 } | 112 } |
114 | 113 |
115 scoped_refptr<Extension> ExtensionManifestTest::LoadAndExpectSuccess( | 114 scoped_refptr<Extension> ExtensionManifestTest::LoadAndExpectSuccess( |
116 char const* manifest_name, | 115 char const* manifest_name, |
117 Extension::Location location, | 116 extensions::Manifest::Location location, |
118 int flags) { | 117 int flags) { |
119 return LoadAndExpectSuccess(Manifest(manifest_name), location, flags); | 118 return LoadAndExpectSuccess(Manifest(manifest_name), location, flags); |
120 } | 119 } |
121 | 120 |
122 scoped_refptr<Extension> ExtensionManifestTest::LoadAndExpectWarning( | 121 scoped_refptr<Extension> ExtensionManifestTest::LoadAndExpectWarning( |
123 const Manifest& manifest, | 122 const Manifest& manifest, |
124 const std::string& expected_warning, | 123 const std::string& expected_warning, |
125 Extension::Location location, | 124 extensions::Manifest::Location location, |
126 int flags) { | 125 int flags) { |
127 std::string error; | 126 std::string error; |
128 scoped_refptr<Extension> extension = | 127 scoped_refptr<Extension> extension = |
129 LoadExtension(manifest, &error, location, flags); | 128 LoadExtension(manifest, &error, location, flags); |
130 EXPECT_TRUE(extension) << manifest.name(); | 129 EXPECT_TRUE(extension) << manifest.name(); |
131 EXPECT_EQ("", error) << manifest.name(); | 130 EXPECT_EQ("", error) << manifest.name(); |
132 EXPECT_EQ(1u, extension->install_warnings().size()); | 131 EXPECT_EQ(1u, extension->install_warnings().size()); |
133 EXPECT_EQ(expected_warning, extension->install_warnings()[0].message); | 132 EXPECT_EQ(expected_warning, extension->install_warnings()[0].message); |
134 return extension; | 133 return extension; |
135 } | 134 } |
136 | 135 |
137 scoped_refptr<Extension> ExtensionManifestTest::LoadAndExpectWarning( | 136 scoped_refptr<Extension> ExtensionManifestTest::LoadAndExpectWarning( |
138 char const* manifest_name, | 137 char const* manifest_name, |
139 const std::string& expected_warning, | 138 const std::string& expected_warning, |
140 Extension::Location location, | 139 extensions::Manifest::Location location, |
141 int flags) { | 140 int flags) { |
142 return LoadAndExpectWarning( | 141 return LoadAndExpectWarning( |
143 Manifest(manifest_name), expected_warning, location, flags); | 142 Manifest(manifest_name), expected_warning, location, flags); |
144 } | 143 } |
145 | 144 |
146 void ExtensionManifestTest::VerifyExpectedError( | 145 void ExtensionManifestTest::VerifyExpectedError( |
147 Extension* extension, | 146 Extension* extension, |
148 const std::string& name, | 147 const std::string& name, |
149 const std::string& error, | 148 const std::string& error, |
150 const std::string& expected_error) { | 149 const std::string& expected_error) { |
151 EXPECT_FALSE(extension) << | 150 EXPECT_FALSE(extension) << |
152 "Expected failure loading extension '" << name << | 151 "Expected failure loading extension '" << name << |
153 "', but didn't get one."; | 152 "', but didn't get one."; |
154 EXPECT_TRUE(MatchPattern(error, expected_error)) << name << | 153 EXPECT_TRUE(MatchPattern(error, expected_error)) << name << |
155 " expected '" << expected_error << "' but got '" << error << "'"; | 154 " expected '" << expected_error << "' but got '" << error << "'"; |
156 } | 155 } |
157 | 156 |
158 void ExtensionManifestTest::LoadAndExpectError( | 157 void ExtensionManifestTest::LoadAndExpectError( |
159 const Manifest& manifest, | 158 const Manifest& manifest, |
160 const std::string& expected_error, | 159 const std::string& expected_error, |
161 Extension::Location location, | 160 extensions::Manifest::Location location, |
162 int flags) { | 161 int flags) { |
163 std::string error; | 162 std::string error; |
164 scoped_refptr<Extension> extension( | 163 scoped_refptr<Extension> extension( |
165 LoadExtension(manifest, &error, location, flags)); | 164 LoadExtension(manifest, &error, location, flags)); |
166 VerifyExpectedError(extension.get(), manifest.name(), error, | 165 VerifyExpectedError(extension.get(), manifest.name(), error, |
167 expected_error); | 166 expected_error); |
168 } | 167 } |
169 | 168 |
170 void ExtensionManifestTest::LoadAndExpectError( | 169 void ExtensionManifestTest::LoadAndExpectError( |
171 char const* manifest_name, | 170 char const* manifest_name, |
172 const std::string& expected_error, | 171 const std::string& expected_error, |
173 Extension::Location location, | 172 extensions::Manifest::Location location, |
174 int flags) { | 173 int flags) { |
175 return LoadAndExpectError( | 174 return LoadAndExpectError( |
176 Manifest(manifest_name), expected_error, location, flags); | 175 Manifest(manifest_name), expected_error, location, flags); |
177 } | 176 } |
178 | 177 |
179 void ExtensionManifestTest::AddPattern(extensions::URLPatternSet* extent, | 178 void ExtensionManifestTest::AddPattern(extensions::URLPatternSet* extent, |
180 const std::string& pattern) { | 179 const std::string& pattern) { |
181 int schemes = URLPattern::SCHEME_ALL; | 180 int schemes = URLPattern::SCHEME_ALL; |
182 extent->AddPattern(URLPattern(schemes, pattern)); | 181 extent->AddPattern(URLPattern(schemes, pattern)); |
183 } | 182 } |
184 | 183 |
185 ExtensionManifestTest::Testcase::Testcase(std::string manifest_filename, | 184 ExtensionManifestTest::Testcase::Testcase( |
186 std::string expected_error, | 185 std::string manifest_filename, |
187 Extension::Location location, | 186 std::string expected_error, |
188 int flags) | 187 extensions::Manifest::Location location, |
| 188 int flags) |
189 : manifest_filename_(manifest_filename), | 189 : manifest_filename_(manifest_filename), |
190 expected_error_(expected_error), | 190 expected_error_(expected_error), |
191 location_(location), flags_(flags) { | 191 location_(location), flags_(flags) { |
192 } | 192 } |
193 | 193 |
194 ExtensionManifestTest::Testcase::Testcase(std::string manifest_filename, | 194 ExtensionManifestTest::Testcase::Testcase(std::string manifest_filename, |
195 std::string expected_error) | 195 std::string expected_error) |
196 : manifest_filename_(manifest_filename), | 196 : manifest_filename_(manifest_filename), |
197 expected_error_(expected_error), | 197 expected_error_(expected_error), |
198 location_(Extension::INTERNAL), | 198 location_(extensions::Manifest::INTERNAL), |
199 flags_(Extension::NO_FLAGS) { | 199 flags_(Extension::NO_FLAGS) { |
200 } | 200 } |
201 | 201 |
202 ExtensionManifestTest::Testcase::Testcase(std::string manifest_filename) | 202 ExtensionManifestTest::Testcase::Testcase(std::string manifest_filename) |
203 : manifest_filename_(manifest_filename), | 203 : manifest_filename_(manifest_filename), |
204 expected_error_(""), | 204 expected_error_(""), |
205 location_(Extension::INTERNAL), | 205 location_(extensions::Manifest::INTERNAL), |
206 flags_(Extension::NO_FLAGS) { | 206 flags_(Extension::NO_FLAGS) { |
207 } | 207 } |
208 | 208 |
209 ExtensionManifestTest::Testcase::Testcase(std::string manifest_filename, | 209 ExtensionManifestTest::Testcase::Testcase( |
210 Extension::Location location, | 210 std::string manifest_filename, |
211 int flags) | 211 extensions::Manifest::Location location, |
| 212 int flags) |
212 : manifest_filename_(manifest_filename), | 213 : manifest_filename_(manifest_filename), |
213 expected_error_(""), | 214 expected_error_(""), |
214 location_(location), | 215 location_(location), |
215 flags_(flags) { | 216 flags_(flags) { |
216 } | 217 } |
217 | 218 |
218 void ExtensionManifestTest::RunTestcases(const Testcase* testcases, | 219 void ExtensionManifestTest::RunTestcases(const Testcase* testcases, |
219 size_t num_testcases, | 220 size_t num_testcases, |
220 EXPECT_TYPE type) { | 221 EXPECT_TYPE type) { |
221 switch (type) { | 222 switch (type) { |
(...skipping 15 matching lines...) Expand all Loading... |
237 break; | 238 break; |
238 case EXPECT_TYPE_SUCCESS: | 239 case EXPECT_TYPE_SUCCESS: |
239 for (size_t i = 0; i < num_testcases; ++i) { | 240 for (size_t i = 0; i < num_testcases; ++i) { |
240 LoadAndExpectSuccess(testcases[i].manifest_filename_.c_str(), | 241 LoadAndExpectSuccess(testcases[i].manifest_filename_.c_str(), |
241 testcases[i].location_, | 242 testcases[i].location_, |
242 testcases[i].flags_); | 243 testcases[i].flags_); |
243 } | 244 } |
244 break; | 245 break; |
245 } | 246 } |
246 } | 247 } |
OLD | NEW |