Skip to content

Commit

Permalink
iwa: Propagate allow_downgrades to updates
Browse files Browse the repository at this point in the history
Propagate allow_downgrades to PrepareAndStoreUpdateCommand

Bug: b:365048785
Change-Id: Ie19970a70927789999bb8965ca91f40eabf33242
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/6062777
Reviewed-by: Andrew Rayskiy <greengrape@google.com>
Commit-Queue: Magdalena Skarbińska <mskarbinska@google.com>
Reviewed-by: Simon Hangl <simonha@google.com>
Reviewed-by: Daniel Murphy <dmurph@chromium.org>
Cr-Commit-Position: refs/heads/main@{#1392835}
  • Loading branch information
Magdalena Skarbinska authored and pull[bot] committed Dec 9, 2024
1 parent 410e3b1 commit 1065532
Show file tree
Hide file tree
Showing 9 changed files with 73 additions and 56 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -171,6 +171,7 @@ class IwaInternalsHandler::IwaManifestInstallUpdateHandler
/*update_channel=*/
isolation_data.update_channel().value_or(
UpdateChannel::default_channel()),
/*allow_downgrades=*/false,
/*pinned_version=*/std::nullopt,
/*dev_mode=*/true);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,7 @@ IsolatedWebAppUpdatePrepareAndStoreCommand::
command_helper_(std::move(command_helper)),
url_info_(std::move(url_info)),
expected_version_(update_info.expected_version()),
allow_downgrades_(update_info.allow_downgrades()),
update_source_(update_info.source()),
web_contents_(std::move(web_contents)),
optional_keep_alive_(std::move(optional_keep_alive)),
Expand All @@ -114,6 +115,7 @@ IsolatedWebAppUpdatePrepareAndStoreCommand::
expected_version_.has_value()
? expected_version_->GetString()
: "unknown");
GetMutableDebugValue().Set("allow_downgrades", allow_downgrades_);
}

IsolatedWebAppUpdatePrepareAndStoreCommand::
Expand Down Expand Up @@ -337,9 +339,11 @@ Profile& IsolatedWebAppUpdatePrepareAndStoreCommand::profile() {

IsolatedWebAppUpdatePrepareAndStoreCommand::UpdateInfo::UpdateInfo(
IwaSourceWithModeAndFileOp source,
std::optional<base::Version> expected_version)
std::optional<base::Version> expected_version,
bool allow_downgrades)
: source_(std::move(source)),
expected_version_(std::move(expected_version)) {}
expected_version_(std::move(expected_version)),
allow_downgrades_(allow_downgrades) {}

IsolatedWebAppUpdatePrepareAndStoreCommand::UpdateInfo::~UpdateInfo() = default;

Expand All @@ -357,7 +361,8 @@ IsolatedWebAppUpdatePrepareAndStoreCommand::UpdateInfo::AsDebugValue() const {
.Set("source", source_.ToDebugValue())
.Set("expected_version", expected_version_.has_value()
? expected_version_->GetString()
: "<any>"));
: "<any>")
.Set("allow_downgrades", allow_downgrades_));
}

} // namespace web_app
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,8 @@ class IsolatedWebAppUpdatePrepareAndStoreCommand
class UpdateInfo {
public:
UpdateInfo(IwaSourceWithModeAndFileOp source,
std::optional<base::Version> expected_version);
std::optional<base::Version> expected_version,
bool allow_downgrades = false);
~UpdateInfo();

UpdateInfo(const UpdateInfo&);
Expand All @@ -91,10 +92,12 @@ class IsolatedWebAppUpdatePrepareAndStoreCommand
const std::optional<base::Version>& expected_version() const {
return expected_version_;
}
bool allow_downgrades() const { return allow_downgrades_; }

private:
IwaSourceWithModeAndFileOp source_;
std::optional<base::Version> expected_version_;
bool allow_downgrades_;
};

// `update_info` specifies the location of the update for the IWA referred to
Expand Down Expand Up @@ -167,6 +170,7 @@ class IsolatedWebAppUpdatePrepareAndStoreCommand

const IsolatedWebAppUrlInfo url_info_;
const std::optional<base::Version> expected_version_;
bool allow_downgrades_;

// The inferred integrity block data of the update bundle being processed.
std::optional<IsolatedWebAppIntegrityBlockData> integrity_block_data_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -105,11 +105,13 @@ constexpr auto kWebBundleDownloadTrafficAnnotation =
IwaUpdateDiscoveryTaskParams::IwaUpdateDiscoveryTaskParams(
const GURL& update_manifest_url,
const UpdateChannel& update_channel,
bool allow_downgrades,
const std::optional<base::Version>& pinned_version,
const IsolatedWebAppUrlInfo& url_info,
bool dev_mode)
: update_manifest_url_(update_manifest_url),
update_channel_(update_channel),
allow_downgrades_(allow_downgrades),
pinned_version_(pinned_version),
url_info_(url_info),
dev_mode_(dev_mode) {}
Expand Down Expand Up @@ -172,6 +174,7 @@ IsolatedWebAppUpdateDiscoveryTask::IsolatedWebAppUpdateDiscoveryTask(
base::Value::Dict()
.Set("bundle_id", task_params_.url_info().web_bundle_id().id())
.Set("update_channel", task_params_.update_channel().ToString())
.Set("allow_downgrades", task_params_.allow_downgrades())
.Set("app_id", task_params_.url_info().app_id())
.Set("update_manifest_url",
task_params_.update_manifest_url().spec());
Expand Down Expand Up @@ -378,11 +381,11 @@ void IsolatedWebAppUpdateDiscoveryTask::OnWebBundleDownloaded(
? IsolatedWebAppUpdatePrepareAndStoreCommand::UpdateInfo(
IwaSourceBundleDevModeWithFileOp(
bundle_.path(), IwaSourceBundleDevFileOp::kMove),
expected_version)
expected_version, task_params_.allow_downgrades())
: IsolatedWebAppUpdatePrepareAndStoreCommand::UpdateInfo(
IwaSourceBundleProdModeWithFileOp(
bundle_.path(), IwaSourceBundleProdFileOp::kMove),
expected_version);
expected_version, task_params_.allow_downgrades());

command_scheduler_->PrepareAndStoreIsolatedWebAppUpdate(
update_info, task_params_.url_info(),
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ class IwaUpdateDiscoveryTaskParams {
IwaUpdateDiscoveryTaskParams(
const GURL& update_manifest_url,
const UpdateChannel& update_channel,
bool allow_downgrades,
const std::optional<base::Version>& pinned_version,
const IsolatedWebAppUrlInfo& url_info,
bool dev_mode);
Expand All @@ -39,6 +40,7 @@ class IwaUpdateDiscoveryTaskParams {

const GURL& update_manifest_url() const { return update_manifest_url_; }
const UpdateChannel& update_channel() const { return update_channel_; }
bool allow_downgrades() const { return allow_downgrades_; }
const std::optional<base::Version>& pinned_version() const {
return pinned_version_;
}
Expand All @@ -48,6 +50,7 @@ class IwaUpdateDiscoveryTaskParams {
private:
GURL update_manifest_url_;
UpdateChannel update_channel_;
bool allow_downgrades_;
std::optional<base::Version> pinned_version_;
IsolatedWebAppUrlInfo url_info_;
bool dev_mode_;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -96,10 +96,11 @@ class IsolatedWebAppUpdateDiscoveryTaskTest : public WebAppTest {

Task CreateDefaultIwaUpdateDiscoveryTask(
UpdateChannel update_channel = UpdateChannel::default_channel(),
std::optional<base::Version> pinned_version = std::nullopt) {
return Task(IwaUpdateDiscoveryTaskParams(update_manifest_url_,
update_channel, pinned_version,
url_info_, /*dev_mode=*/false),
std::optional<base::Version> pinned_version = std::nullopt,
bool allow_downgrades = false) {
return Task(IwaUpdateDiscoveryTaskParams(
update_manifest_url_, update_channel, allow_downgrades,
pinned_version, url_info_, /*dev_mode=*/false),
fake_provider().scheduler(), fake_provider().registrar_unsafe(),
profile()->GetURLLoaderFactory());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -66,9 +66,11 @@ namespace web_app {
IsolatedWebAppUpdateOptions::IsolatedWebAppUpdateOptions(
const GURL& update_manifest_url,
UpdateChannel update_channel,
bool allow_downgrades,
const std::optional<base::Version>& pinned_version)
: update_manifest_url(update_manifest_url),
update_channel(update_channel),
allow_downgrades(allow_downgrades),
pinned_version(pinned_version) {}

IsolatedWebAppUpdateOptions::IsolatedWebAppUpdateOptions(
Expand Down Expand Up @@ -160,9 +162,9 @@ GetForceInstalledBundleIdToIsolatedWebAppsUpdateOptionsMap(Profile* profile) {

id_to_update_options_map.emplace(
options->web_bundle_id(),
IsolatedWebAppUpdateOptions(options->update_manifest_url(),
options->update_channel(),
options->pinned_version()));
IsolatedWebAppUpdateOptions(
options->update_manifest_url(), options->update_channel(),
options->allow_downgrades(), options->pinned_version()));
}
#endif

Expand Down Expand Up @@ -408,11 +410,13 @@ void IsolatedWebAppUpdateManager::DiscoverUpdatesForApp(
const IsolatedWebAppUrlInfo& url_info,
const GURL& update_manifest_url,
const UpdateChannel& update_channel,
bool allow_downgrades,
const std::optional<base::Version>& pinned_version,
bool dev_mode) {
task_queue_.Push(std::make_unique<IsolatedWebAppUpdateDiscoveryTask>(
IwaUpdateDiscoveryTaskParams(update_manifest_url, update_channel,
pinned_version, url_info, dev_mode),
allow_downgrades, pinned_version, url_info,
dev_mode),
provider_->scheduler(), provider_->registrar_unsafe(),
profile_->GetURLLoaderFactory()));

Expand Down Expand Up @@ -559,6 +563,7 @@ bool IsolatedWebAppUpdateManager::MaybeQueueUpdateDiscoveryTask(

DiscoverUpdatesForApp(url_info, update_options->update_manifest_url,
update_options->update_channel,
update_options->allow_downgrades,
update_options->pinned_version, /*dev_mode=*/false);

return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -78,6 +78,7 @@ struct IsolatedWebAppUpdateOptions {
IsolatedWebAppUpdateOptions(
const GURL& update_manifest_url,
UpdateChannel update_channel,
bool allow_downgrades,
const std::optional<base::Version>& pinned_version);

IsolatedWebAppUpdateOptions(const IsolatedWebAppUpdateOptions& other);
Expand All @@ -86,6 +87,7 @@ struct IsolatedWebAppUpdateOptions {

GURL update_manifest_url;
UpdateChannel update_channel;
bool allow_downgrades;
std::optional<base::Version> pinned_version;
};

Expand Down Expand Up @@ -186,6 +188,7 @@ class IsolatedWebAppUpdateManager
void DiscoverUpdatesForApp(const IsolatedWebAppUrlInfo& url_info,
const GURL& update_manifest_url,
const UpdateChannel& update_channel,
bool allow_downgrades,
const std::optional<base::Version>& pinned_version,
bool dev_mode);

Expand Down
Loading

0 comments on commit 1065532

Please sign in to comment.