OLD | NEW |
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 11 matching lines...) Expand all Loading... |
22 #include "base/strings/stringprintf.h" | 22 #include "base/strings/stringprintf.h" |
23 #include "base/strings/utf_string_conversions.h" | 23 #include "base/strings/utf_string_conversions.h" |
24 #include "base/threading/sequenced_worker_pool.h" | 24 #include "base/threading/sequenced_worker_pool.h" |
25 #include "base/threading/thread_restrictions.h" | 25 #include "base/threading/thread_restrictions.h" |
26 #include "base/time/time.h" | 26 #include "base/time/time.h" |
27 #include "base/values.h" | 27 #include "base/values.h" |
28 #include "base/version.h" | 28 #include "base/version.h" |
29 #include "chrome/browser/app_mode/app_mode_utils.h" | 29 #include "chrome/browser/app_mode/app_mode_utils.h" |
30 #include "chrome/browser/browser_process.h" | 30 #include "chrome/browser/browser_process.h" |
31 #include "chrome/browser/chrome_notification_types.h" | 31 #include "chrome/browser/chrome_notification_types.h" |
32 #include "chrome/browser/devtools/devtools_window.h" | |
33 #include "chrome/browser/extensions/api/app_runtime/app_runtime_api.h" | 32 #include "chrome/browser/extensions/api/app_runtime/app_runtime_api.h" |
34 #include "chrome/browser/extensions/api/declarative/rules_registry_service.h" | 33 #include "chrome/browser/extensions/api/declarative/rules_registry_service.h" |
35 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" | 34 #include "chrome/browser/extensions/api/extension_action/extension_action_api.h" |
36 #include "chrome/browser/extensions/api/profile_keyed_api_factory.h" | 35 #include "chrome/browser/extensions/api/profile_keyed_api_factory.h" |
37 #include "chrome/browser/extensions/api/runtime/runtime_api.h" | 36 #include "chrome/browser/extensions/api/runtime/runtime_api.h" |
38 #include "chrome/browser/extensions/api/storage/settings_frontend.h" | 37 #include "chrome/browser/extensions/api/storage/settings_frontend.h" |
39 #include "chrome/browser/extensions/app_sync_data.h" | 38 #include "chrome/browser/extensions/app_sync_data.h" |
40 #include "chrome/browser/extensions/browser_event_router.h" | 39 #include "chrome/browser/extensions/browser_event_router.h" |
41 #include "chrome/browser/extensions/component_loader.h" | 40 #include "chrome/browser/extensions/component_loader.h" |
42 #include "chrome/browser/extensions/crx_installer.h" | 41 #include "chrome/browser/extensions/crx_installer.h" |
43 #include "chrome/browser/extensions/data_deleter.h" | 42 #include "chrome/browser/extensions/data_deleter.h" |
44 #include "chrome/browser/extensions/extension_disabled_ui.h" | 43 #include "chrome/browser/extensions/extension_disabled_ui.h" |
45 #include "chrome/browser/extensions/extension_error_reporter.h" | 44 #include "chrome/browser/extensions/extension_error_reporter.h" |
46 #include "chrome/browser/extensions/extension_error_ui.h" | 45 #include "chrome/browser/extensions/extension_error_ui.h" |
47 #include "chrome/browser/extensions/extension_host.h" | 46 #include "chrome/browser/extensions/extension_host.h" |
48 #include "chrome/browser/extensions/extension_install_ui.h" | 47 #include "chrome/browser/extensions/extension_install_ui.h" |
49 #include "chrome/browser/extensions/extension_process_manager.h" | 48 #include "chrome/browser/extensions/extension_process_manager.h" |
50 #include "chrome/browser/extensions/extension_sorting.h" | 49 #include "chrome/browser/extensions/extension_sorting.h" |
51 #include "chrome/browser/extensions/extension_special_storage_policy.h" | 50 #include "chrome/browser/extensions/extension_special_storage_policy.h" |
52 #include "chrome/browser/extensions/extension_sync_data.h" | 51 #include "chrome/browser/extensions/extension_sync_data.h" |
53 #include "chrome/browser/extensions/extension_system.h" | 52 #include "chrome/browser/extensions/extension_system.h" |
54 #include "chrome/browser/extensions/external_install_ui.h" | 53 #include "chrome/browser/extensions/external_install_ui.h" |
55 #include "chrome/browser/extensions/external_provider_impl.h" | 54 #include "chrome/browser/extensions/external_provider_impl.h" |
56 #include "chrome/browser/extensions/external_provider_interface.h" | 55 #include "chrome/browser/extensions/external_provider_interface.h" |
57 #include "chrome/browser/extensions/installed_loader.h" | 56 #include "chrome/browser/extensions/installed_loader.h" |
58 #include "chrome/browser/extensions/lazy_background_task_queue.h" | |
59 #include "chrome/browser/extensions/management_policy.h" | 57 #include "chrome/browser/extensions/management_policy.h" |
60 #include "chrome/browser/extensions/pending_extension_manager.h" | 58 #include "chrome/browser/extensions/pending_extension_manager.h" |
61 #include "chrome/browser/extensions/permissions_updater.h" | 59 #include "chrome/browser/extensions/permissions_updater.h" |
62 #include "chrome/browser/extensions/unpacked_installer.h" | 60 #include "chrome/browser/extensions/unpacked_installer.h" |
63 #include "chrome/browser/extensions/update_observer.h" | 61 #include "chrome/browser/extensions/update_observer.h" |
64 #include "chrome/browser/extensions/updater/extension_updater.h" | 62 #include "chrome/browser/extensions/updater/extension_updater.h" |
65 #include "chrome/browser/profiles/profile.h" | 63 #include "chrome/browser/profiles/profile.h" |
66 #include "chrome/browser/profiles/profile_manager.h" | 64 #include "chrome/browser/profiles/profile_manager.h" |
67 #include "chrome/browser/ui/webui/favicon_source.h" | 65 #include "chrome/browser/ui/webui/favicon_source.h" |
68 #include "chrome/browser/ui/webui/ntp/thumbnail_source.h" | 66 #include "chrome/browser/ui/webui/ntp/thumbnail_source.h" |
(...skipping 2891 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2960 | 2958 |
2961 void ExtensionService::SetBackgroundPageReady(const Extension* extension) { | 2959 void ExtensionService::SetBackgroundPageReady(const Extension* extension) { |
2962 DCHECK(extensions::BackgroundInfo::HasBackgroundPage(extension)); | 2960 DCHECK(extensions::BackgroundInfo::HasBackgroundPage(extension)); |
2963 extension_runtime_data_[extension->id()].background_page_ready = true; | 2961 extension_runtime_data_[extension->id()].background_page_ready = true; |
2964 content::NotificationService::current()->Notify( | 2962 content::NotificationService::current()->Notify( |
2965 chrome::NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY, | 2963 chrome::NOTIFICATION_EXTENSION_BACKGROUND_PAGE_READY, |
2966 content::Source<const Extension>(extension), | 2964 content::Source<const Extension>(extension), |
2967 content::NotificationService::NoDetails()); | 2965 content::NotificationService::NoDetails()); |
2968 } | 2966 } |
2969 | 2967 |
2970 void ExtensionService::InspectBackgroundPage(const Extension* extension) { | |
2971 DCHECK(extension); | |
2972 | |
2973 ExtensionProcessManager* pm = system_->process_manager(); | |
2974 extensions::LazyBackgroundTaskQueue* queue = | |
2975 system_->lazy_background_task_queue(); | |
2976 | |
2977 extensions::ExtensionHost* host = | |
2978 pm->GetBackgroundHostForExtension(extension->id()); | |
2979 if (host) { | |
2980 InspectExtensionHost(host); | |
2981 } else { | |
2982 queue->AddPendingTask( | |
2983 profile_, extension->id(), | |
2984 base::Bind(&ExtensionService::InspectExtensionHost, | |
2985 base::Unretained(this))); | |
2986 } | |
2987 } | |
2988 | |
2989 bool ExtensionService::IsBeingUpgraded(const Extension* extension) const { | 2968 bool ExtensionService::IsBeingUpgraded(const Extension* extension) const { |
2990 ExtensionRuntimeDataMap::const_iterator it = | 2969 ExtensionRuntimeDataMap::const_iterator it = |
2991 extension_runtime_data_.find(extension->id()); | 2970 extension_runtime_data_.find(extension->id()); |
2992 return it == extension_runtime_data_.end() ? false : | 2971 return it == extension_runtime_data_.end() ? false : |
2993 it->second.being_upgraded; | 2972 it->second.being_upgraded; |
2994 } | 2973 } |
2995 | 2974 |
2996 void ExtensionService::SetBeingUpgraded(const Extension* extension, | 2975 void ExtensionService::SetBeingUpgraded(const Extension* extension, |
2997 bool value) { | 2976 bool value) { |
2998 extension_runtime_data_[extension->id()].being_upgraded = value; | 2977 extension_runtime_data_[extension->id()].being_upgraded = value; |
(...skipping 17 matching lines...) Expand all Loading... |
3016 extension_runtime_data_.find(extension->id()); | 2995 extension_runtime_data_.find(extension->id()); |
3017 return it == extension_runtime_data_.end() ? false : | 2996 return it == extension_runtime_data_.end() ? false : |
3018 it->second.has_used_webrequest; | 2997 it->second.has_used_webrequest; |
3019 } | 2998 } |
3020 | 2999 |
3021 void ExtensionService::SetHasUsedWebRequest(const Extension* extension, | 3000 void ExtensionService::SetHasUsedWebRequest(const Extension* extension, |
3022 bool value) { | 3001 bool value) { |
3023 extension_runtime_data_[extension->id()].has_used_webrequest = value; | 3002 extension_runtime_data_[extension->id()].has_used_webrequest = value; |
3024 } | 3003 } |
3025 | 3004 |
3026 void ExtensionService::InspectExtensionHost( | |
3027 extensions::ExtensionHost* host) { | |
3028 if (host) | |
3029 DevToolsWindow::OpenDevToolsWindow(host->render_view_host()); | |
3030 } | |
3031 | |
3032 bool ExtensionService::ShouldEnableOnInstall(const Extension* extension) { | 3005 bool ExtensionService::ShouldEnableOnInstall(const Extension* extension) { |
3033 // Extensions installed by policy can't be disabled. So even if a previous | 3006 // Extensions installed by policy can't be disabled. So even if a previous |
3034 // installation disabled the extension, make sure it is now enabled. | 3007 // installation disabled the extension, make sure it is now enabled. |
3035 if (system_->management_policy()->MustRemainEnabled(extension, NULL)) | 3008 if (system_->management_policy()->MustRemainEnabled(extension, NULL)) |
3036 return true; | 3009 return true; |
3037 | 3010 |
3038 if (extension_prefs_->IsExtensionDisabled(extension->id())) | 3011 if (extension_prefs_->IsExtensionDisabled(extension->id())) |
3039 return false; | 3012 return false; |
3040 | 3013 |
3041 if (FeatureSwitch::prompt_for_external_extensions()->IsEnabled()) { | 3014 if (FeatureSwitch::prompt_for_external_extensions()->IsEnabled()) { |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3182 } | 3155 } |
3183 | 3156 |
3184 void ExtensionService::AddUpdateObserver(extensions::UpdateObserver* observer) { | 3157 void ExtensionService::AddUpdateObserver(extensions::UpdateObserver* observer) { |
3185 update_observers_.AddObserver(observer); | 3158 update_observers_.AddObserver(observer); |
3186 } | 3159 } |
3187 | 3160 |
3188 void ExtensionService::RemoveUpdateObserver( | 3161 void ExtensionService::RemoveUpdateObserver( |
3189 extensions::UpdateObserver* observer) { | 3162 extensions::UpdateObserver* observer) { |
3190 update_observers_.RemoveObserver(observer); | 3163 update_observers_.RemoveObserver(observer); |
3191 } | 3164 } |
OLD | NEW |