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

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 1804 matching lines...) Expand 10 before | Expand all | Expand 10 after
1815 const Version old_version(old_version_string); 1815 const Version old_version(old_version_string);
1816 1816
1817 VLOG(1) << "AddComponentExtension " << extension->name(); 1817 VLOG(1) << "AddComponentExtension " << extension->name();
1818 if (!old_version.IsValid() || !old_version.Equals(*extension->version())) { 1818 if (!old_version.IsValid() || !old_version.Equals(*extension->version())) {
1819 VLOG(1) << "Component extension " << extension->name() << " (" 1819 VLOG(1) << "Component extension " << extension->name() << " ("
1820 << extension->id() << ") installing/upgrading from '" 1820 << extension->id() << ") installing/upgrading from '"
1821 << old_version_string << "' to " << extension->version()->GetString(); 1821 << old_version_string << "' to " << extension->version()->GetString();
1822 1822
1823 AddNewOrUpdatedExtension(extension, 1823 AddNewOrUpdatedExtension(extension,
1824 Extension::ENABLED_COMPONENT, 1824 Extension::ENABLED_COMPONENT,
1825 extensions::Blacklist::NOT_BLACKLISTED, 1825 extensions::NOT_BLACKLISTED,
1826 syncer::StringOrdinal()); 1826 syncer::StringOrdinal());
1827 return; 1827 return;
1828 } 1828 }
1829 1829
1830 AddExtension(extension); 1830 AddExtension(extension);
1831 } 1831 }
1832 1832
1833 void ExtensionService::UpdateActivePermissions(const Extension* extension) { 1833 void ExtensionService::UpdateActivePermissions(const Extension* extension) {
1834 // If the extension has used the optional permissions API, it will have a 1834 // If the extension has used the optional permissions API, it will have a
1835 // custom set of active permissions defined in the extension prefs. Here, 1835 // custom set of active permissions defined in the extension prefs. Here,
(...skipping 233 matching lines...) Expand 10 before | Expand all | Expand 10 after
2069 } 2069 }
2070 } 2070 }
2071 } 2071 }
2072 } 2072 }
2073 } 2073 }
2074 2074
2075 void ExtensionService::OnExtensionInstalled( 2075 void ExtensionService::OnExtensionInstalled(
2076 const Extension* extension, 2076 const Extension* extension,
2077 const syncer::StringOrdinal& page_ordinal, 2077 const syncer::StringOrdinal& page_ordinal,
2078 bool has_requirement_errors, 2078 bool has_requirement_errors,
2079 extensions::Blacklist::BlacklistState blacklist_state, 2079 extensions::BlacklistState blacklist_state,
2080 bool wait_for_idle) { 2080 bool wait_for_idle) {
2081 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 2081 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2082 2082
2083 const std::string& id = extension->id(); 2083 const std::string& id = extension->id();
2084 bool initial_enable = ShouldEnableOnInstall(extension); 2084 bool initial_enable = ShouldEnableOnInstall(extension);
2085 const extensions::PendingExtensionInfo* pending_extension_info = NULL; 2085 const extensions::PendingExtensionInfo* pending_extension_info = NULL;
2086 if ((pending_extension_info = pending_extension_manager()->GetById(id))) { 2086 if ((pending_extension_info = pending_extension_manager()->GetById(id))) {
2087 if (!pending_extension_info->ShouldAllowInstall(extension)) { 2087 if (!pending_extension_info->ShouldAllowInstall(extension)) {
2088 pending_extension_manager()->Remove(id); 2088 pending_extension_manager()->Remove(id);
2089 2089
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
2121 id, Extension::DISABLE_UNSUPPORTED_REQUIREMENT); 2121 id, Extension::DISABLE_UNSUPPORTED_REQUIREMENT);
2122 // If the extension was disabled because of unsupported requirements but 2122 // If the extension was disabled because of unsupported requirements but
2123 // now supports all requirements after an update and there are not other 2123 // now supports all requirements after an update and there are not other
2124 // disable reasons, enable it. 2124 // disable reasons, enable it.
2125 } else if (extension_prefs_->GetDisableReasons(id) == 2125 } else if (extension_prefs_->GetDisableReasons(id) ==
2126 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) { 2126 Extension::DISABLE_UNSUPPORTED_REQUIREMENT) {
2127 initial_enable = true; 2127 initial_enable = true;
2128 extension_prefs_->ClearDisableReasons(id); 2128 extension_prefs_->ClearDisableReasons(id);
2129 } 2129 }
2130 2130
2131 if (blacklist_state == extensions::Blacklist::BLACKLISTED_MALWARE) { 2131 if (blacklist_state == extensions::BLACKLISTED_MALWARE) {
2132 // Installation of a blacklisted extension can happen from sync, policy, 2132 // Installation of a blacklisted extension can happen from sync, policy,
2133 // etc, where to maintain consistency we need to install it, just never 2133 // etc, where to maintain consistency we need to install it, just never
2134 // load it (see AddExtension). Usually it should be the job of callers to 2134 // load it (see AddExtension). Usually it should be the job of callers to
2135 // incercept blacklisted extension earlier (e.g. CrxInstaller, before even 2135 // incercept blacklisted extension earlier (e.g. CrxInstaller, before even
2136 // showing the install dialogue). 2136 // showing the install dialogue).
2137 extension_prefs()->AcknowledgeBlacklistedExtension(id); 2137 extension_prefs()->AcknowledgeBlacklistedExtension(id);
2138 UMA_HISTOGRAM_ENUMERATION("ExtensionBlacklist.SilentInstall", 2138 UMA_HISTOGRAM_ENUMERATION("ExtensionBlacklist.SilentInstall",
2139 extension->location(), 2139 extension->location(),
2140 Manifest::NUM_LOCATIONS); 2140 Manifest::NUM_LOCATIONS);
2141 } 2141 }
(...skipping 12 matching lines...) Expand all
2154 extension->location(), Manifest::NUM_LOCATIONS); 2154 extension->location(), Manifest::NUM_LOCATIONS);
2155 } 2155 }
2156 2156
2157 // Certain extension locations are specific enough that we can 2157 // Certain extension locations are specific enough that we can
2158 // auto-acknowledge any extension that came from one of them. 2158 // auto-acknowledge any extension that came from one of them.
2159 if (Manifest::IsPolicyLocation(extension->location())) 2159 if (Manifest::IsPolicyLocation(extension->location()))
2160 AcknowledgeExternalExtension(extension->id()); 2160 AcknowledgeExternalExtension(extension->id());
2161 const Extension::State initial_state = 2161 const Extension::State initial_state =
2162 initial_enable ? Extension::ENABLED : Extension::DISABLED; 2162 initial_enable ? Extension::ENABLED : Extension::DISABLED;
2163 const bool blacklisted_for_malware = 2163 const bool blacklisted_for_malware =
2164 blacklist_state == extensions::Blacklist::BLACKLISTED_MALWARE; 2164 blacklist_state == extensions::BLACKLISTED_MALWARE;
2165 if (ShouldDelayExtensionUpdate(id, wait_for_idle)) { 2165 if (ShouldDelayExtensionUpdate(id, wait_for_idle)) {
2166 extension_prefs_->SetDelayedInstallInfo( 2166 extension_prefs_->SetDelayedInstallInfo(
2167 extension, 2167 extension,
2168 initial_state, 2168 initial_state,
2169 blacklisted_for_malware, 2169 blacklisted_for_malware,
2170 extensions::ExtensionPrefs::DELAY_REASON_WAIT_FOR_IDLE, 2170 extensions::ExtensionPrefs::DELAY_REASON_WAIT_FOR_IDLE,
2171 page_ordinal); 2171 page_ordinal);
2172 2172
2173 // Transfer ownership of |extension|. 2173 // Transfer ownership of |extension|.
2174 delayed_installs_.Insert(extension); 2174 delayed_installs_.Insert(extension);
(...skipping 27 matching lines...) Expand all
2202 AddNewOrUpdatedExtension(extension, 2202 AddNewOrUpdatedExtension(extension,
2203 initial_state, 2203 initial_state,
2204 blacklist_state, 2204 blacklist_state,
2205 page_ordinal); 2205 page_ordinal);
2206 } 2206 }
2207 } 2207 }
2208 2208
2209 void ExtensionService::AddNewOrUpdatedExtension( 2209 void ExtensionService::AddNewOrUpdatedExtension(
2210 const Extension* extension, 2210 const Extension* extension,
2211 Extension::State initial_state, 2211 Extension::State initial_state,
2212 extensions::Blacklist::BlacklistState blacklist_state, 2212 extensions::BlacklistState blacklist_state,
2213 const syncer::StringOrdinal& page_ordinal) { 2213 const syncer::StringOrdinal& page_ordinal) {
2214 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); 2214 CHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
2215 const bool blacklisted_for_malware = 2215 const bool blacklisted_for_malware =
2216 blacklist_state == extensions::Blacklist::BLACKLISTED_MALWARE; 2216 blacklist_state == extensions::BLACKLISTED_MALWARE;
2217 extension_prefs_->OnExtensionInstalled(extension, 2217 extension_prefs_->OnExtensionInstalled(extension,
2218 initial_state, 2218 initial_state,
2219 blacklisted_for_malware, 2219 blacklisted_for_malware,
2220 page_ordinal); 2220 page_ordinal);
2221 delayed_installs_.Remove(extension->id()); 2221 delayed_installs_.Remove(extension->id());
2222 if (extensions::ManifestURL::UpdatesFromGallery(extension)) { 2222 if (extensions::ManifestURL::UpdatesFromGallery(extension)) {
2223 extensions::ExtensionSystem::Get(profile_)->install_verifier()->Add( 2223 extensions::ExtensionSystem::Get(profile_)->install_verifier()->Add(
2224 extension->id(), InstallVerifier::AddResultCallback()); 2224 extension->id(), InstallVerifier::AddResultCallback());
2225 } 2225 }
2226 FinishInstallation(extension); 2226 FinishInstallation(extension);
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
2849 } 2849 }
2850 2850
2851 void ExtensionService::AddUpdateObserver(extensions::UpdateObserver* observer) { 2851 void ExtensionService::AddUpdateObserver(extensions::UpdateObserver* observer) {
2852 update_observers_.AddObserver(observer); 2852 update_observers_.AddObserver(observer);
2853 } 2853 }
2854 2854
2855 void ExtensionService::RemoveUpdateObserver( 2855 void ExtensionService::RemoveUpdateObserver(
2856 extensions::UpdateObserver* observer) { 2856 extensions::UpdateObserver* observer) {
2857 update_observers_.RemoveObserver(observer); 2857 update_observers_.RemoveObserver(observer);
2858 } 2858 }
OLDNEW
« no previous file with comments | « chrome/browser/extensions/extension_service.h ('k') | chrome/browser/extensions/extension_service_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698