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 724 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
735 EXTERNAL_EXTENSION_BUCKET_BOUNDARY); | 735 EXTERNAL_EXTENSION_BUCKET_BOUNDARY); |
736 } else { | 736 } else { |
737 UMA_HISTOGRAM_ENUMERATION("Extensions.ExternalExtensionEventNonWebstore", | 737 UMA_HISTOGRAM_ENUMERATION("Extensions.ExternalExtensionEventNonWebstore", |
738 EXTERNAL_EXTENSION_UNINSTALLED, | 738 EXTERNAL_EXTENSION_UNINSTALLED, |
739 EXTERNAL_EXTENSION_BUCKET_BOUNDARY); | 739 EXTERNAL_EXTENSION_BUCKET_BOUNDARY); |
740 } | 740 } |
741 } | 741 } |
742 UMA_HISTOGRAM_ENUMERATION("Extensions.UninstallType", | 742 UMA_HISTOGRAM_ENUMERATION("Extensions.UninstallType", |
743 extension->GetType(), 100); | 743 extension->GetType(), 100); |
744 RecordPermissionMessagesHistogram(extension.get(), | 744 RecordPermissionMessagesHistogram(extension.get(), |
745 "Extensions.Permissions_Uninstall"); | 745 "Extensions.Permissions_Uninstall2"); |
746 | 746 |
747 // Unload before doing more cleanup to ensure that nothing is hanging on to | 747 // Unload before doing more cleanup to ensure that nothing is hanging on to |
748 // any of these resources. | 748 // any of these resources. |
749 UnloadExtension(extension->id(), UnloadedExtensionInfo::REASON_UNINSTALL); | 749 UnloadExtension(extension->id(), UnloadedExtensionInfo::REASON_UNINSTALL); |
750 | 750 |
751 // Tell the backend to start deleting installed extensions on the file thread. | 751 // Tell the backend to start deleting installed extensions on the file thread. |
752 if (!Manifest::IsUnpackedLocation(extension->location())) { | 752 if (!Manifest::IsUnpackedLocation(extension->location())) { |
753 if (!GetFileTaskRunner()->PostTask( | 753 if (!GetFileTaskRunner()->PostTask( |
754 FROM_HERE, | 754 FROM_HERE, |
755 base::Bind(&ExtensionService::UninstallExtensionOnFileThread, | 755 base::Bind(&ExtensionService::UninstallExtensionOnFileThread, |
(...skipping 193 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
949 continue; | 949 continue; |
950 const std::string& id = (*extension)->id(); | 950 const std::string& id = (*extension)->id(); |
951 if (except_ids.end() == std::find(except_ids.begin(), except_ids.end(), id)) | 951 if (except_ids.end() == std::find(except_ids.begin(), except_ids.end(), id)) |
952 DisableExtension(id, extensions::Extension::DISABLE_USER_ACTION); | 952 DisableExtension(id, extensions::Extension::DISABLE_USER_ACTION); |
953 } | 953 } |
954 } | 954 } |
955 | 955 |
956 void ExtensionService::GrantPermissionsAndEnableExtension( | 956 void ExtensionService::GrantPermissionsAndEnableExtension( |
957 const Extension* extension) { | 957 const Extension* extension) { |
958 GrantPermissions(extension); | 958 GrantPermissions(extension); |
959 RecordPermissionMessagesHistogram( | 959 RecordPermissionMessagesHistogram(extension, |
960 extension, "Extensions.Permissions_ReEnable"); | 960 "Extensions.Permissions_ReEnable2"); |
961 extension_prefs_->SetDidExtensionEscalatePermissions(extension, false); | 961 extension_prefs_->SetDidExtensionEscalatePermissions(extension, false); |
962 EnableExtension(extension->id()); | 962 EnableExtension(extension->id()); |
963 } | 963 } |
964 | 964 |
965 void ExtensionService::GrantPermissions(const Extension* extension) { | 965 void ExtensionService::GrantPermissions(const Extension* extension) { |
966 CHECK(extension); | 966 CHECK(extension); |
967 extensions::PermissionsUpdater perms_updater(profile()); | 967 extensions::PermissionsUpdater perms_updater(profile()); |
968 perms_updater.GrantActivePermissions(extension); | 968 perms_updater.GrantActivePermissions(extension); |
969 } | 969 } |
970 | 970 |
(...skipping 731 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1702 // Extension has changed permissions significantly. Disable it. A | 1702 // Extension has changed permissions significantly. Disable it. A |
1703 // notification should be sent by the caller. If the extension is already | 1703 // notification should be sent by the caller. If the extension is already |
1704 // disabled because it was installed remotely, don't add another disable | 1704 // disabled because it was installed remotely, don't add another disable |
1705 // reason, but instead always set the "did escalate permissions" flag, to | 1705 // reason, but instead always set the "did escalate permissions" flag, to |
1706 // ensure enabling it will always show a warning. | 1706 // ensure enabling it will always show a warning. |
1707 if (disable_reasons == Extension::DISABLE_REMOTE_INSTALL) { | 1707 if (disable_reasons == Extension::DISABLE_REMOTE_INSTALL) { |
1708 extension_prefs_->SetDidExtensionEscalatePermissions(extension, true); | 1708 extension_prefs_->SetDidExtensionEscalatePermissions(extension, true); |
1709 } else if (is_privilege_increase) { | 1709 } else if (is_privilege_increase) { |
1710 disable_reasons |= Extension::DISABLE_PERMISSIONS_INCREASE; | 1710 disable_reasons |= Extension::DISABLE_PERMISSIONS_INCREASE; |
1711 if (!extension_prefs_->DidExtensionEscalatePermissions(extension->id())) { | 1711 if (!extension_prefs_->DidExtensionEscalatePermissions(extension->id())) { |
1712 RecordPermissionMessagesHistogram( | 1712 RecordPermissionMessagesHistogram(extension, |
1713 extension, "Extensions.Permissions_AutoDisable"); | 1713 "Extensions.Permissions_AutoDisable2"); |
1714 } | 1714 } |
1715 extension_prefs_->SetExtensionState(extension->id(), Extension::DISABLED); | 1715 extension_prefs_->SetExtensionState(extension->id(), Extension::DISABLED); |
1716 extension_prefs_->SetDidExtensionEscalatePermissions(extension, true); | 1716 extension_prefs_->SetDidExtensionEscalatePermissions(extension, true); |
1717 } | 1717 } |
1718 if (disable_reasons != Extension::DISABLE_NONE) { | 1718 if (disable_reasons != Extension::DISABLE_NONE) { |
1719 extension_prefs_->AddDisableReason( | 1719 extension_prefs_->AddDisableReason( |
1720 extension->id(), | 1720 extension->id(), |
1721 static_cast<Extension::DisableReason>(disable_reasons)); | 1721 static_cast<Extension::DisableReason>(disable_reasons)); |
1722 } | 1722 } |
1723 } | 1723 } |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1808 UMA_HISTOGRAM_ENUMERATION("ExtensionBlacklist.SilentInstall", | 1808 UMA_HISTOGRAM_ENUMERATION("ExtensionBlacklist.SilentInstall", |
1809 extension->location(), | 1809 extension->location(), |
1810 Manifest::NUM_LOCATIONS); | 1810 Manifest::NUM_LOCATIONS); |
1811 } | 1811 } |
1812 | 1812 |
1813 if (!GetInstalledExtension(extension->id())) { | 1813 if (!GetInstalledExtension(extension->id())) { |
1814 UMA_HISTOGRAM_ENUMERATION("Extensions.InstallType", | 1814 UMA_HISTOGRAM_ENUMERATION("Extensions.InstallType", |
1815 extension->GetType(), 100); | 1815 extension->GetType(), 100); |
1816 UMA_HISTOGRAM_ENUMERATION("Extensions.InstallSource", | 1816 UMA_HISTOGRAM_ENUMERATION("Extensions.InstallSource", |
1817 extension->location(), Manifest::NUM_LOCATIONS); | 1817 extension->location(), Manifest::NUM_LOCATIONS); |
1818 RecordPermissionMessagesHistogram( | 1818 RecordPermissionMessagesHistogram(extension, |
1819 extension, "Extensions.Permissions_Install"); | 1819 "Extensions.Permissions_Install2"); |
1820 } else { | 1820 } else { |
1821 UMA_HISTOGRAM_ENUMERATION("Extensions.UpdateType", | 1821 UMA_HISTOGRAM_ENUMERATION("Extensions.UpdateType", |
1822 extension->GetType(), 100); | 1822 extension->GetType(), 100); |
1823 UMA_HISTOGRAM_ENUMERATION("Extensions.UpdateSource", | 1823 UMA_HISTOGRAM_ENUMERATION("Extensions.UpdateSource", |
1824 extension->location(), Manifest::NUM_LOCATIONS); | 1824 extension->location(), Manifest::NUM_LOCATIONS); |
1825 } | 1825 } |
1826 | 1826 |
1827 // Certain extension locations are specific enough that we can | 1827 // Certain extension locations are specific enough that we can |
1828 // auto-acknowledge any extension that came from one of them. | 1828 // auto-acknowledge any extension that came from one of them. |
1829 if (Manifest::IsPolicyLocation(extension->location()) || | 1829 if (Manifest::IsPolicyLocation(extension->location()) || |
(...skipping 718 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2548 } | 2548 } |
2549 | 2549 |
2550 void ExtensionService::OnProfileDestructionStarted() { | 2550 void ExtensionService::OnProfileDestructionStarted() { |
2551 ExtensionIdSet ids_to_unload = registry_->enabled_extensions().GetIDs(); | 2551 ExtensionIdSet ids_to_unload = registry_->enabled_extensions().GetIDs(); |
2552 for (ExtensionIdSet::iterator it = ids_to_unload.begin(); | 2552 for (ExtensionIdSet::iterator it = ids_to_unload.begin(); |
2553 it != ids_to_unload.end(); | 2553 it != ids_to_unload.end(); |
2554 ++it) { | 2554 ++it) { |
2555 UnloadExtension(*it, UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN); | 2555 UnloadExtension(*it, UnloadedExtensionInfo::REASON_PROFILE_SHUTDOWN); |
2556 } | 2556 } |
2557 } | 2557 } |
OLD | NEW |