Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(435)

Side by Side Diff: chrome/browser/extensions/component_loader_unittest.cc

Issue 11014009: Beginnings of the script bubble. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: ready to land Created 8 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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 <string> 5 #include <string>
6 6
7 #include "chrome/browser/extensions/component_loader.h" 7 #include "chrome/browser/extensions/component_loader.h"
8 8
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after
117 return test_data_dir.AppendASCII("extensions"); 117 return test_data_dir.AppendASCII("extensions");
118 } 118 }
119 }; 119 };
120 120
121 TEST_F(ComponentLoaderTest, ParseManifest) { 121 TEST_F(ComponentLoaderTest, ParseManifest) {
122 scoped_ptr<DictionaryValue> manifest; 122 scoped_ptr<DictionaryValue> manifest;
123 123
124 // Test invalid JSON. 124 // Test invalid JSON.
125 manifest.reset( 125 manifest.reset(
126 component_loader_.ParseManifest("{ 'test': 3 } invalid")); 126 component_loader_.ParseManifest("{ 'test': 3 } invalid"));
127 ASSERT_EQ((DictionaryValue*)NULL, manifest.get()); 127 EXPECT_FALSE(manifest.get());
128 128
129 // Test manifests that are valid JSON, but don't have an object literal 129 // Test manifests that are valid JSON, but don't have an object literal
130 // at the root. ParseManifest() should always return NULL. 130 // at the root. ParseManifest() should always return NULL.
131 131
132 manifest.reset(component_loader_.ParseManifest("")); 132 manifest.reset(component_loader_.ParseManifest(""));
133 ASSERT_EQ((DictionaryValue*)NULL, manifest.get()); 133 EXPECT_FALSE(manifest.get());
134 134
135 manifest.reset(component_loader_.ParseManifest("[{ \"foo\": 3 }]")); 135 manifest.reset(component_loader_.ParseManifest("[{ \"foo\": 3 }]"));
136 ASSERT_EQ((DictionaryValue*)NULL, manifest.get()); 136 EXPECT_FALSE(manifest.get());
137 137
138 manifest.reset(component_loader_.ParseManifest("\"Test\"")); 138 manifest.reset(component_loader_.ParseManifest("\"Test\""));
139 ASSERT_EQ((DictionaryValue*)NULL, manifest.get()); 139 EXPECT_FALSE(manifest.get());
140 140
141 manifest.reset(component_loader_.ParseManifest("42")); 141 manifest.reset(component_loader_.ParseManifest("42"));
142 ASSERT_EQ((DictionaryValue*)NULL, manifest.get()); 142 EXPECT_FALSE(manifest.get());
143 143
144 manifest.reset(component_loader_.ParseManifest("true")); 144 manifest.reset(component_loader_.ParseManifest("true"));
145 ASSERT_EQ((DictionaryValue*)NULL, manifest.get()); 145 EXPECT_FALSE(manifest.get());
146 146
147 manifest.reset(component_loader_.ParseManifest("false")); 147 manifest.reset(component_loader_.ParseManifest("false"));
148 ASSERT_EQ((DictionaryValue*)NULL, manifest.get()); 148 EXPECT_FALSE(manifest.get());
149 149
150 manifest.reset(component_loader_.ParseManifest("null")); 150 manifest.reset(component_loader_.ParseManifest("null"));
151 ASSERT_EQ((DictionaryValue*)NULL, manifest.get()); 151 EXPECT_FALSE(manifest.get());
152 152
153 // Test parsing valid JSON. 153 // Test parsing valid JSON.
154 154
155 int value; 155 int value = 0;
156 manifest.reset(component_loader_.ParseManifest( 156 manifest.reset(component_loader_.ParseManifest(
157 "{ \"test\": { \"one\": 1 }, \"two\": 2 }")); 157 "{ \"test\": { \"one\": 1 }, \"two\": 2 }"));
158 ASSERT_NE(manifest.get(), (DictionaryValue*)NULL); 158 ASSERT_TRUE(manifest.get());
159 ASSERT_TRUE(manifest->GetInteger("test.one", &value)); 159 EXPECT_TRUE(manifest->GetInteger("test.one", &value));
160 ASSERT_EQ(1, value); 160 EXPECT_EQ(1, value);
161 ASSERT_TRUE(manifest->GetInteger("two", &value)); 161 ASSERT_TRUE(manifest->GetInteger("two", &value));
162 ASSERT_EQ(2, value); 162 EXPECT_EQ(2, value);
163 163
164 std::string string_value; 164 std::string string_value;
165 manifest.reset(component_loader_.ParseManifest(manifest_contents_)); 165 manifest.reset(component_loader_.ParseManifest(manifest_contents_));
166 ASSERT_TRUE(manifest->GetString("background.page", &string_value)); 166 ASSERT_TRUE(manifest->GetString("background.page", &string_value));
167 ASSERT_EQ("backgroundpage.html", string_value); 167 EXPECT_EQ("backgroundpage.html", string_value);
168 } 168 }
169 169
170 // Test that the extension isn't loaded if the extension service isn't ready. 170 // Test that the extension isn't loaded if the extension service isn't ready.
171 TEST_F(ComponentLoaderTest, AddWhenNotReady) { 171 TEST_F(ComponentLoaderTest, AddWhenNotReady) {
172 scoped_refptr<const Extension> extension;
173 extension_service_.set_ready(false); 172 extension_service_.set_ready(false);
174 extension = component_loader_.Add(manifest_contents_, extension_path_); 173 std::string extension_id =
175 ASSERT_EQ((Extension*)NULL, extension.get()); 174 component_loader_.Add(manifest_contents_, extension_path_);
176 ASSERT_EQ(0u, extension_service_.extensions()->size()); 175 EXPECT_NE("", extension_id);
176 EXPECT_EQ(0u, extension_service_.extensions()->size());
177 } 177 }
178 178
179 // Test that it *is* loaded when the extension service *is* ready. 179 // Test that it *is* loaded when the extension service *is* ready.
180 TEST_F(ComponentLoaderTest, AddWhenReady) { 180 TEST_F(ComponentLoaderTest, AddWhenReady) {
181 scoped_refptr<const Extension> extension;
182 extension_service_.set_ready(true); 181 extension_service_.set_ready(true);
183 extension = component_loader_.Add(manifest_contents_, extension_path_); 182 std::string extension_id =
184 ASSERT_NE((Extension*)NULL, extension.get()); 183 component_loader_.Add(manifest_contents_, extension_path_);
185 ASSERT_EQ(1u, extension_service_.extensions()->size()); 184 EXPECT_NE("", extension_id);
185 EXPECT_EQ(1u, extension_service_.extensions()->size());
186 EXPECT_TRUE(extension_service_.extensions()->GetByID(extension_id));
186 } 187 }
187 188
188 TEST_F(ComponentLoaderTest, Remove) { 189 TEST_F(ComponentLoaderTest, Remove) {
189 extension_service_.set_ready(false); 190 extension_service_.set_ready(false);
190 191
191 // Removing an extension that was never added should be ok. 192 // Removing an extension that was never added should be ok.
192 component_loader_.Remove(extension_path_); 193 component_loader_.Remove(extension_path_);
193 ASSERT_EQ(0u, extension_service_.extensions()->size()); 194 EXPECT_EQ(0u, extension_service_.extensions()->size());
194 195
195 // Try adding and removing before LoadAll() is called. 196 // Try adding and removing before LoadAll() is called.
196 component_loader_.Add(manifest_contents_, extension_path_); 197 component_loader_.Add(manifest_contents_, extension_path_);
197 component_loader_.Remove(extension_path_); 198 component_loader_.Remove(extension_path_);
198 component_loader_.LoadAll(); 199 component_loader_.LoadAll();
199 ASSERT_EQ(0u, extension_service_.extensions()->size()); 200 EXPECT_EQ(0u, extension_service_.extensions()->size());
200 201
201 // Load an extension, and check that it's unloaded when Remove() is called. 202 // Load an extension, and check that it's unloaded when Remove() is called.
202 scoped_refptr<const Extension> extension;
203 extension_service_.set_ready(true); 203 extension_service_.set_ready(true);
204 extension = component_loader_.Add(manifest_contents_, extension_path_); 204 std::string extension_id =
205 ASSERT_NE((Extension*)NULL, extension.get()); 205 component_loader_.Add(manifest_contents_, extension_path_);
206 EXPECT_EQ(1u, extension_service_.extensions()->size());
206 component_loader_.Remove(extension_path_); 207 component_loader_.Remove(extension_path_);
207 ASSERT_EQ(0u, extension_service_.extensions()->size()); 208 EXPECT_EQ(0u, extension_service_.extensions()->size());
208 209
209 // And after calling LoadAll(), it shouldn't get loaded. 210 // And after calling LoadAll(), it shouldn't get loaded.
210 component_loader_.LoadAll(); 211 component_loader_.LoadAll();
211 ASSERT_EQ(0u, extension_service_.extensions()->size()); 212 EXPECT_EQ(0u, extension_service_.extensions()->size());
212 } 213 }
213 214
214 TEST_F(ComponentLoaderTest, LoadAll) { 215 TEST_F(ComponentLoaderTest, LoadAll) {
215 extension_service_.set_ready(false); 216 extension_service_.set_ready(false);
216 217
217 // No extensions should be loaded if none were added. 218 // No extensions should be loaded if none were added.
218 component_loader_.LoadAll(); 219 component_loader_.LoadAll();
219 ASSERT_EQ(0u, extension_service_.extensions()->size()); 220 EXPECT_EQ(0u, extension_service_.extensions()->size());
220 221
221 // Use LoadAll() to load the default extensions. 222 // Use LoadAll() to load the default extensions.
222 component_loader_.AddDefaultComponentExtensions(); 223 component_loader_.AddDefaultComponentExtensions();
223 component_loader_.LoadAll(); 224 component_loader_.LoadAll();
224 unsigned int default_count = extension_service_.extensions()->size(); 225 unsigned int default_count = extension_service_.extensions()->size();
225 226
226 // Clear the list of loaded extensions, and reload with one more. 227 // Clear the list of loaded extensions, and reload with one more.
227 extension_service_.clear_extensions(); 228 extension_service_.clear_extensions();
228 component_loader_.Add(manifest_contents_, extension_path_); 229 component_loader_.Add(manifest_contents_, extension_path_);
229 component_loader_.LoadAll(); 230 component_loader_.LoadAll();
230 231
231 ASSERT_EQ(default_count + 1, extension_service_.extensions()->size()); 232 EXPECT_EQ(default_count + 1, extension_service_.extensions()->size());
232 } 233 }
233 234
234 TEST_F(ComponentLoaderTest, EnterpriseWebStore) { 235 TEST_F(ComponentLoaderTest, EnterpriseWebStore) {
235 component_loader_.AddDefaultComponentExtensions(); 236 component_loader_.AddDefaultComponentExtensions();
236 component_loader_.LoadAll(); 237 component_loader_.LoadAll();
237 unsigned int default_count = extension_service_.extensions()->size(); 238 unsigned int default_count = extension_service_.extensions()->size();
238 239
239 // Set the pref, and it should get loaded automatically. 240 // Set the pref, and it should get loaded automatically.
240 extension_service_.set_ready(true); 241 extension_service_.set_ready(true);
241 prefs_.SetUserPref(prefs::kEnterpriseWebStoreURL, 242 prefs_.SetUserPref(prefs::kEnterpriseWebStoreURL,
242 Value::CreateStringValue("http://www.google.com")); 243 Value::CreateStringValue("http://www.google.com"));
243 ASSERT_EQ(default_count + 1, extension_service_.extensions()->size()); 244 EXPECT_EQ(default_count + 1, extension_service_.extensions()->size());
244 245
245 // Now that the pref is set, check if it's added by default. 246 // Now that the pref is set, check if it's added by default.
246 extension_service_.set_ready(false); 247 extension_service_.set_ready(false);
247 extension_service_.clear_extensions(); 248 extension_service_.clear_extensions();
248 component_loader_.ClearAllRegistered(); 249 component_loader_.ClearAllRegistered();
249 component_loader_.AddDefaultComponentExtensions(); 250 component_loader_.AddDefaultComponentExtensions();
250 component_loader_.LoadAll(); 251 component_loader_.LoadAll();
251 ASSERT_EQ(default_count + 1, extension_service_.extensions()->size()); 252 EXPECT_EQ(default_count + 1, extension_service_.extensions()->size());
252 253
253 // Number of loaded extensions should be the same after changing the pref. 254 // Number of loaded extensions should be the same after changing the pref.
254 prefs_.SetUserPref(prefs::kEnterpriseWebStoreURL, 255 prefs_.SetUserPref(prefs::kEnterpriseWebStoreURL,
255 Value::CreateStringValue("http://www.google.de")); 256 Value::CreateStringValue("http://www.google.de"));
256 ASSERT_EQ(default_count + 1, extension_service_.extensions()->size()); 257 EXPECT_EQ(default_count + 1, extension_service_.extensions()->size());
257 } 258 }
258 259
259 TEST_F(ComponentLoaderTest, AddOrReplace) { 260 TEST_F(ComponentLoaderTest, AddOrReplace) {
260 ASSERT_EQ(0u, component_loader_.registered_extensions_count()); 261 EXPECT_EQ(0u, component_loader_.registered_extensions_count());
261 component_loader_.AddDefaultComponentExtensions(); 262 component_loader_.AddDefaultComponentExtensions();
262 size_t const default_count = component_loader_.registered_extensions_count(); 263 size_t const default_count = component_loader_.registered_extensions_count();
263 FilePath known_extension = GetBasePath() 264 FilePath known_extension = GetBasePath()
264 .AppendASCII("override_component_extension"); 265 .AppendASCII("override_component_extension");
265 FilePath unknow_extension = extension_path_; 266 FilePath unknow_extension = extension_path_;
266 267
267 // Replace a default component extension. 268 // Replace a default component extension.
268 component_loader_.AddOrReplace(known_extension); 269 component_loader_.AddOrReplace(known_extension);
269 ASSERT_EQ(default_count, 270 EXPECT_EQ(default_count,
270 component_loader_.registered_extensions_count()); 271 component_loader_.registered_extensions_count());
271 272
272 // Add a new component extension. 273 // Add a new component extension.
273 component_loader_.AddOrReplace(unknow_extension); 274 component_loader_.AddOrReplace(unknow_extension);
274 ASSERT_EQ(default_count + 1, 275 EXPECT_EQ(default_count + 1,
275 component_loader_.registered_extensions_count()); 276 component_loader_.registered_extensions_count());
276 277
277 extension_service_.set_ready(true); 278 extension_service_.set_ready(true);
278 component_loader_.LoadAll(); 279 component_loader_.LoadAll();
279 280
280 ASSERT_EQ(default_count + 1, extension_service_.extensions()->size()); 281 EXPECT_EQ(default_count + 1, extension_service_.extensions()->size());
281 ASSERT_EQ(0u, extension_service_.unloaded_count()); 282 EXPECT_EQ(0u, extension_service_.unloaded_count());
282 283
283 // replace loaded component extension. 284 // replace loaded component extension.
284 component_loader_.AddOrReplace(known_extension); 285 component_loader_.AddOrReplace(known_extension);
285 ASSERT_EQ(default_count + 1, extension_service_.extensions()->size()); 286 EXPECT_EQ(default_count + 1, extension_service_.extensions()->size());
286 ASSERT_EQ(1u, extension_service_.unloaded_count()); 287 EXPECT_EQ(1u, extension_service_.unloaded_count());
287 } 288 }
288 289
289 } // namespace extensions 290 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/component_loader.cc ('k') | chrome/browser/extensions/extension_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698