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

Unified Diff: chrome/browser/extensions/updater/extension_updater.cc

Issue 1887253002: Rate limit programmatic update checks for extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 months 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/extensions/updater/extension_updater.cc
diff --git a/chrome/browser/extensions/updater/extension_updater.cc b/chrome/browser/extensions/updater/extension_updater.cc
index bd93ba3b385d7093298ad6792e09957f2980da21..484029f71db74dfa723e412e0ae3775d94ecc07d 100644
--- a/chrome/browser/extensions/updater/extension_updater.cc
+++ b/chrome/browser/extensions/updater/extension_updater.cc
@@ -60,10 +60,6 @@ const int kMinUpdateFrequencySeconds = 30;
#endif
const int kMaxUpdateFrequencySeconds = 60 * 60 * 24 * 7; // 7 days
-// Require at least 5 seconds between consecutive non-succesful extension update
Devlin 2016/04/15 17:57:38 heh... 5 seconds should be enough, right? ;)
asargent_no_longer_on_chrome 2016/04/19 17:56:53 Well, it did get us this far. =)
-// checks.
-const int kMinUpdateThrottleTime = 5;
-
// When we've computed a days value, we want to make sure we don't send a
// negative value (due to the system clock being set backwards, etc.), since -1
// is a special sentinel value that means "never pinged", and other negative
@@ -129,17 +125,6 @@ ExtensionUpdater::InProgressCheck::InProgressCheck(
ExtensionUpdater::InProgressCheck::~InProgressCheck() {}
-struct ExtensionUpdater::ThrottleInfo {
- ThrottleInfo()
- : in_progress(true),
- throttle_delay(kMinUpdateThrottleTime),
- check_start(Time::Now()) {}
-
- bool in_progress;
- int throttle_delay;
- Time check_start;
-};
-
ExtensionUpdater::ExtensionUpdater(
ExtensionServiceInterface* service,
ExtensionPrefs* extension_prefs,
@@ -157,7 +142,6 @@ ExtensionUpdater::ExtensionUpdater(
prefs_(prefs),
profile_(profile),
next_request_id_(0),
- extension_registry_observer_(this),
crx_install_is_running_(false),
extension_cache_(cache),
weak_ptr_factory_(this) {
@@ -168,8 +152,6 @@ ExtensionUpdater::ExtensionUpdater(
frequency_seconds_ = std::max(frequency_seconds_, kMinUpdateFrequencySeconds);
#endif
frequency_seconds_ = std::min(frequency_seconds_, kMaxUpdateFrequencySeconds);
-
- extension_registry_observer_.Add(ExtensionRegistry::Get(profile));
}
ExtensionUpdater::~ExtensionUpdater() {
@@ -422,56 +404,12 @@ void ExtensionUpdater::CheckNow(const CheckParams& params) {
NotifyIfFinished(request_id);
}
-bool ExtensionUpdater::CheckExtensionSoon(const std::string& extension_id,
+void ExtensionUpdater::CheckExtensionSoon(const std::string& extension_id,
const FinishedCallback& callback) {
- bool have_throttle_info = ContainsKey(throttle_info_, extension_id);
- ThrottleInfo& info = throttle_info_[extension_id];
- if (have_throttle_info) {
- // We already had a ThrottleInfo object for this extension, check if the
- // update check request should be allowed.
-
- // If another check is in progress, don't start a new check.
- if (info.in_progress)
- return false;
-
- Time now = Time::Now();
- Time last = info.check_start;
- // If somehow time moved back, we don't want to infinitely keep throttling.
- if (now < last) {
- last = now;
- info.check_start = now;
- }
- Time earliest = last + TimeDelta::FromSeconds(info.throttle_delay);
- // If check is too soon, throttle.
- if (now < earliest)
- return false;
-
- // TODO(mek): Somehow increase time between allowing checks when checks
- // are repeatedly throttled and don't result in updates being installed.
-
- // It's okay to start a check, update values.
- info.check_start = now;
- info.in_progress = true;
- }
-
CheckParams params;
params.ids.push_back(extension_id);
- params.callback = base::Bind(&ExtensionUpdater::ExtensionCheckFinished,
- weak_ptr_factory_.GetWeakPtr(),
- extension_id, callback);
+ params.callback = callback;
CheckNow(params);
- return true;
-}
-
-void ExtensionUpdater::ExtensionCheckFinished(
- const std::string& extension_id,
- const FinishedCallback& callback) {
- std::map<std::string, ThrottleInfo>::iterator it =
- throttle_info_.find(extension_id);
- if (it != throttle_info_.end()) {
- it->second.in_progress = false;
- }
- callback.Run();
}
void ExtensionUpdater::OnExtensionDownloadFailed(
@@ -659,14 +597,6 @@ void ExtensionUpdater::Observe(int type,
MaybeInstallCRXFile();
}
-void ExtensionUpdater::OnExtensionWillBeInstalled(
- content::BrowserContext* browser_context,
- const Extension* extension,
- bool is_update,
- const std::string& old_name) {
- throttle_info_.erase(extension->id());
-}
-
void ExtensionUpdater::NotifyStarted() {
content::NotificationService::current()->Notify(
extensions::NOTIFICATION_EXTENSION_UPDATING_STARTED,

Powered by Google App Engine
This is Rietveld 408576698