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

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

Issue 421193002: Fix ExtensionServiceTest.ClearExtensionData flakiness (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: use base::DoNothing for empty callbacks Created 6 years, 4 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) 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 "chrome/browser/extensions/extension_service.h" 5 #include "chrome/browser/extensions/extension_service.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <iterator> 8 #include <iterator>
9 #include <set> 9 #include <set>
10 10
(...skipping 123 matching lines...) Expand 10 before | Expand all | Expand 10 after
134 // For example, an extension that requires experimental permissions 134 // For example, an extension that requires experimental permissions
135 // will not be loaded if the experimental command line flag is not used. 135 // will not be loaded if the experimental command line flag is not used.
136 // In this case, do not uninstall. 136 // In this case, do not uninstall.
137 if (!GetInstalledExtension(id)) { 137 if (!GetInstalledExtension(id)) {
138 // We can't call UninstallExtension with an unloaded/invalid 138 // We can't call UninstallExtension with an unloaded/invalid
139 // extension ID. 139 // extension ID.
140 LOG(WARNING) << "Attempted uninstallation of unloaded/invalid extension " 140 LOG(WARNING) << "Attempted uninstallation of unloaded/invalid extension "
141 << "with id: " << id; 141 << "with id: " << id;
142 return; 142 return;
143 } 143 }
144 UninstallExtension( 144 UninstallExtension(id,
145 id, extensions::UNINSTALL_REASON_ORPHANED_EXTERNAL_EXTENSION, NULL); 145 extensions::UNINSTALL_REASON_ORPHANED_EXTERNAL_EXTENSION,
146 base::Bind(&base::DoNothing),
147 NULL);
146 } 148 }
147 149
148 void ExtensionService::SetFileTaskRunnerForTesting( 150 void ExtensionService::SetFileTaskRunnerForTesting(
149 base::SequencedTaskRunner* task_runner) { 151 base::SequencedTaskRunner* task_runner) {
150 file_task_runner_ = task_runner; 152 file_task_runner_ = task_runner;
151 } 153 }
152 154
153 void ExtensionService::ClearProvidersForTesting() { 155 void ExtensionService::ClearProvidersForTesting() {
154 external_extension_providers_.clear(); 156 external_extension_providers_.clear();
155 } 157 }
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
215 // We can't call UninstallExtension with an invalid extension ID. 217 // We can't call UninstallExtension with an invalid extension ID.
216 if (!extensions_service->GetInstalledExtension(extension_id)) { 218 if (!extensions_service->GetInstalledExtension(extension_id)) {
217 LOG(WARNING) << "Attempted uninstallation of non-existent extension with " 219 LOG(WARNING) << "Attempted uninstallation of non-existent extension with "
218 << "id: " << extension_id; 220 << "id: " << extension_id;
219 return false; 221 return false;
220 } 222 }
221 223
222 // The following call to UninstallExtension will not allow an uninstall of a 224 // The following call to UninstallExtension will not allow an uninstall of a
223 // policy-controlled extension. 225 // policy-controlled extension.
224 base::string16 error; 226 base::string16 error;
225 if (!extensions_service->UninstallExtension(extension_id, reason, &error)) { 227 if (!extensions_service->UninstallExtension(
228 extension_id, reason, base::Bind(&base::DoNothing), &error)) {
226 LOG(WARNING) << "Cannot uninstall extension with id " << extension_id 229 LOG(WARNING) << "Cannot uninstall extension with id " << extension_id
227 << ": " << error; 230 << ": " << error;
228 return false; 231 return false;
229 } 232 }
230 233
231 return true; 234 return true;
232 } 235 }
233 236
234 ExtensionService::ExtensionService(Profile* profile, 237 ExtensionService::ExtensionService(Profile* profile,
235 const CommandLine* command_line, 238 const CommandLine* command_line,
(...skipping 432 matching lines...) Expand 10 before | Expand all | Expand 10 after
668 void ExtensionService::ReloadExtensionWithQuietFailure( 671 void ExtensionService::ReloadExtensionWithQuietFailure(
669 const std::string& extension_id) { 672 const std::string& extension_id) {
670 ReloadExtensionImpl(extension_id, false); // be_noisy 673 ReloadExtensionImpl(extension_id, false); // be_noisy
671 } 674 }
672 675
673 bool ExtensionService::UninstallExtension( 676 bool ExtensionService::UninstallExtension(
674 // "transient" because the process of uninstalling may cause the reference 677 // "transient" because the process of uninstalling may cause the reference
675 // to become invalid. Instead, use |extenson->id()|. 678 // to become invalid. Instead, use |extenson->id()|.
676 const std::string& transient_extension_id, 679 const std::string& transient_extension_id,
677 extensions::UninstallReason reason, 680 extensions::UninstallReason reason,
681 const base::Closure& deletion_done_callback,
678 base::string16* error) { 682 base::string16* error) {
679 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 683 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
680 684
681 scoped_refptr<const Extension> extension = 685 scoped_refptr<const Extension> extension =
682 GetInstalledExtension(transient_extension_id); 686 GetInstalledExtension(transient_extension_id);
683 687
684 // Callers should not send us nonexistent extensions. 688 // Callers should not send us nonexistent extensions.
685 CHECK(extension.get()); 689 CHECK(extension.get());
686 690
687 // Policy change which triggers an uninstall will always set 691 // Policy change which triggers an uninstall will always set
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
731 if (!GetFileTaskRunner()->PostTask( 735 if (!GetFileTaskRunner()->PostTask(
732 FROM_HERE, 736 FROM_HERE,
733 base::Bind(&ExtensionService::UninstallExtensionOnFileThread, 737 base::Bind(&ExtensionService::UninstallExtensionOnFileThread,
734 extension->id(), 738 extension->id(),
735 profile_, 739 profile_,
736 install_directory_, 740 install_directory_,
737 extension->path()))) 741 extension->path())))
738 NOTREACHED(); 742 NOTREACHED();
739 } 743 }
740 744
741 extensions::DataDeleter::StartDeleting(profile_, extension.get()); 745 extensions::DataDeleter::StartDeleting(
746 profile_, extension.get(), deletion_done_callback);
742 747
743 UntrackTerminatedExtension(extension->id()); 748 UntrackTerminatedExtension(extension->id());
744 749
745 // Notify interested parties that we've uninstalled this extension. 750 // Notify interested parties that we've uninstalled this extension.
746 content::NotificationService::current()->Notify( 751 content::NotificationService::current()->Notify(
747 chrome::NOTIFICATION_EXTENSION_UNINSTALLED_DEPRECATED, 752 chrome::NOTIFICATION_EXTENSION_UNINSTALLED_DEPRECATED,
748 content::Source<Profile>(profile_), 753 content::Source<Profile>(profile_),
749 content::Details<const Extension>(extension.get())); 754 content::Details<const Extension>(extension.get()));
750 ExtensionRegistry::Get(profile_) 755 ExtensionRegistry::Get(profile_)
751 ->TriggerOnUninstalled(extension.get(), reason); 756 ->TriggerOnUninstalled(extension.get(), reason);
(...skipping 1575 matching lines...) Expand 10 before | Expand all | Expand 10 after
2327 } 2332 }
2328 2333
2329 void ExtensionService::OnProfileDestructionStarted() { 2334 void ExtensionService::OnProfileDestructionStarted() {
2330 ExtensionIdSet ids_to_unload = registry_->enabled_extensions().GetIDs(); 2335 ExtensionIdSet ids_to_unload = registry_->enabled_extensions().GetIDs();
2331 for (ExtensionIdSet::iterator it = ids_to_unload.begin(); 2336 for (ExtensionIdSet::iterator it = ids_to_unload.begin();
2332 it != ids_to_unload.end(); 2337 it != ids_to_unload.end();
2333 ++it) { 2338 ++it) {
2334 UnloadExtension(*it, UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN); 2339 UnloadExtension(*it, UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN);
2335 } 2340 }
2336 } 2341 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.h ('k') | chrome/browser/extensions/extension_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698