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 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
75 #include "content/public/browser/url_data_source.h" | 75 #include "content/public/browser/url_data_source.h" |
76 #include "extensions/browser/app_sorting.h" | 76 #include "extensions/browser/app_sorting.h" |
77 #include "extensions/browser/event_router.h" | 77 #include "extensions/browser/event_router.h" |
78 #include "extensions/browser/extension_registry.h" | 78 #include "extensions/browser/extension_registry.h" |
79 #include "extensions/browser/extensions_browser_client.h" | 79 #include "extensions/browser/extensions_browser_client.h" |
80 #include "extensions/browser/external_provider_interface.h" | 80 #include "extensions/browser/external_provider_interface.h" |
81 #include "extensions/browser/management_policy.h" | 81 #include "extensions/browser/management_policy.h" |
82 #include "extensions/browser/pending_extension_manager.h" | 82 #include "extensions/browser/pending_extension_manager.h" |
83 #include "extensions/browser/pref_names.h" | 83 #include "extensions/browser/pref_names.h" |
84 #include "extensions/browser/process_manager.h" | 84 #include "extensions/browser/process_manager.h" |
| 85 #include "extensions/browser/process_map.h" |
85 #include "extensions/browser/update_observer.h" | 86 #include "extensions/browser/update_observer.h" |
86 #include "extensions/common/constants.h" | 87 #include "extensions/common/constants.h" |
87 #include "extensions/common/error_utils.h" | 88 #include "extensions/common/error_utils.h" |
88 #include "extensions/common/extension.h" | 89 #include "extensions/common/extension.h" |
89 #include "extensions/common/extensions_client.h" | 90 #include "extensions/common/extensions_client.h" |
90 #include "extensions/common/feature_switch.h" | 91 #include "extensions/common/feature_switch.h" |
91 #include "extensions/common/manifest.h" | 92 #include "extensions/common/manifest.h" |
92 #include "extensions/common/manifest_constants.h" | 93 #include "extensions/common/manifest_constants.h" |
93 #include "extensions/common/manifest_handlers/background_info.h" | 94 #include "extensions/common/manifest_handlers/background_info.h" |
94 #include "extensions/common/manifest_handlers/incognito_info.h" | 95 #include "extensions/common/manifest_handlers/incognito_info.h" |
(...skipping 2455 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2550 break; | 2551 break; |
2551 } | 2552 } |
2552 case content::NOTIFICATION_RENDERER_PROCESS_TERMINATED: { | 2553 case content::NOTIFICATION_RENDERER_PROCESS_TERMINATED: { |
2553 content::RenderProcessHost* process = | 2554 content::RenderProcessHost* process = |
2554 content::Source<content::RenderProcessHost>(source).ptr(); | 2555 content::Source<content::RenderProcessHost>(source).ptr(); |
2555 Profile* host_profile = | 2556 Profile* host_profile = |
2556 Profile::FromBrowserContext(process->GetBrowserContext()); | 2557 Profile::FromBrowserContext(process->GetBrowserContext()); |
2557 if (!profile_->IsSameProfile(host_profile->GetOriginalProfile())) | 2558 if (!profile_->IsSameProfile(host_profile->GetOriginalProfile())) |
2558 break; | 2559 break; |
2559 | 2560 |
2560 if (process_map_.Contains(process->GetID())) { | 2561 extensions::ProcessMap* process_map = |
| 2562 extensions::ProcessMap::Get(profile_); |
| 2563 if (process_map->Contains(process->GetID())) { |
2561 // An extension process was terminated, this might have resulted in an | 2564 // An extension process was terminated, this might have resulted in an |
2562 // app or extension becoming idle. | 2565 // app or extension becoming idle. |
2563 std::set<std::string> extension_ids = | 2566 std::set<std::string> extension_ids = |
2564 process_map_.GetExtensionsInProcess(process->GetID()); | 2567 process_map->GetExtensionsInProcess(process->GetID()); |
2565 for (std::set<std::string>::const_iterator it = extension_ids.begin(); | 2568 for (std::set<std::string>::const_iterator it = extension_ids.begin(); |
2566 it != extension_ids.end(); ++it) { | 2569 it != extension_ids.end(); ++it) { |
2567 if (delayed_installs_.Contains(*it)) { | 2570 if (delayed_installs_.Contains(*it)) { |
2568 base::MessageLoop::current()->PostDelayedTask( | 2571 base::MessageLoop::current()->PostDelayedTask( |
2569 FROM_HERE, | 2572 FROM_HERE, |
2570 base::Bind(&ExtensionService::MaybeFinishDelayedInstallation, | 2573 base::Bind(&ExtensionService::MaybeFinishDelayedInstallation, |
2571 AsWeakPtr(), *it), | 2574 AsWeakPtr(), *it), |
2572 base::TimeDelta::FromSeconds(kUpdateIdleDelay)); | 2575 base::TimeDelta::FromSeconds(kUpdateIdleDelay)); |
2573 } | 2576 } |
2574 } | 2577 } |
2575 } | 2578 } |
2576 | 2579 |
2577 process_map_.RemoveAllFromProcess(process->GetID()); | 2580 process_map->RemoveAllFromProcess(process->GetID()); |
2578 BrowserThread::PostTask( | 2581 BrowserThread::PostTask( |
2579 BrowserThread::IO, | 2582 BrowserThread::IO, |
2580 FROM_HERE, | 2583 FROM_HERE, |
2581 base::Bind(&extensions::InfoMap::UnregisterAllExtensionsInProcess, | 2584 base::Bind(&extensions::InfoMap::UnregisterAllExtensionsInProcess, |
2582 system_->info_map(), | 2585 system_->info_map(), |
2583 process->GetID())); | 2586 process->GetID())); |
2584 break; | 2587 break; |
2585 } | 2588 } |
2586 case chrome::NOTIFICATION_UPGRADE_RECOMMENDED: { | 2589 case chrome::NOTIFICATION_UPGRADE_RECOMMENDED: { |
2587 // Notify observers that chrome update is available. | 2590 // Notify observers that chrome update is available. |
(...skipping 230 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2818 void ExtensionService::UnloadAllExtensionsInternal() { | 2821 void ExtensionService::UnloadAllExtensionsInternal() { |
2819 profile_->GetExtensionSpecialStoragePolicy()->RevokeRightsForAllExtensions(); | 2822 profile_->GetExtensionSpecialStoragePolicy()->RevokeRightsForAllExtensions(); |
2820 | 2823 |
2821 registry_->ClearAll(); | 2824 registry_->ClearAll(); |
2822 extension_runtime_data_.clear(); | 2825 extension_runtime_data_.clear(); |
2823 | 2826 |
2824 // TODO(erikkay) should there be a notification for this? We can't use | 2827 // TODO(erikkay) should there be a notification for this? We can't use |
2825 // EXTENSION_UNLOADED since that implies that the extension has been disabled | 2828 // EXTENSION_UNLOADED since that implies that the extension has been disabled |
2826 // or uninstalled. | 2829 // or uninstalled. |
2827 } | 2830 } |
OLD | NEW |