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

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

Issue 49253005: Fetch extension blacklist states from SafeBrowsing server (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years 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) 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 1744 matching lines...) Expand 10 before | Expand all | Expand 10 after
1755 const Version old_version(old_version_string); 1755 const Version old_version(old_version_string);
1756 1756
1757 VLOG(1) << "AddComponentExtension " << extension->name(); 1757 VLOG(1) << "AddComponentExtension " << extension->name();
1758 if (!old_version.IsValid() || !old_version.Equals(*extension->version())) { 1758 if (!old_version.IsValid() || !old_version.Equals(*extension->version())) {
1759 VLOG(1) << "Component extension " << extension->name() << " (" 1759 VLOG(1) << "Component extension " << extension->name() << " ("
1760 << extension->id() << ") installing/upgrading from '" 1760 << extension->id() << ") installing/upgrading from '"
1761 << old_version_string << "' to " << extension->version()->GetString(); 1761 << old_version_string << "' to " << extension->version()->GetString();
1762 1762
1763 AddNewOrUpdatedExtension(extension, 1763 AddNewOrUpdatedExtension(extension,
1764 Extension::ENABLED_COMPONENT, 1764 Extension::ENABLED_COMPONENT,
1765 extensions::Blacklist::NOT_BLACKLISTED, 1765 extensions::NOT_BLACKLISTED,
1766 syncer::StringOrdinal()); 1766 syncer::StringOrdinal());
1767 return; 1767 return;
1768 } 1768 }
1769 1769
1770 AddExtension(extension); 1770 AddExtension(extension);
1771 } 1771 }
1772 1772
1773 void ExtensionService::UpdateActivePermissions(const Extension* extension) { 1773 void ExtensionService::UpdateActivePermissions(const Extension* extension) {
1774 // If the extension has used the optional permissions API, it will have a 1774 // If the extension has used the optional permissions API, it will have a
1775 // custom set of active permissions defined in the extension prefs. Here, 1775 // custom set of active permissions defined in the extension prefs. Here,
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
2009 } 2009 }
2010 } 2010 }
2011 } 2011 }
2012 } 2012 }
2013 } 2013 }
2014 2014
2015 void ExtensionService::OnExtensionInstalled( 2015 void ExtensionService::OnExtensionInstalled(
2016 const Extension* extension, 2016 const Extension* extension,
2017 const syncer::StringOrdinal& page_ordinal, 2017 const syncer::StringOrdinal& page_ordinal,
2018 bool has_requirement_errors, 2018 bool has_requirement_errors,
2019 extensions::Blacklist::BlacklistState blacklist_state, 2019 extensions::BlacklistState blacklist_state,
2020 bool wait_for_idle) { 2020 bool wait_for_idle) {
2021 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 2021 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2022 2022
2023 const std::string& id = extension->id(); 2023 const std::string& id = extension->id();
2024 bool initial_enable = ShouldEnableOnInstall(extension); 2024 bool initial_enable = ShouldEnableOnInstall(extension);
2025 const extensions::PendingExtensionInfo* pending_extension_info = NULL; 2025 const extensions::PendingExtensionInfo* pending_extension_info = NULL;
2026 if ((pending_extension_info = pending_extension_manager()->GetById(id))) { 2026 if ((pending_extension_info = pending_extension_manager()->GetById(id))) {
2027 if (!pending_extension_info->ShouldAllowInstall(extension)) { 2027 if (!pending_extension_info->ShouldAllowInstall(extension)) {
2028 pending_extension_manager()->Remove(id); 2028 pending_extension_manager()->Remove(id);
2029 2029
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2061 id, Extension::DISABLE_UNSUPPORTED_REQUIREMENT); 2061 id, Extension::DISABLE_UNSUPPORTED_REQUIREMENT);
2062 // If the extension was disabled because of unsupported requirements but 2062 // If the extension was disabled because of unsupported requirements but
2063 // now supports all requirements after an update and there are not other 2063 // now supports all requirements after an update and there are not other
2064 // disable reasons, enable it. 2064 // disable reasons, enable it.
2065 } else if (extension_prefs_->GetDisableReasons(id) == 2065 } else if (extension_prefs_->GetDisableReasons(id) ==
2066 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) { 2066 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) {
2067 initial_enable = true; 2067 initial_enable = true;
2068 extension_prefs_->ClearDisableReasons(id); 2068 extension_prefs_->ClearDisableReasons(id);
2069 } 2069 }
2070 2070
2071 if (blacklist_state == extensions::Blacklist::BLACKLISTED_MALWARE) { 2071 if (blacklist_state == extensions::BLACKLISTED_MALWARE) {
2072 // Installation of a blacklisted extension can happen from sync, policy, 2072 // Installation of a blacklisted extension can happen from sync, policy,
2073 // etc, where to maintain consistency we need to install it, just never 2073 // etc, where to maintain consistency we need to install it, just never
2074 // load it (see AddExtension). Usually it should be the job of callers to 2074 // load it (see AddExtension). Usually it should be the job of callers to
2075 // incercept blacklisted extension earlier (e.g. CrxInstaller, before even 2075 // incercept blacklisted extension earlier (e.g. CrxInstaller, before even
2076 // showing the install dialogue). 2076 // showing the install dialogue).
2077 extension_prefs()->AcknowledgeBlacklistedExtension(id); 2077 extension_prefs()->AcknowledgeBlacklistedExtension(id);
2078 UMA_HISTOGRAM_ENUMERATION("ExtensionBlacklist.SilentInstall", 2078 UMA_HISTOGRAM_ENUMERATION("ExtensionBlacklist.SilentInstall",
2079 extension->location(), 2079 extension->location(),
2080 Manifest::NUM_LOCATIONS); 2080 Manifest::NUM_LOCATIONS);
2081 } 2081 }
(...skipping 12 matching lines...) Expand all
2094 extension->location(), Manifest::NUM_LOCATIONS); 2094 extension->location(), Manifest::NUM_LOCATIONS);
2095 } 2095 }
2096 2096
2097 // Certain extension locations are specific enough that we can 2097 // Certain extension locations are specific enough that we can
2098 // auto-acknowledge any extension that came from one of them. 2098 // auto-acknowledge any extension that came from one of them.
2099 if (Manifest::IsPolicyLocation(extension->location())) 2099 if (Manifest::IsPolicyLocation(extension->location()))
2100 AcknowledgeExternalExtension(extension->id()); 2100 AcknowledgeExternalExtension(extension->id());
2101 const Extension::State initial_state = 2101 const Extension::State initial_state =
2102 initial_enable ? Extension::ENABLED : Extension::DISABLED; 2102 initial_enable ? Extension::ENABLED : Extension::DISABLED;
2103 const bool blacklisted_for_malware = 2103 const bool blacklisted_for_malware =
2104 blacklist_state == extensions::Blacklist::BLACKLISTED_MALWARE; 2104 blacklist_state == extensions::BLACKLISTED_MALWARE;
2105 if (ShouldDelayExtensionUpdate(id, wait_for_idle)) { 2105 if (ShouldDelayExtensionUpdate(id, wait_for_idle)) {
2106 extension_prefs_->SetDelayedInstallInfo( 2106 extension_prefs_->SetDelayedInstallInfo(
2107 extension, 2107 extension,
2108 initial_state, 2108 initial_state,
2109 blacklisted_for_malware, 2109 blacklisted_for_malware,
2110 extensions::ExtensionPrefs::DELAY_REASON_WAIT_FOR_IDLE, 2110 extensions::ExtensionPrefs::DELAY_REASON_WAIT_FOR_IDLE,
2111 page_ordinal); 2111 page_ordinal);
2112 2112
2113 // Transfer ownership of |extension|. 2113 // Transfer ownership of |extension|.
2114 delayed_installs_.Insert(extension); 2114 delayed_installs_.Insert(extension);
(...skipping 27 matching lines...) Expand all
2142 AddNewOrUpdatedExtension(extension, 2142 AddNewOrUpdatedExtension(extension,
2143 initial_state, 2143 initial_state,
2144 blacklist_state, 2144 blacklist_state,
2145 page_ordinal); 2145 page_ordinal);
2146 } 2146 }
2147 } 2147 }
2148 2148
2149 void ExtensionService::AddNewOrUpdatedExtension( 2149 void ExtensionService::AddNewOrUpdatedExtension(
2150 const Extension* extension, 2150 const Extension* extension,
2151 Extension::State initial_state, 2151 Extension::State initial_state,
2152 extensions::Blacklist::BlacklistState blacklist_state, 2152 extensions::BlacklistState blacklist_state,
2153 const syncer::StringOrdinal& page_ordinal) { 2153 const syncer::StringOrdinal& page_ordinal) {
2154 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 2154 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2155 const bool blacklisted_for_malware = 2155 const bool blacklisted_for_malware =
2156 blacklist_state == extensions::Blacklist::BLACKLISTED_MALWARE; 2156 blacklist_state == extensions::BLACKLISTED_MALWARE;
2157 extension_prefs_->OnExtensionInstalled(extension, 2157 extension_prefs_->OnExtensionInstalled(extension,
2158 initial_state, 2158 initial_state,
2159 blacklisted_for_malware, 2159 blacklisted_for_malware,
2160 page_ordinal); 2160 page_ordinal);
2161 delayed_installs_.Remove(extension->id()); 2161 delayed_installs_.Remove(extension->id());
2162 if (extensions::ManifestURL::UpdatesFromGallery(extension)) { 2162 if (extensions::ManifestURL::UpdatesFromGallery(extension)) {
2163 extensions::ExtensionSystem::Get(profile_)->install_verifier()->Add( 2163 extensions::ExtensionSystem::Get(profile_)->install_verifier()->Add(
2164 extension->id(), InstallVerifier::AddResultCallback()); 2164 extension->id(), InstallVerifier::AddResultCallback());
2165 } 2165 }
2166 FinishInstallation(extension); 2166 FinishInstallation(extension);
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
2789 } 2789 }
2790 2790
2791 void ExtensionService::AddUpdateObserver(extensions::UpdateObserver* observer) { 2791 void ExtensionService::AddUpdateObserver(extensions::UpdateObserver* observer) {
2792 update_observers_.AddObserver(observer); 2792 update_observers_.AddObserver(observer);
2793 } 2793 }
2794 2794
2795 void ExtensionService::RemoveUpdateObserver( 2795 void ExtensionService::RemoveUpdateObserver(
2796 extensions::UpdateObserver* observer) { 2796 extensions::UpdateObserver* observer) {
2797 update_observers_.RemoveObserver(observer); 2797 update_observers_.RemoveObserver(observer);
2798 } 2798 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698