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

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

Issue 8515027: Define the public version of the browser side RenderProcessHost interface. This interface is not ... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 1 month 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) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 #include "chrome/common/extensions/extension_constants.h" 80 #include "chrome/common/extensions/extension_constants.h"
81 #include "chrome/common/extensions/extension_error_utils.h" 81 #include "chrome/common/extensions/extension_error_utils.h"
82 #include "chrome/common/extensions/extension_file_util.h" 82 #include "chrome/common/extensions/extension_file_util.h"
83 #include "chrome/common/extensions/extension_messages.h" 83 #include "chrome/common/extensions/extension_messages.h"
84 #include "chrome/common/extensions/extension_resource.h" 84 #include "chrome/common/extensions/extension_resource.h"
85 #include "chrome/common/pref_names.h" 85 #include "chrome/common/pref_names.h"
86 #include "chrome/common/url_constants.h" 86 #include "chrome/common/url_constants.h"
87 #include "content/browser/debugger/devtools_manager.h" 87 #include "content/browser/debugger/devtools_manager.h"
88 #include "content/browser/plugin_process_host.h" 88 #include "content/browser/plugin_process_host.h"
89 #include "content/browser/plugin_service.h" 89 #include "content/browser/plugin_service.h"
90 #include "content/browser/renderer_host/render_process_host.h"
91 #include "content/browser/user_metrics.h" 90 #include "content/browser/user_metrics.h"
92 #include "content/common/pepper_plugin_registry.h" 91 #include "content/common/pepper_plugin_registry.h"
93 #include "content/public/browser/browser_thread.h" 92 #include "content/public/browser/browser_thread.h"
94 #include "content/public/browser/notification_service.h" 93 #include "content/public/browser/notification_service.h"
95 #include "content/public/browser/notification_types.h" 94 #include "content/public/browser/notification_types.h"
95 #include "content/public/browser/render_process_host.h"
96 #include "googleurl/src/gurl.h" 96 #include "googleurl/src/gurl.h"
97 #include "net/base/registry_controlled_domain.h" 97 #include "net/base/registry_controlled_domain.h"
98 #include "webkit/database/database_tracker.h" 98 #include "webkit/database/database_tracker.h"
99 #include "webkit/database/database_util.h" 99 #include "webkit/database/database_util.h"
100 100
101 #if defined(OS_CHROMEOS) 101 #if defined(OS_CHROMEOS)
102 #include "chrome/browser/chromeos/cros/cros_library.h" 102 #include "chrome/browser/chromeos/cros/cros_library.h"
103 #include "chrome/browser/chromeos/extensions/file_browser_event_router.h" 103 #include "chrome/browser/chromeos/extensions/file_browser_event_router.h"
104 #include "chrome/browser/chromeos/extensions/input_method_event_router.h" 104 #include "chrome/browser/chromeos/extensions/input_method_event_router.h"
105 #include "chrome/browser/chromeos/extensions/media_player_event_router.h" 105 #include "chrome/browser/chromeos/extensions/media_player_event_router.h"
(...skipping 803 matching lines...) Expand 10 before | Expand all | Expand 10 after
909 profile_->RegisterExtensionWithRequestContexts(extension); 909 profile_->RegisterExtensionWithRequestContexts(extension);
910 910
911 // Tell subsystems that use the EXTENSION_LOADED notification about the new 911 // Tell subsystems that use the EXTENSION_LOADED notification about the new
912 // extension. 912 // extension.
913 content::NotificationService::current()->Notify( 913 content::NotificationService::current()->Notify(
914 chrome::NOTIFICATION_EXTENSION_LOADED, 914 chrome::NOTIFICATION_EXTENSION_LOADED,
915 content::Source<Profile>(profile_), 915 content::Source<Profile>(profile_),
916 content::Details<const Extension>(extension)); 916 content::Details<const Extension>(extension));
917 917
918 // Tell renderers about the new extension. 918 // Tell renderers about the new extension.
919 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); 919 for (content::RenderProcessHost::iterator i(
920 content::RenderProcessHost::AllHostsIterator());
920 !i.IsAtEnd(); i.Advance()) { 921 !i.IsAtEnd(); i.Advance()) {
921 RenderProcessHost* host = i.GetCurrentValue(); 922 content::RenderProcessHost* host = i.GetCurrentValue();
922 Profile* host_profile = 923 Profile* host_profile =
923 Profile::FromBrowserContext(host->browser_context()); 924 Profile::FromBrowserContext(host->GetBrowserContext());
924 if (host_profile->GetOriginalProfile() == profile_->GetOriginalProfile()) { 925 if (host_profile->GetOriginalProfile() == profile_->GetOriginalProfile()) {
925 std::vector<ExtensionMsg_Loaded_Params> loaded_extensions( 926 std::vector<ExtensionMsg_Loaded_Params> loaded_extensions(
926 1, ExtensionMsg_Loaded_Params(extension)); 927 1, ExtensionMsg_Loaded_Params(extension));
927 host->Send( 928 host->Send(
928 new ExtensionMsg_Loaded(loaded_extensions)); 929 new ExtensionMsg_Loaded(loaded_extensions));
929 } 930 }
930 } 931 }
931 932
932 // Tell a random-ass collection of other subsystems about the new extension. 933 // Tell a random-ass collection of other subsystems about the new extension.
933 // TODO(aa): What should we do with all this goop? Can it move into the 934 // TODO(aa): What should we do with all this goop? Can it move into the
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
1029 1030
1030 void ExtensionService::NotifyExtensionUnloaded( 1031 void ExtensionService::NotifyExtensionUnloaded(
1031 const Extension* extension, 1032 const Extension* extension,
1032 extension_misc::UnloadedExtensionReason reason) { 1033 extension_misc::UnloadedExtensionReason reason) {
1033 UnloadedExtensionInfo details(extension, reason); 1034 UnloadedExtensionInfo details(extension, reason);
1034 content::NotificationService::current()->Notify( 1035 content::NotificationService::current()->Notify(
1035 chrome::NOTIFICATION_EXTENSION_UNLOADED, 1036 chrome::NOTIFICATION_EXTENSION_UNLOADED,
1036 content::Source<Profile>(profile_), 1037 content::Source<Profile>(profile_),
1037 content::Details<UnloadedExtensionInfo>(&details)); 1038 content::Details<UnloadedExtensionInfo>(&details));
1038 1039
1039 for (RenderProcessHost::iterator i(RenderProcessHost::AllHostsIterator()); 1040 for (content::RenderProcessHost::iterator i(
1041 content::RenderProcessHost::AllHostsIterator());
1040 !i.IsAtEnd(); i.Advance()) { 1042 !i.IsAtEnd(); i.Advance()) {
1041 RenderProcessHost* host = i.GetCurrentValue(); 1043 content::RenderProcessHost* host = i.GetCurrentValue();
1042 Profile* host_profile = 1044 Profile* host_profile =
1043 Profile::FromBrowserContext(host->browser_context()); 1045 Profile::FromBrowserContext(host->GetBrowserContext());
1044 if (host_profile->GetOriginalProfile() == profile_->GetOriginalProfile()) 1046 if (host_profile->GetOriginalProfile() == profile_->GetOriginalProfile())
1045 host->Send(new ExtensionMsg_Unloaded(extension->id())); 1047 host->Send(new ExtensionMsg_Unloaded(extension->id()));
1046 } 1048 }
1047 1049
1048 profile_->UnregisterExtensionWithRequestContexts(extension->id(), reason); 1050 profile_->UnregisterExtensionWithRequestContexts(extension->id(), reason);
1049 profile_->GetExtensionSpecialStoragePolicy()-> 1051 profile_->GetExtensionSpecialStoragePolicy()->
1050 RevokeRightsForExtension(extension); 1052 RevokeRightsForExtension(extension);
1051 1053
1052 ExtensionWebUI::UnregisterChromeURLOverrides( 1054 ExtensionWebUI::UnregisterChromeURLOverrides(
1053 profile_, extension->GetChromeURLOverrides()); 1055 profile_, extension->GetChromeURLOverrides());
(...skipping 1255 matching lines...) Expand 10 before | Expand all | Expand 10 after
2309 // access to the Extension and ExtensionHost. 2311 // access to the Extension and ExtensionHost.
2310 MessageLoop::current()->PostTask( 2312 MessageLoop::current()->PostTask(
2311 FROM_HERE, 2313 FROM_HERE,
2312 base::Bind( 2314 base::Bind(
2313 &ExtensionService::TrackTerminatedExtension, 2315 &ExtensionService::TrackTerminatedExtension,
2314 AsWeakPtr(), 2316 AsWeakPtr(),
2315 host->extension())); 2317 host->extension()));
2316 break; 2318 break;
2317 } 2319 }
2318 case content::NOTIFICATION_RENDERER_PROCESS_CREATED: { 2320 case content::NOTIFICATION_RENDERER_PROCESS_CREATED: {
2319 RenderProcessHost* process = 2321 content::RenderProcessHost* process =
2320 content::Source<RenderProcessHost>(source).ptr(); 2322 content::Source<content::RenderProcessHost>(source).ptr();
2321 Profile* host_profile = 2323 Profile* host_profile =
2322 Profile::FromBrowserContext(process->browser_context()); 2324 Profile::FromBrowserContext(process->GetBrowserContext());
2323 if (!profile_->IsSameProfile(host_profile->GetOriginalProfile())) 2325 if (!profile_->IsSameProfile(host_profile->GetOriginalProfile()))
2324 break; 2326 break;
2325 2327
2326 // Valid extension function names, used to setup bindings in renderer. 2328 // Valid extension function names, used to setup bindings in renderer.
2327 std::vector<std::string> function_names; 2329 std::vector<std::string> function_names;
2328 ExtensionFunctionDispatcher::GetAllFunctionNames(&function_names); 2330 ExtensionFunctionDispatcher::GetAllFunctionNames(&function_names);
2329 process->Send(new ExtensionMsg_SetFunctionNames(function_names)); 2331 process->Send(new ExtensionMsg_SetFunctionNames(function_names));
2330 2332
2331 // Scripting whitelist. This is modified by tests and must be communicated 2333 // Scripting whitelist. This is modified by tests and must be communicated
2332 // to renderers. 2334 // to renderers.
2333 process->Send(new ExtensionMsg_SetScriptingWhitelist( 2335 process->Send(new ExtensionMsg_SetScriptingWhitelist(
2334 *Extension::GetScriptingWhitelist())); 2336 *Extension::GetScriptingWhitelist()));
2335 2337
2336 // Loaded extensions. 2338 // Loaded extensions.
2337 std::vector<ExtensionMsg_Loaded_Params> loaded_extensions; 2339 std::vector<ExtensionMsg_Loaded_Params> loaded_extensions;
2338 for (size_t i = 0; i < extensions_.size(); ++i) { 2340 for (size_t i = 0; i < extensions_.size(); ++i) {
2339 loaded_extensions.push_back( 2341 loaded_extensions.push_back(
2340 ExtensionMsg_Loaded_Params(extensions_[i])); 2342 ExtensionMsg_Loaded_Params(extensions_[i]));
2341 } 2343 }
2342 process->Send(new ExtensionMsg_Loaded(loaded_extensions)); 2344 process->Send(new ExtensionMsg_Loaded(loaded_extensions));
2343 break; 2345 break;
2344 } 2346 }
2345 case content::NOTIFICATION_RENDERER_PROCESS_TERMINATED: { 2347 case content::NOTIFICATION_RENDERER_PROCESS_TERMINATED: {
2346 RenderProcessHost* process = 2348 content::RenderProcessHost* process =
2347 content::Source<RenderProcessHost>(source).ptr(); 2349 content::Source<content::RenderProcessHost>(source).ptr();
2348 Profile* host_profile = 2350 Profile* host_profile =
2349 Profile::FromBrowserContext(process->browser_context()); 2351 Profile::FromBrowserContext(process->GetBrowserContext());
2350 if (!profile_->IsSameProfile(host_profile->GetOriginalProfile())) 2352 if (!profile_->IsSameProfile(host_profile->GetOriginalProfile()))
2351 break; 2353 break;
2352 2354
2353 installed_app_hosts_.erase(process->id()); 2355 installed_app_hosts_.erase(process->GetID());
2354 2356
2355 process_map_.Remove(process->id()); 2357 process_map_.Remove(process->GetID());
2356 BrowserThread::PostTask( 2358 BrowserThread::PostTask(
2357 BrowserThread::IO, FROM_HERE, 2359 BrowserThread::IO, FROM_HERE,
2358 base::Bind(&ExtensionInfoMap::UnregisterAllExtensionsInProcess, 2360 base::Bind(&ExtensionInfoMap::UnregisterAllExtensionsInProcess,
2359 profile_->GetExtensionInfoMap(), 2361 profile_->GetExtensionInfoMap(),
2360 process->id())); 2362 process->GetID()));
2361 break; 2363 break;
2362 } 2364 }
2363 case chrome::NOTIFICATION_PREF_CHANGED: { 2365 case chrome::NOTIFICATION_PREF_CHANGED: {
2364 std::string* pref_name = content::Details<std::string>(details).ptr(); 2366 std::string* pref_name = content::Details<std::string>(details).ptr();
2365 if (*pref_name == prefs::kExtensionInstallAllowList || 2367 if (*pref_name == prefs::kExtensionInstallAllowList ||
2366 *pref_name == prefs::kExtensionInstallDenyList) { 2368 *pref_name == prefs::kExtensionInstallDenyList) {
2367 CheckAdminBlacklist(); 2369 CheckAdminBlacklist();
2368 } else { 2370 } else {
2369 NOTREACHED() << "Unexpected preference name."; 2371 NOTREACHED() << "Unexpected preference name.";
2370 } 2372 }
(...skipping 131 matching lines...) Expand 10 before | Expand all | Expand 10 after
2502 2504
2503 ExtensionService::NaClModuleInfoList::iterator 2505 ExtensionService::NaClModuleInfoList::iterator
2504 ExtensionService::FindNaClModule(const GURL& url) { 2506 ExtensionService::FindNaClModule(const GURL& url) {
2505 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin(); 2507 for (NaClModuleInfoList::iterator iter = nacl_module_list_.begin();
2506 iter != nacl_module_list_.end(); ++iter) { 2508 iter != nacl_module_list_.end(); ++iter) {
2507 if (iter->url == url) 2509 if (iter->url == url)
2508 return iter; 2510 return iter;
2509 } 2511 }
2510 return nacl_module_list_.end(); 2512 return nacl_module_list_.end();
2511 } 2513 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_save_page_api.cc ('k') | chrome/browser/extensions/extension_tab_helper.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698