Commit a0b85989 authored by Swapnil's avatar Swapnil Committed by Chromium LUCI CQ

Fix priority of already installed extensions

We assign the priority as FOREGROUND if there is any pending force
installed extension. Then for the enabled/disabled extensions, we set
the priority as FOREGROUND in this case. This causes a  high rate of
"ondemand" updates for certain extensions. This CL fixes this by
assigning FOREGROUND priority only in case of first installs.

Bug: 1133407
Change-Id: I7b6e84e22c240ead798eb6f625ef3c26142c786f
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2621893Reviewed-by: default avatarJoshua Pawlicki <waffles@chromium.org>
Commit-Queue: Swapnil Gupta <swapnilgupta@google.com>
Cr-Commit-Position: refs/heads/master@{#842601}
parent fae44022
...@@ -371,14 +371,6 @@ void ExtensionUpdater::CheckNow(CheckParams params) { ...@@ -371,14 +371,6 @@ void ExtensionUpdater::CheckNow(CheckParams params) {
ExtensionUpdateCheckParams update_check_params; ExtensionUpdateCheckParams update_check_params;
if (params.ids.empty()) { if (params.ids.empty()) {
// We have to mark high-priority extensions (such as policy-forced
// extensions or external component extensions) with foreground fetch
// priority; otherwise their installation may be throttled by bandwidth
// limits.
// See https://crbug.com/904600 and https://crbug.com/965686.
if (pending_extension_manager->HasHighPriorityPendingExtension())
params.fetch_priority = ManifestFetchData::FOREGROUND;
// If no extension ids are specified, check for updates for all extensions. // If no extension ids are specified, check for updates for all extensions.
pending_extension_manager->GetPendingIdsForUpdateCheck(&pending_ids); pending_extension_manager->GetPendingIdsForUpdateCheck(&pending_ids);
...@@ -393,12 +385,22 @@ void ExtensionUpdater::CheckNow(CheckParams params) { ...@@ -393,12 +385,22 @@ void ExtensionUpdater::CheckNow(CheckParams params) {
const bool is_corrupt_reinstall = const bool is_corrupt_reinstall =
pending_extension_manager->IsPolicyReinstallForCorruptionExpected( pending_extension_manager->IsPolicyReinstallForCorruptionExpected(
pending_id); pending_id);
// We have to mark high-priority extensions (such as policy-forced
// extensions or external component extensions) with foreground fetch
// priority; otherwise their installation may be throttled by bandwidth
// limits.
// See https://crbug.com/904600 and https://crbug.com/965686.
const bool is_high_priority_extension_pending =
pending_extension_manager->HasHighPriorityPendingExtension();
if (CanUseUpdateService(pending_id)) { if (CanUseUpdateService(pending_id)) {
update_check_params.update_info[pending_id].is_corrupt_reinstall = update_check_params.update_info[pending_id].is_corrupt_reinstall =
is_corrupt_reinstall; is_corrupt_reinstall;
} else if (downloader_->AddPendingExtension( } else if (downloader_->AddPendingExtension(
pending_id, info->update_url(), info->install_source(), pending_id, info->update_url(), info->install_source(),
is_corrupt_reinstall, request_id, params.fetch_priority)) { is_corrupt_reinstall, request_id,
is_high_priority_extension_pending
? ManifestFetchData::FOREGROUND
: params.fetch_priority)) {
request.in_progress_ids_.insert(pending_id); request.in_progress_ids_.insert(pending_id);
InstallStageTracker::Get(profile_)->ReportInstallationStage( InstallStageTracker::Get(profile_)->ReportInstallationStage(
pending_id, InstallStageTracker::Stage::DOWNLOADING); pending_id, InstallStageTracker::Stage::DOWNLOADING);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment