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

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

Issue 666153002: Standardize usage of virtual/override/final in chrome/browser/extensions/ (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 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
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 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 <algorithm> 5 #include <algorithm>
6 #include <set> 6 #include <set>
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/at_exit.h" 9 #include "base/at_exit.h"
10 #include "base/basictypes.h" 10 #include "base/basictypes.h"
(...skipping 224 matching lines...) Expand 10 before | Expand all | Expand 10 after
235 } // namespace 235 } // namespace
236 236
237 class MockExtensionProvider : public extensions::ExternalProviderInterface { 237 class MockExtensionProvider : public extensions::ExternalProviderInterface {
238 public: 238 public:
239 MockExtensionProvider( 239 MockExtensionProvider(
240 VisitorInterface* visitor, 240 VisitorInterface* visitor,
241 Manifest::Location location) 241 Manifest::Location location)
242 : location_(location), visitor_(visitor), visit_count_(0) { 242 : location_(location), visitor_(visitor), visit_count_(0) {
243 } 243 }
244 244
245 virtual ~MockExtensionProvider() {} 245 ~MockExtensionProvider() override {}
246 246
247 void UpdateOrAddExtension(const std::string& id, 247 void UpdateOrAddExtension(const std::string& id,
248 const std::string& version, 248 const std::string& version,
249 const base::FilePath& path) { 249 const base::FilePath& path) {
250 extension_map_[id] = std::make_pair(version, path); 250 extension_map_[id] = std::make_pair(version, path);
251 } 251 }
252 252
253 void RemoveExtension(const std::string& id) { 253 void RemoveExtension(const std::string& id) {
254 extension_map_.erase(id); 254 extension_map_.erase(id);
255 } 255 }
256 256
257 // ExternalProvider implementation: 257 // ExternalProvider implementation:
258 virtual void VisitRegisteredExtension() override { 258 void VisitRegisteredExtension() override {
259 visit_count_++; 259 visit_count_++;
260 for (DataMap::const_iterator i = extension_map_.begin(); 260 for (DataMap::const_iterator i = extension_map_.begin();
261 i != extension_map_.end(); ++i) { 261 i != extension_map_.end(); ++i) {
262 Version version(i->second.first); 262 Version version(i->second.first);
263 263
264 visitor_->OnExternalExtensionFileFound( 264 visitor_->OnExternalExtensionFileFound(
265 i->first, &version, i->second.second, location_, 265 i->first, &version, i->second.second, location_,
266 Extension::NO_FLAGS, false); 266 Extension::NO_FLAGS, false);
267 } 267 }
268 visitor_->OnExternalProviderReady(this); 268 visitor_->OnExternalProviderReady(this);
269 } 269 }
270 270
271 virtual bool HasExtension(const std::string& id) const override { 271 bool HasExtension(const std::string& id) const override {
272 return extension_map_.find(id) != extension_map_.end(); 272 return extension_map_.find(id) != extension_map_.end();
273 } 273 }
274 274
275 virtual bool GetExtensionDetails( 275 bool GetExtensionDetails(const std::string& id,
276 const std::string& id, 276 Manifest::Location* location,
277 Manifest::Location* location, 277 scoped_ptr<Version>* version) const override {
278 scoped_ptr<Version>* version) const override {
279 DataMap::const_iterator it = extension_map_.find(id); 278 DataMap::const_iterator it = extension_map_.find(id);
280 if (it == extension_map_.end()) 279 if (it == extension_map_.end())
281 return false; 280 return false;
282 281
283 if (version) 282 if (version)
284 version->reset(new Version(it->second.first)); 283 version->reset(new Version(it->second.first));
285 284
286 if (location) 285 if (location)
287 *location = location_; 286 *location = location_;
288 287
289 return true; 288 return true;
290 } 289 }
291 290
292 virtual bool IsReady() const override { 291 bool IsReady() const override { return true; }
293 return true;
294 }
295 292
296 virtual void ServiceShutdown() override { 293 void ServiceShutdown() override {}
297 }
298 294
299 int visit_count() const { return visit_count_; } 295 int visit_count() const { return visit_count_; }
300 void set_visit_count(int visit_count) { 296 void set_visit_count(int visit_count) {
301 visit_count_ = visit_count; 297 visit_count_ = visit_count;
302 } 298 }
303 299
304 private: 300 private:
305 typedef std::map< std::string, std::pair<std::string, base::FilePath> > 301 typedef std::map< std::string, std::pair<std::string, base::FilePath> >
306 DataMap; 302 DataMap;
307 DataMap extension_map_; 303 DataMap extension_map_;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
362 } 358 }
363 359
364 // Reset our counter. 360 // Reset our counter.
365 ids_found_ = 0; 361 ids_found_ = 0;
366 // Ask the provider to look up all extensions and return them. 362 // Ask the provider to look up all extensions and return them.
367 provider_->VisitRegisteredExtension(); 363 provider_->VisitRegisteredExtension();
368 364
369 return ids_found_; 365 return ids_found_;
370 } 366 }
371 367
372 virtual bool OnExternalExtensionFileFound(const std::string& id, 368 bool OnExternalExtensionFileFound(const std::string& id,
373 const Version* version, 369 const Version* version,
374 const base::FilePath& path, 370 const base::FilePath& path,
375 Manifest::Location unused, 371 Manifest::Location unused,
376 int creation_flags, 372 int creation_flags,
377 bool mark_acknowledged) override { 373 bool mark_acknowledged) override {
378 EXPECT_EQ(expected_creation_flags_, creation_flags); 374 EXPECT_EQ(expected_creation_flags_, creation_flags);
379 375
380 ++ids_found_; 376 ++ids_found_;
381 base::DictionaryValue* pref; 377 base::DictionaryValue* pref;
382 // This tests is to make sure that the provider only notifies us of the 378 // This tests is to make sure that the provider only notifies us of the
383 // values we gave it. So if the id we doesn't exist in our internal 379 // values we gave it. So if the id we doesn't exist in our internal
384 // dictionary then something is wrong. 380 // dictionary then something is wrong.
385 EXPECT_TRUE(prefs_->GetDictionary(id, &pref)) 381 EXPECT_TRUE(prefs_->GetDictionary(id, &pref))
386 << "Got back ID (" << id.c_str() << ") we weren't expecting"; 382 << "Got back ID (" << id.c_str() << ") we weren't expecting";
387 383
(...skipping 17 matching lines...) Expand all
405 EXPECT_STREQ(version->GetString().c_str(), v1->GetString().c_str()); 401 EXPECT_STREQ(version->GetString().c_str(), v1->GetString().c_str());
406 EXPECT_STREQ(version->GetString().c_str(), v2->GetString().c_str()); 402 EXPECT_STREQ(version->GetString().c_str(), v2->GetString().c_str());
407 EXPECT_EQ(Manifest::EXTERNAL_PREF, location); 403 EXPECT_EQ(Manifest::EXTERNAL_PREF, location);
408 404
409 // Remove it so we won't count it ever again. 405 // Remove it so we won't count it ever again.
410 prefs_->Remove(id, NULL); 406 prefs_->Remove(id, NULL);
411 } 407 }
412 return true; 408 return true;
413 } 409 }
414 410
415 virtual bool OnExternalExtensionUpdateUrlFound( 411 bool OnExternalExtensionUpdateUrlFound(const std::string& id,
416 const std::string& id, 412 const std::string& install_parameter,
417 const std::string& install_parameter, 413 const GURL& update_url,
418 const GURL& update_url, 414 Manifest::Location location,
419 Manifest::Location location, 415 int creation_flags,
420 int creation_flags, 416 bool mark_acknowledged) override {
421 bool mark_acknowledged) override {
422 ++ids_found_; 417 ++ids_found_;
423 base::DictionaryValue* pref; 418 base::DictionaryValue* pref;
424 // This tests is to make sure that the provider only notifies us of the 419 // This tests is to make sure that the provider only notifies us of the
425 // values we gave it. So if the id we doesn't exist in our internal 420 // values we gave it. So if the id we doesn't exist in our internal
426 // dictionary then something is wrong. 421 // dictionary then something is wrong.
427 EXPECT_TRUE(prefs_->GetDictionary(id, &pref)) 422 EXPECT_TRUE(prefs_->GetDictionary(id, &pref))
428 << L"Got back ID (" << id.c_str() << ") we weren't expecting"; 423 << L"Got back ID (" << id.c_str() << ") we weren't expecting";
429 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, location); 424 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, location);
430 425
431 if (pref) { 426 if (pref) {
432 EXPECT_TRUE(provider_->HasExtension(id)); 427 EXPECT_TRUE(provider_->HasExtension(id));
433 428
434 // External extensions with update URLs do not have versions. 429 // External extensions with update URLs do not have versions.
435 scoped_ptr<Version> v1; 430 scoped_ptr<Version> v1;
436 Manifest::Location location1 = Manifest::INVALID_LOCATION; 431 Manifest::Location location1 = Manifest::INVALID_LOCATION;
437 EXPECT_TRUE(provider_->GetExtensionDetails(id, &location1, &v1)); 432 EXPECT_TRUE(provider_->GetExtensionDetails(id, &location1, &v1));
438 EXPECT_FALSE(v1.get()); 433 EXPECT_FALSE(v1.get());
439 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, location1); 434 EXPECT_EQ(Manifest::EXTERNAL_PREF_DOWNLOAD, location1);
440 435
441 std::string parsed_install_parameter; 436 std::string parsed_install_parameter;
442 pref->GetString("install_parameter", &parsed_install_parameter); 437 pref->GetString("install_parameter", &parsed_install_parameter);
443 EXPECT_EQ(parsed_install_parameter, install_parameter); 438 EXPECT_EQ(parsed_install_parameter, install_parameter);
444 439
445 // Remove it so we won't count it again. 440 // Remove it so we won't count it again.
446 prefs_->Remove(id, NULL); 441 prefs_->Remove(id, NULL);
447 } 442 }
448 return true; 443 return true;
449 } 444 }
450 445
451 virtual void OnExternalProviderReady( 446 void OnExternalProviderReady(
452 const extensions::ExternalProviderInterface* provider) override { 447 const extensions::ExternalProviderInterface* provider) override {
453 EXPECT_EQ(provider, provider_.get()); 448 EXPECT_EQ(provider, provider_.get());
454 EXPECT_TRUE(provider->IsReady()); 449 EXPECT_TRUE(provider->IsReady());
455 } 450 }
456 451
457 private: 452 private:
458 int ids_found_; 453 int ids_found_;
459 base::FilePath fake_base_path_; 454 base::FilePath fake_base_path_;
460 int expected_creation_flags_; 455 int expected_creation_flags_;
461 scoped_ptr<extensions::ExternalProviderImpl> provider_; 456 scoped_ptr<extensions::ExternalProviderImpl> provider_;
(...skipping 19 matching lines...) Expand all
481 content::NotificationService::AllSources()); 476 content::NotificationService::AllSources());
482 registrar_.Add(this, 477 registrar_.Add(this,
483 extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED, 478 extensions::NOTIFICATION_EXTENSION_UNLOADED_DEPRECATED,
484 content::NotificationService::AllSources()); 479 content::NotificationService::AllSources());
485 registrar_.Add( 480 registrar_.Add(
486 this, 481 this,
487 extensions::NOTIFICATION_EXTENSION_WILL_BE_INSTALLED_DEPRECATED, 482 extensions::NOTIFICATION_EXTENSION_WILL_BE_INSTALLED_DEPRECATED,
488 content::NotificationService::AllSources()); 483 content::NotificationService::AllSources());
489 } 484 }
490 485
491 virtual void Observe(int type, 486 void Observe(int type,
492 const content::NotificationSource& source, 487 const content::NotificationSource& source,
493 const content::NotificationDetails& details) override { 488 const content::NotificationDetails& details) override {
494 switch (type) { 489 switch (type) {
495 case extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: { 490 case extensions::NOTIFICATION_EXTENSION_LOADED_DEPRECATED: {
496 const Extension* extension = 491 const Extension* extension =
497 content::Details<const Extension>(details).ptr(); 492 content::Details<const Extension>(details).ptr();
498 loaded_.push_back(make_scoped_refptr(extension)); 493 loaded_.push_back(make_scoped_refptr(extension));
499 // The tests rely on the errors being in a certain order, which can vary 494 // The tests rely on the errors being in a certain order, which can vary
500 // depending on how filesystem iteration works. 495 // depending on how filesystem iteration works.
501 std::stable_sort(loaded_.begin(), loaded_.end(), ExtensionsOrder()); 496 std::stable_sort(loaded_.begin(), loaded_.end(), ExtensionsOrder());
502 break; 497 break;
503 } 498 }
(...skipping 643 matching lines...) Expand 10 before | Expand all | Expand 10 after
1147 size_t expected_extensions_count_; 1142 size_t expected_extensions_count_;
1148 content::NotificationRegistrar registrar_; 1143 content::NotificationRegistrar registrar_;
1149 }; 1144 };
1150 1145
1151 // Receives notifications from a PackExtensionJob, indicating either that 1146 // Receives notifications from a PackExtensionJob, indicating either that
1152 // packing succeeded or that there was some error. 1147 // packing succeeded or that there was some error.
1153 class PackExtensionTestClient : public extensions::PackExtensionJob::Client { 1148 class PackExtensionTestClient : public extensions::PackExtensionJob::Client {
1154 public: 1149 public:
1155 PackExtensionTestClient(const base::FilePath& expected_crx_path, 1150 PackExtensionTestClient(const base::FilePath& expected_crx_path,
1156 const base::FilePath& expected_private_key_path); 1151 const base::FilePath& expected_private_key_path);
1157 virtual void OnPackSuccess(const base::FilePath& crx_path, 1152 void OnPackSuccess(const base::FilePath& crx_path,
1158 const base::FilePath& private_key_path) override; 1153 const base::FilePath& private_key_path) override;
1159 virtual void OnPackFailure(const std::string& error_message, 1154 void OnPackFailure(const std::string& error_message,
1160 ExtensionCreator::ErrorType type) override; 1155 ExtensionCreator::ErrorType type) override;
1161 1156
1162 private: 1157 private:
1163 const base::FilePath expected_crx_path_; 1158 const base::FilePath expected_crx_path_;
1164 const base::FilePath expected_private_key_path_; 1159 const base::FilePath expected_private_key_path_;
1165 DISALLOW_COPY_AND_ASSIGN(PackExtensionTestClient); 1160 DISALLOW_COPY_AND_ASSIGN(PackExtensionTestClient);
1166 }; 1161 };
1167 1162
1168 PackExtensionTestClient::PackExtensionTestClient( 1163 PackExtensionTestClient::PackExtensionTestClient(
1169 const base::FilePath& expected_crx_path, 1164 const base::FilePath& expected_crx_path,
1170 const base::FilePath& expected_private_key_path) 1165 const base::FilePath& expected_private_key_path)
(...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after
1454 ValidatePrefKeyCount(++pref_count); 1449 ValidatePrefKeyCount(++pref_count);
1455 ValidateIntegerPref(good2048, "state", Extension::ENABLED); 1450 ValidateIntegerPref(good2048, "state", Extension::ENABLED);
1456 ValidateIntegerPref(good2048, "location", Manifest::INTERNAL); 1451 ValidateIntegerPref(good2048, "location", Manifest::INTERNAL);
1457 1452
1458 // TODO(erikkay): add more tests for many of the failure cases. 1453 // TODO(erikkay): add more tests for many of the failure cases.
1459 // TODO(erikkay): add tests for upgrade cases. 1454 // TODO(erikkay): add tests for upgrade cases.
1460 } 1455 }
1461 1456
1462 struct MockExtensionRegistryObserver 1457 struct MockExtensionRegistryObserver
1463 : public extensions::ExtensionRegistryObserver { 1458 : public extensions::ExtensionRegistryObserver {
1464 virtual void OnExtensionWillBeInstalled( 1459 void OnExtensionWillBeInstalled(content::BrowserContext* browser_context,
1465 content::BrowserContext* browser_context, 1460 const Extension* extension,
1466 const Extension* extension, 1461 bool is_update,
1467 bool is_update, 1462 bool from_ephemeral,
1468 bool from_ephemeral, 1463 const std::string& old_name) override {
1469 const std::string& old_name) override {
1470 last_extension_installed = extension->id(); 1464 last_extension_installed = extension->id();
1471 } 1465 }
1472 1466
1473 virtual void OnExtensionUninstalled( 1467 void OnExtensionUninstalled(content::BrowserContext* browser_context,
1474 content::BrowserContext* browser_context, 1468 const Extension* extension,
1475 const Extension* extension, 1469 extensions::UninstallReason reason) override {
1476 extensions::UninstallReason reason) override {
1477 last_extension_uninstalled = extension->id(); 1470 last_extension_uninstalled = extension->id();
1478 } 1471 }
1479 1472
1480 std::string last_extension_installed; 1473 std::string last_extension_installed;
1481 std::string last_extension_uninstalled; 1474 std::string last_extension_uninstalled;
1482 }; 1475 };
1483 1476
1484 // Test that correct notifications are sent to ExtensionRegistryObserver on 1477 // Test that correct notifications are sent to ExtensionRegistryObserver on
1485 // extension install and uninstall. 1478 // extension install and uninstall.
1486 TEST_F(ExtensionServiceTest, InstallObserverNotified) { 1479 TEST_F(ExtensionServiceTest, InstallObserverNotified) {
(...skipping 3629 matching lines...) Expand 10 before | Expand all | Expand 10 after
5116 ExtensionsReadyRecorder() : ready_(false) { 5109 ExtensionsReadyRecorder() : ready_(false) {
5117 registrar_.Add(this, 5110 registrar_.Add(this,
5118 extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED, 5111 extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED,
5119 content::NotificationService::AllSources()); 5112 content::NotificationService::AllSources());
5120 } 5113 }
5121 5114
5122 void set_ready(bool value) { ready_ = value; } 5115 void set_ready(bool value) { ready_ = value; }
5123 bool ready() { return ready_; } 5116 bool ready() { return ready_; }
5124 5117
5125 private: 5118 private:
5126 virtual void Observe(int type, 5119 void Observe(int type,
5127 const content::NotificationSource& source, 5120 const content::NotificationSource& source,
5128 const content::NotificationDetails& details) override { 5121 const content::NotificationDetails& details) override {
5129 switch (type) { 5122 switch (type) {
5130 case extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED: 5123 case extensions::NOTIFICATION_EXTENSIONS_READY_DEPRECATED:
5131 ready_ = true; 5124 ready_ = true;
5132 break; 5125 break;
5133 default: 5126 default:
5134 NOTREACHED(); 5127 NOTREACHED();
5135 } 5128 }
5136 } 5129 }
5137 5130
5138 content::NotificationRegistrar registrar_; 5131 content::NotificationRegistrar registrar_;
(...skipping 1999 matching lines...) Expand 10 before | Expand all | Expand 10 after
7138 7131
7139 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED, 7132 service()->Observe(chrome::NOTIFICATION_PROFILE_DESTRUCTION_STARTED,
7140 content::Source<Profile>(profile()), 7133 content::Source<Profile>(profile()),
7141 content::NotificationService::NoDetails()); 7134 content::NotificationService::NoDetails());
7142 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_); 7135 EXPECT_EQ(UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN, unloaded_reason_);
7143 EXPECT_EQ(0u, registry()->enabled_extensions().size()); 7136 EXPECT_EQ(0u, registry()->enabled_extensions().size());
7144 EXPECT_EQ(0u, registry()->disabled_extensions().size()); 7137 EXPECT_EQ(0u, registry()->disabled_extensions().size());
7145 EXPECT_EQ(0u, registry()->terminated_extensions().size()); 7138 EXPECT_EQ(0u, registry()->terminated_extensions().size());
7146 EXPECT_EQ(0u, registry()->blacklisted_extensions().size()); 7139 EXPECT_EQ(0u, registry()->blacklisted_extensions().size());
7147 } 7140 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.h ('k') | chrome/browser/extensions/extension_special_storage_policy.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698