OLD | NEW |
---|---|
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 "chrome/browser/extensions/extension_service.h" | 5 #include "chrome/browser/extensions/extension_service.h" |
6 | 6 |
7 #include <algorithm> | 7 #include <algorithm> |
8 #include <set> | 8 #include <set> |
9 | 9 |
10 #include "base/basictypes.h" | 10 #include "base/basictypes.h" |
(...skipping 27 matching lines...) Expand all Loading... | |
38 #include "chrome/browser/extensions/crx_installer.h" | 38 #include "chrome/browser/extensions/crx_installer.h" |
39 #include "chrome/browser/extensions/default_apps_trial.h" | 39 #include "chrome/browser/extensions/default_apps_trial.h" |
40 #include "chrome/browser/extensions/extension_browser_event_router.h" | 40 #include "chrome/browser/extensions/extension_browser_event_router.h" |
41 #include "chrome/browser/extensions/extension_cookies_api.h" | 41 #include "chrome/browser/extensions/extension_cookies_api.h" |
42 #include "chrome/browser/extensions/extension_data_deleter.h" | 42 #include "chrome/browser/extensions/extension_data_deleter.h" |
43 #include "chrome/browser/extensions/extension_error_reporter.h" | 43 #include "chrome/browser/extensions/extension_error_reporter.h" |
44 #include "chrome/browser/extensions/extension_global_error.h" | 44 #include "chrome/browser/extensions/extension_global_error.h" |
45 #include "chrome/browser/extensions/extension_host.h" | 45 #include "chrome/browser/extensions/extension_host.h" |
46 #include "chrome/browser/extensions/extension_input_ime_api.h" | 46 #include "chrome/browser/extensions/extension_input_ime_api.h" |
47 #include "chrome/browser/extensions/extension_management_api.h" | 47 #include "chrome/browser/extensions/extension_management_api.h" |
48 #include "chrome/browser/extensions/extension_pref_value_map.h" | |
48 #include "chrome/browser/extensions/extension_preference_api.h" | 49 #include "chrome/browser/extensions/extension_preference_api.h" |
49 #include "chrome/browser/extensions/extension_process_manager.h" | 50 #include "chrome/browser/extensions/extension_process_manager.h" |
50 #include "chrome/browser/extensions/extension_processes_api.h" | 51 #include "chrome/browser/extensions/extension_processes_api.h" |
51 #include "chrome/browser/extensions/extension_sorting.h" | 52 #include "chrome/browser/extensions/extension_sorting.h" |
52 #include "chrome/browser/extensions/extension_special_storage_policy.h" | 53 #include "chrome/browser/extensions/extension_special_storage_policy.h" |
53 #include "chrome/browser/extensions/extension_sync_data.h" | 54 #include "chrome/browser/extensions/extension_sync_data.h" |
54 #include "chrome/browser/extensions/extension_updater.h" | 55 #include "chrome/browser/extensions/extension_updater.h" |
55 #include "chrome/browser/extensions/extension_web_ui.h" | 56 #include "chrome/browser/extensions/extension_web_ui.h" |
56 #include "chrome/browser/extensions/extension_webnavigation_api.h" | 57 #include "chrome/browser/extensions/extension_webnavigation_api.h" |
57 #include "chrome/browser/extensions/external_extension_provider_impl.h" | 58 #include "chrome/browser/extensions/external_extension_provider_impl.h" |
(...skipping 13 matching lines...) Expand all Loading... | |
71 #include "chrome/browser/sync/api/sync_change.h" | 72 #include "chrome/browser/sync/api/sync_change.h" |
72 #include "chrome/browser/themes/theme_service.h" | 73 #include "chrome/browser/themes/theme_service.h" |
73 #include "chrome/browser/themes/theme_service_factory.h" | 74 #include "chrome/browser/themes/theme_service_factory.h" |
74 #include "chrome/browser/ui/browser.h" | 75 #include "chrome/browser/ui/browser.h" |
75 #include "chrome/browser/ui/browser_list.h" | 76 #include "chrome/browser/ui/browser_list.h" |
76 #include "chrome/browser/ui/global_error_service.h" | 77 #include "chrome/browser/ui/global_error_service.h" |
77 #include "chrome/browser/ui/global_error_service_factory.h" | 78 #include "chrome/browser/ui/global_error_service_factory.h" |
78 #include "chrome/browser/ui/webui/chrome_url_data_manager.h" | 79 #include "chrome/browser/ui/webui/chrome_url_data_manager.h" |
79 #include "chrome/browser/ui/webui/favicon_source.h" | 80 #include "chrome/browser/ui/webui/favicon_source.h" |
80 #include "chrome/browser/ui/webui/ntp/thumbnail_source.h" | 81 #include "chrome/browser/ui/webui/ntp/thumbnail_source.h" |
82 #include "chrome/browser/web_applications/web_app.h" | |
81 #include "chrome/common/child_process_logging.h" | 83 #include "chrome/common/child_process_logging.h" |
84 #include "chrome/common/chrome_constants.h" | |
82 #include "chrome/common/chrome_notification_types.h" | 85 #include "chrome/common/chrome_notification_types.h" |
83 #include "chrome/common/chrome_paths.h" | 86 #include "chrome/common/chrome_paths.h" |
84 #include "chrome/common/chrome_switches.h" | 87 #include "chrome/common/chrome_switches.h" |
85 #include "chrome/common/extensions/extension.h" | 88 #include "chrome/common/extensions/extension.h" |
86 #include "chrome/common/extensions/extension_constants.h" | 89 #include "chrome/common/extensions/extension_constants.h" |
87 #include "chrome/common/extensions/extension_error_utils.h" | 90 #include "chrome/common/extensions/extension_error_utils.h" |
88 #include "chrome/common/extensions/extension_file_util.h" | 91 #include "chrome/common/extensions/extension_file_util.h" |
89 #include "chrome/common/extensions/extension_messages.h" | 92 #include "chrome/common/extensions/extension_messages.h" |
90 #include "chrome/common/extensions/extension_resource.h" | 93 #include "chrome/common/extensions/extension_resource.h" |
91 #include "chrome/common/pref_names.h" | 94 #include "chrome/common/pref_names.h" |
(...skipping 2132 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2224 RecordPermissionMessagesHistogram( | 2227 RecordPermissionMessagesHistogram( |
2225 extension, "Extensions.Permissions_Install"); | 2228 extension, "Extensions.Permissions_Install"); |
2226 } | 2229 } |
2227 | 2230 |
2228 extension_prefs_->OnExtensionInstalled( | 2231 extension_prefs_->OnExtensionInstalled( |
2229 extension, | 2232 extension, |
2230 initial_enable ? Extension::ENABLED : Extension::DISABLED, | 2233 initial_enable ? Extension::ENABLED : Extension::DISABLED, |
2231 from_webstore, | 2234 from_webstore, |
2232 page_ordinal); | 2235 page_ordinal); |
2233 | 2236 |
2234 // Unpacked extensions default to allowing file access, but if that has been | 2237 if (initial_enable && extension->RequiresSeparateUserDataDirectory()) { |
2235 // overridden, don't reset the value. | 2238 SetupExtensionPrefsInSeparateDataDirectory( |
2236 if (Extension::ShouldAlwaysAllowFileAccess(extension->location()) && | 2239 extension, from_webstore, page_ordinal); |
2237 !extension_prefs_->HasAllowFileAccessSetting(id)) { | |
2238 extension_prefs_->SetAllowFileAccess(id, true); | |
2239 } | 2240 } |
2240 | 2241 |
2241 // If the extension should automatically block network startup (e.g., it uses | |
2242 // the webRequest API), set the preference. Otherwise clear it, in case the | |
2243 // extension stopped using a relevant API. | |
2244 extension_prefs_->SetDelaysNetworkRequests( | |
2245 extension->id(), extension->ImplicitlyDelaysNetworkStartup()); | |
2246 | |
2247 content::NotificationService::current()->Notify( | 2242 content::NotificationService::current()->Notify( |
2248 chrome::NOTIFICATION_EXTENSION_INSTALLED, | 2243 chrome::NOTIFICATION_EXTENSION_INSTALLED, |
2249 content::Source<Profile>(profile_), | 2244 content::Source<Profile>(profile_), |
2250 content::Details<const Extension>(extension)); | 2245 content::Details<const Extension>(extension)); |
2251 | 2246 |
2252 // Transfer ownership of |extension| to AddExtension. | 2247 // Transfer ownership of |extension| to AddExtension. |
2253 AddExtension(scoped_extension); | 2248 AddExtension(scoped_extension); |
2254 } | 2249 } |
2255 | 2250 |
2256 const Extension* ExtensionService::GetExtensionByIdInternal( | 2251 const Extension* ExtensionService::GetExtensionByIdInternal( |
(...skipping 372 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
2629 // | 2624 // |
2630 // To coexist with certain unit tests that don't have an IO thread message | 2625 // To coexist with certain unit tests that don't have an IO thread message |
2631 // loop available at ExtensionService shutdown, we lazy-initialize this | 2626 // loop available at ExtensionService shutdown, we lazy-initialize this |
2632 // object so that those cases neither create nor destroy a SocketController. | 2627 // object so that those cases neither create nor destroy a SocketController. |
2633 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); | 2628 CHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
2634 if (!socket_controller_) { | 2629 if (!socket_controller_) { |
2635 socket_controller_ = new extensions::SocketController(); | 2630 socket_controller_ = new extensions::SocketController(); |
2636 } | 2631 } |
2637 return socket_controller_; | 2632 return socket_controller_; |
2638 } | 2633 } |
2634 | |
2635 void ExtensionService::SetupExtensionPrefsInSeparateDataDirectory( | |
2636 const Extension* extension, | |
2637 bool from_webstore, | |
2638 const StringOrdinal& page_ordinal) { | |
2639 const std::string& id = extension->id(); | |
2640 FilePath data_dir = | |
2641 web_app::GetWebAppDataDirectory(profile_->GetPath(), *extension); | |
2642 FilePath profile_path = data_dir.AppendASCII(chrome::kInitialProfile); | |
2643 FilePath pref_path = profile_path.Append(chrome::kPreferencesFilename); | |
2644 scoped_ptr<PrefService> prefs_service(PrefService::CreatePrefService( | |
2645 pref_path, NULL, false)); | |
2646 | |
2647 ExtensionPrefValueMap map; | |
2648 ExtensionPrefs::RegisterUserPrefs(prefs_service.get()); | |
2649 ExtensionPrefs extension_prefs(prefs_service.get(), install_directory_, &map); | |
2650 extension_prefs.Init(false); | |
2651 extension_prefs.OnExtensionInstalled(extension, | |
2652 Extension::ENABLED, | |
2653 from_webstore, | |
2654 page_ordinal); | |
2655 extension_prefs.AddGrantedPermissions(id, extension->GetActivePermissions()); | |
Mihai Parparita -not on Chrome
2012/02/13 23:29:24
Is this a (partial) duplication of what CrxInstall
| |
2656 extension_prefs.SetExtensionState(id, Extension::ENABLED); | |
2657 | |
2658 prefs_service->CommitPendingWrite(); | |
2659 } | |
OLD | NEW |