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 903 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
914 if (IsUnacknowledgedExternalExtension(extension)) { | 914 if (IsUnacknowledgedExternalExtension(extension)) { |
915 UMA_HISTOGRAM_ENUMERATION("Extensions.ExternalExtensionEvent", | 915 UMA_HISTOGRAM_ENUMERATION("Extensions.ExternalExtensionEvent", |
916 EXTERNAL_EXTENSION_REENABLED, | 916 EXTERNAL_EXTENSION_REENABLED, |
917 EXTERNAL_EXTENSION_BUCKET_BOUNDARY); | 917 EXTERNAL_EXTENSION_BUCKET_BOUNDARY); |
918 AcknowledgeExternalExtension(extension->id()); | 918 AcknowledgeExternalExtension(extension->id()); |
919 } | 919 } |
920 | 920 |
921 // Move it over to the enabled list. | 921 // Move it over to the enabled list. |
922 extensions_.Insert(make_scoped_refptr(extension)); | 922 extensions_.Insert(make_scoped_refptr(extension)); |
923 disabled_extensions_.Remove(extension->id()); | 923 disabled_extensions_.Remove(extension->id()); |
| 924 FOR_EACH_OBSERVER(DisabledExtensionObserver, disabled_extension_observers_, |
| 925 OnDisabledExtensionRemoved(extension, true)); |
924 | 926 |
925 NotifyExtensionLoaded(extension); | 927 NotifyExtensionLoaded(extension); |
926 | 928 |
927 // Notify listeners that the extension was enabled. | 929 // Notify listeners that the extension was enabled. |
928 content::NotificationService::current()->Notify( | 930 content::NotificationService::current()->Notify( |
929 chrome::NOTIFICATION_EXTENSION_ENABLED, | 931 chrome::NOTIFICATION_EXTENSION_ENABLED, |
930 content::Source<Profile>(profile_), | 932 content::Source<Profile>(profile_), |
931 content::Details<const Extension>(extension)); | 933 content::Details<const Extension>(extension)); |
932 | 934 |
933 SyncExtensionChangeIfNeeded(*extension); | 935 SyncExtensionChangeIfNeeded(*extension); |
(...skipping 939 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1873 // Clean up if the extension is meant to be enabled after a reload. | 1875 // Clean up if the extension is meant to be enabled after a reload. |
1874 reloading_extensions_.erase(extension->id()); | 1876 reloading_extensions_.erase(extension->id()); |
1875 | 1877 |
1876 // Clean up runtime data. | 1878 // Clean up runtime data. |
1877 extension_runtime_data_.erase(extension_id); | 1879 extension_runtime_data_.erase(extension_id); |
1878 | 1880 |
1879 if (disabled_extensions_.Contains(extension->id())) { | 1881 if (disabled_extensions_.Contains(extension->id())) { |
1880 UnloadedExtensionInfo details(extension.get(), reason); | 1882 UnloadedExtensionInfo details(extension.get(), reason); |
1881 details.already_disabled = true; | 1883 details.already_disabled = true; |
1882 disabled_extensions_.Remove(extension->id()); | 1884 disabled_extensions_.Remove(extension->id()); |
| 1885 FOR_EACH_OBSERVER(DisabledExtensionObserver, disabled_extension_observers_, |
| 1886 OnDisabledExtensionRemoved(extension.get(), false)); |
1883 content::NotificationService::current()->Notify( | 1887 content::NotificationService::current()->Notify( |
1884 chrome::NOTIFICATION_EXTENSION_UNLOADED, | 1888 chrome::NOTIFICATION_EXTENSION_UNLOADED, |
1885 content::Source<Profile>(profile_), | 1889 content::Source<Profile>(profile_), |
1886 content::Details<UnloadedExtensionInfo>(&details)); | 1890 content::Details<UnloadedExtensionInfo>(&details)); |
1887 // Make sure the profile cleans up its RequestContexts when an already | 1891 // Make sure the profile cleans up its RequestContexts when an already |
1888 // disabled extension is unloaded (since they are also tracking the disabled | 1892 // disabled extension is unloaded (since they are also tracking the disabled |
1889 // extensions). | 1893 // extensions). |
1890 system_->UnregisterExtensionWithRequestContexts(extension_id, reason); | 1894 system_->UnregisterExtensionWithRequestContexts(extension_id, reason); |
1891 return; | 1895 return; |
1892 } | 1896 } |
(...skipping 1218 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3111 } | 3115 } |
3112 | 3116 |
3113 void ExtensionService::AddUpdateObserver(extensions::UpdateObserver* observer) { | 3117 void ExtensionService::AddUpdateObserver(extensions::UpdateObserver* observer) { |
3114 update_observers_.AddObserver(observer); | 3118 update_observers_.AddObserver(observer); |
3115 } | 3119 } |
3116 | 3120 |
3117 void ExtensionService::RemoveUpdateObserver( | 3121 void ExtensionService::RemoveUpdateObserver( |
3118 extensions::UpdateObserver* observer) { | 3122 extensions::UpdateObserver* observer) { |
3119 update_observers_.RemoveObserver(observer); | 3123 update_observers_.RemoveObserver(observer); |
3120 } | 3124 } |
| 3125 |
| 3126 void ExtensionService::AddDisabledExtensionObserver( |
| 3127 ExtensionService::DisabledExtensionObserver* observer) { |
| 3128 disabled_extension_observers_.AddObserver(observer); |
| 3129 } |
| 3130 |
| 3131 void ExtensionService::RemoveDisabledExtensionObserver( |
| 3132 ExtensionService::DisabledExtensionObserver* observer) { |
| 3133 disabled_extension_observers_.RemoveObserver(observer); |
| 3134 } |
OLD | NEW |