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

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

Issue 2078021: First pass at experimental omnibox API. There are plenty of rough edges and (Closed)
Patch Set: no prefer_keyword Created 10 years, 7 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) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/extensions_service.h" 5 #include "chrome/browser/extensions/extensions_service.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/file_util.h" 9 #include "base/file_util.h"
10 #include "base/histogram.h" 10 #include "base/histogram.h"
(...skipping 11 matching lines...) Expand all
22 #include "chrome/browser/extensions/extension_browser_event_router.h" 22 #include "chrome/browser/extensions/extension_browser_event_router.h"
23 #include "chrome/browser/extensions/extension_data_deleter.h" 23 #include "chrome/browser/extensions/extension_data_deleter.h"
24 #include "chrome/browser/extensions/extension_dom_ui.h" 24 #include "chrome/browser/extensions/extension_dom_ui.h"
25 #include "chrome/browser/extensions/extension_error_reporter.h" 25 #include "chrome/browser/extensions/extension_error_reporter.h"
26 #include "chrome/browser/extensions/extension_history_api.h" 26 #include "chrome/browser/extensions/extension_history_api.h"
27 #include "chrome/browser/extensions/extension_host.h" 27 #include "chrome/browser/extensions/extension_host.h"
28 #include "chrome/browser/extensions/extension_process_manager.h" 28 #include "chrome/browser/extensions/extension_process_manager.h"
29 #include "chrome/browser/extensions/extension_updater.h" 29 #include "chrome/browser/extensions/extension_updater.h"
30 #include "chrome/browser/extensions/external_extension_provider.h" 30 #include "chrome/browser/extensions/external_extension_provider.h"
31 #include "chrome/browser/extensions/external_pref_extension_provider.h" 31 #include "chrome/browser/extensions/external_pref_extension_provider.h"
32 #include "chrome/browser/net/chrome_url_request_context.h"
32 #include "chrome/browser/pref_service.h" 33 #include "chrome/browser/pref_service.h"
33 #include "chrome/browser/profile.h" 34 #include "chrome/browser/profile.h"
34 #include "chrome/browser/net/chrome_url_request_context.h" 35 #include "chrome/browser/search_engines/template_url_model.h"
35 #include "chrome/common/child_process_logging.h" 36 #include "chrome/common/child_process_logging.h"
36 #include "chrome/common/chrome_switches.h" 37 #include "chrome/common/chrome_switches.h"
37 #include "chrome/common/extensions/extension.h" 38 #include "chrome/common/extensions/extension.h"
38 #include "chrome/common/extensions/extension_constants.h" 39 #include "chrome/common/extensions/extension_constants.h"
39 #include "chrome/common/extensions/extension_file_util.h" 40 #include "chrome/common/extensions/extension_file_util.h"
40 #include "chrome/common/extensions/extension_l10n_util.h" 41 #include "chrome/common/extensions/extension_l10n_util.h"
41 #include "chrome/common/notification_service.h" 42 #include "chrome/common/notification_service.h"
42 #include "chrome/common/notification_type.h" 43 #include "chrome/common/notification_type.h"
43 #include "chrome/common/json_value_serializer.h" 44 #include "chrome/common/json_value_serializer.h"
44 #include "chrome/common/pref_names.h" 45 #include "chrome/common/pref_names.h"
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after
317 318
318 // Get hold of information we need after unloading, since the extension 319 // Get hold of information we need after unloading, since the extension
319 // pointer will be invalid then. 320 // pointer will be invalid then.
320 GURL extension_url(extension->url()); 321 GURL extension_url(extension->url());
321 Extension::Location location(extension->location()); 322 Extension::Location location(extension->location());
322 323
323 // Also copy the extension identifier since the reference might have been 324 // Also copy the extension identifier since the reference might have been
324 // obtained via Extension::id(). 325 // obtained via Extension::id().
325 std::string extension_id_copy(extension_id); 326 std::string extension_id_copy(extension_id);
326 327
328 if (profile_->GetTemplateURLModel())
329 profile_->GetTemplateURLModel()->UnregisterExtensionKeyword(extension);
330
327 // Unload before doing more cleanup to ensure that nothing is hanging on to 331 // Unload before doing more cleanup to ensure that nothing is hanging on to
328 // any of these resources. 332 // any of these resources.
329 UnloadExtension(extension_id); 333 UnloadExtension(extension_id);
330 334
331 extension_prefs_->OnExtensionUninstalled(extension_id_copy, location, 335 extension_prefs_->OnExtensionUninstalled(extension_id_copy, location,
332 external_uninstall); 336 external_uninstall);
333 337
334 // Tell the backend to start deleting installed extensions on the file thread. 338 // Tell the backend to start deleting installed extensions on the file thread.
335 if (Extension::LOAD != location) { 339 if (Extension::LOAD != location) {
336 ChromeThread::PostTask( 340 ChromeThread::PostTask(
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
756 ready_ = true; 760 ready_ = true;
757 if (updater_.get()) { 761 if (updater_.get()) {
758 updater_->Start(); 762 updater_->Start();
759 } 763 }
760 NotificationService::current()->Notify( 764 NotificationService::current()->Notify(
761 NotificationType::EXTENSIONS_READY, 765 NotificationType::EXTENSIONS_READY,
762 Source<Profile>(profile_), 766 Source<Profile>(profile_),
763 NotificationService::NoDetails()); 767 NotificationService::NoDetails());
764 } 768 }
765 769
766 void ExtensionsService::OnExtensionLoaded(Extension* extension, 770 bool ExtensionsService::OnExtensionLoaded(Extension* extension,
767 bool allow_privilege_increase) { 771 bool allow_privilege_increase) {
768 // Ensure extension is deleted unless we transfer ownership. 772 // Ensure extension is deleted unless we transfer ownership.
769 scoped_ptr<Extension> scoped_extension(extension); 773 scoped_ptr<Extension> scoped_extension(extension);
770 774
771 // The extension is now loaded, remove its data from unloaded extension map. 775 // The extension is now loaded, remove its data from unloaded extension map.
772 unloaded_extension_paths_.erase(extension->id()); 776 unloaded_extension_paths_.erase(extension->id());
773 777
774 // TODO(aa): Need to re-evaluate this branch. Does this still make sense now 778 // TODO(aa): Need to re-evaluate this branch. Does this still make sense now
775 // that extensions are enabled by default? 779 // that extensions are enabled by default?
776 if (extensions_enabled() || 780 if (extensions_enabled() ||
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after
824 break; 828 break;
825 default: 829 default:
826 NOTREACHED(); 830 NOTREACHED();
827 break; 831 break;
828 } 832 }
829 } 833 }
830 834
831 extension->set_being_upgraded(false); 835 extension->set_being_upgraded(false);
832 836
833 UpdateActiveExtensionsInCrashReporter(); 837 UpdateActiveExtensionsInCrashReporter();
838 return true;
834 } 839 }
835 840
836 void ExtensionsService::UpdateActiveExtensionsInCrashReporter() { 841 void ExtensionsService::UpdateActiveExtensionsInCrashReporter() {
837 std::set<std::string> extension_ids; 842 std::set<std::string> extension_ids;
838 for (size_t i = 0; i < extensions_.size(); ++i) { 843 for (size_t i = 0; i < extensions_.size(); ++i) {
839 if (!extensions_[i]->IsTheme()) 844 if (!extensions_[i]->IsTheme())
840 extension_ids.insert(extensions_[i]->id()); 845 extension_ids.insert(extensions_[i]->id());
841 } 846 }
842 847
843 child_process_logging::SetActiveExtensions(extension_ids); 848 child_process_logging::SetActiveExtensions(extension_ids);
(...skipping 27 matching lines...) Expand all
871 Source<Profile>(profile_), 876 Source<Profile>(profile_),
872 Details<Extension>(extension)); 877 Details<Extension>(extension));
873 } else { 878 } else {
874 NotificationService::current()->Notify( 879 NotificationService::current()->Notify(
875 NotificationType::EXTENSION_INSTALLED, 880 NotificationType::EXTENSION_INSTALLED,
876 Source<Profile>(profile_), 881 Source<Profile>(profile_),
877 Details<Extension>(extension)); 882 Details<Extension>(extension));
878 } 883 }
879 884
880 // Also load the extension. 885 // Also load the extension.
881 OnExtensionLoaded(extension, allow_privilege_increase); 886 bool success = OnExtensionLoaded(extension, allow_privilege_increase);
887 if (!success)
888 extension = NULL; // extension is deleted on failure.
882 889
883 // Erase any pending extension. 890 // Erase any pending extension.
884 if (it != pending_extensions_.end()) { 891 if (it != pending_extensions_.end()) {
885 pending_extensions_.erase(it); 892 pending_extensions_.erase(it);
886 } 893 }
894
895 if (success && profile_->GetTemplateURLModel())
896 profile_->GetTemplateURLModel()->RegisterExtensionKeyword(extension);
887 } 897 }
888 898
889 Extension* ExtensionsService::GetExtensionByIdInternal(const std::string& id, 899 Extension* ExtensionsService::GetExtensionByIdInternal(const std::string& id,
890 bool include_enabled, 900 bool include_enabled,
891 bool include_disabled) { 901 bool include_disabled) {
892 std::string lowercase_id = StringToLowerASCII(id); 902 std::string lowercase_id = StringToLowerASCII(id);
893 if (include_enabled) { 903 if (include_enabled) {
894 for (ExtensionList::const_iterator iter = extensions_.begin(); 904 for (ExtensionList::const_iterator iter = extensions_.begin();
895 iter != extensions_.end(); ++iter) { 905 iter != extensions_.end(); ++iter) {
896 if ((*iter)->id() == lowercase_id) 906 if ((*iter)->id() == lowercase_id)
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after
1198 // Finish installing on UI thread. 1208 // Finish installing on UI thread.
1199 ChromeThread::PostTask( 1209 ChromeThread::PostTask(
1200 ChromeThread::UI, FROM_HERE, 1210 ChromeThread::UI, FROM_HERE,
1201 NewRunnableMethod( 1211 NewRunnableMethod(
1202 frontend_, 1212 frontend_,
1203 &ExtensionsService::ContinueLoadAllExtensions, 1213 &ExtensionsService::ContinueLoadAllExtensions,
1204 extensions_to_reload, 1214 extensions_to_reload,
1205 start_time, 1215 start_time,
1206 true)); 1216 true));
1207 } 1217 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extensions_service.h ('k') | chrome/browser/gtk/location_bar_view_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698