| Index: extensions/browser/updater/extension_downloader.cc
|
| diff --git a/extensions/browser/updater/extension_downloader.cc b/extensions/browser/updater/extension_downloader.cc
|
| index 7bc7f6752a6c14ca4ec8383a42964adfee75b6e2..731a32a18bc9e06096ef9e3f7c6d68ccc8ea6dc7 100644
|
| --- a/extensions/browser/updater/extension_downloader.cc
|
| +++ b/extensions/browser/updater/extension_downloader.cc
|
| @@ -210,29 +210,35 @@ bool ExtensionDownloader::AddExtension(const Extension& extension,
|
| return false;
|
| }
|
|
|
| + ManifestFetchData::ExtraParams extra;
|
| +
|
| // If the extension updates itself from the gallery, ignore any update URL
|
| // data. At the moment there is no extra data that an extension can
|
| // communicate to the the gallery update servers.
|
| std::string update_url_data;
|
| if (!ManifestURL::UpdatesFromGallery(&extension))
|
| - update_url_data = delegate_->GetUpdateUrlData(extension.id());
|
| + extra.update_url_data = delegate_->GetUpdateUrlData(extension.id());
|
|
|
| return AddExtensionData(
|
| extension.id(), *extension.version(), extension.GetType(),
|
| - ManifestURL::GetUpdateURL(&extension), update_url_data, request_id);
|
| + ManifestURL::GetUpdateURL(&extension), &extra, request_id);
|
| }
|
|
|
| bool ExtensionDownloader::AddPendingExtension(const std::string& id,
|
| const GURL& update_url,
|
| + bool is_corrupt_reinstall,
|
| int request_id) {
|
| // Use a zero version to ensure that a pending extension will always
|
| // be updated, and thus installed (assuming all extensions have
|
| // non-zero versions).
|
| base::Version version("0.0.0.0");
|
| DCHECK(version.IsValid());
|
| + ManifestFetchData::ExtraParams extra;
|
| + if (is_corrupt_reinstall)
|
| + extra.is_corrupt_policy_reinstall = true;
|
|
|
| return AddExtensionData(id, version, Manifest::TYPE_UNKNOWN, update_url,
|
| - std::string(), request_id);
|
| + &extra, request_id);
|
| }
|
|
|
| void ExtensionDownloader::StartAllPending(ExtensionCache* cache) {
|
| @@ -270,7 +276,7 @@ void ExtensionDownloader::StartBlacklistUpdate(
|
| extension_urls::GetWebstoreUpdateUrl(), request_id));
|
| DCHECK(blacklist_fetch->base_url().SchemeIsCryptographic());
|
| blacklist_fetch->AddExtension(kBlacklistAppID, version, &ping_data,
|
| - std::string(), kDefaultInstallSource);
|
| + kDefaultInstallSource, nullptr);
|
| StartUpdateCheck(std::move(blacklist_fetch));
|
| }
|
|
|
| @@ -285,12 +291,13 @@ void ExtensionDownloader::set_test_delegate(
|
| g_test_delegate = delegate;
|
| }
|
|
|
| -bool ExtensionDownloader::AddExtensionData(const std::string& id,
|
| - const base::Version& version,
|
| - Manifest::Type extension_type,
|
| - const GURL& extension_update_url,
|
| - const std::string& update_url_data,
|
| - int request_id) {
|
| +bool ExtensionDownloader::AddExtensionData(
|
| + const std::string& id,
|
| + const base::Version& version,
|
| + Manifest::Type extension_type,
|
| + const GURL& extension_update_url,
|
| + const ManifestFetchData::ExtraParams* extra,
|
| + int request_id) {
|
| GURL update_url(extension_update_url);
|
| // Skip extensions with non-empty invalid update URLs.
|
| if (!update_url.is_empty() && !update_url.is_valid()) {
|
| @@ -362,8 +369,8 @@ bool ExtensionDownloader::AddExtensionData(const std::string& id,
|
| // Try to add to the ManifestFetchData at the end of the list.
|
| ManifestFetchData* existing_fetch = existing_iter->second.back().get();
|
| if (existing_fetch->AddExtension(id, version.GetString(),
|
| - optional_ping_data, update_url_data,
|
| - install_source)) {
|
| + optional_ping_data, install_source,
|
| + extra)) {
|
| added = true;
|
| }
|
| }
|
| @@ -376,7 +383,7 @@ bool ExtensionDownloader::AddExtensionData(const std::string& id,
|
| fetches_preparing_[std::make_pair(request_id, update_url)].push_back(
|
| std::move(fetch));
|
| added = fetch_ptr->AddExtension(id, version.GetString(), optional_ping_data,
|
| - update_url_data, install_source);
|
| + install_source, extra);
|
| DCHECK(added);
|
| }
|
|
|
|
|