Adapt ExtensionCleanupHandler for Lacros
This CL makes the
RestrictedManagedGuestSessionExtensionCleanupExemptList policy
available for Lacros and adds the ExtensionCleanupHandler to the Lacros
clean-up handlers.
Additionally, it fixes an issue with the extension reinstall triggered
by the ExtensionCleanupHandler. It used to only work when the extensions
were cached (in Ash). Due to an existing issue of extensions not being
cached on Lacros MGS (https://crbug.com/1300197), we discovered that
they do not reinstall when they only have an update URL. This CL also
adds the fix to make extension reinstallation work with an update URL
(ExternalProviderImpl changes).
Bug: 1324526, b:217155485
Change-Id: I037c78f76807fb493f8dd582574c44e8f3decf65
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/3641708
Reviewed-by: Amr Aboelkher <[email protected]>
Reviewed-by: Devlin Cronin <[email protected]>
Commit-Queue: Maria Petrisor <[email protected]>
Reviewed-by: Alexander Hendrich <[email protected]>
Reviewed-by: Avi Drissman <[email protected]>
Cr-Commit-Position: refs/heads/main@{#1010001}
diff --git a/chrome/browser/extensions/external_provider_impl.cc b/chrome/browser/extensions/external_provider_impl.cc
index 0f3918a..550b891 100644
--- a/chrome/browser/extensions/external_provider_impl.cc
+++ b/chrome/browser/extensions/external_provider_impl.cc
@@ -174,8 +174,7 @@
std::move(*prefs).TakeDictDeprecated());
ready_ = true; // Queries for extensions are allowed from this point.
- NotifyServiceOnExternalExtensionsFound(/*is_initial_load=*/true);
- service_->OnExternalProviderReady(this);
+ NotifyServiceOnExternalExtensionsFound();
}
void ExternalProviderImpl::TriggerOnExternalExtensionFound() {
@@ -187,21 +186,23 @@
if (!service_ || !prefs_)
return;
- NotifyServiceOnExternalExtensionsFound(/*is_initial_load=*/false);
+ NotifyServiceOnExternalExtensionsFound();
}
-void ExternalProviderImpl::NotifyServiceOnExternalExtensionsFound(
- bool is_initial_load) {
+void ExternalProviderImpl::NotifyServiceOnExternalExtensionsFound() {
std::vector<ExternalInstallInfoUpdateUrl> external_update_url_extensions;
std::vector<ExternalInstallInfoFile> external_file_extensions;
RetrieveExtensionsFromPrefs(&external_update_url_extensions,
&external_file_extensions);
for (const auto& extension : external_update_url_extensions)
- service_->OnExternalExtensionUpdateUrlFound(extension, is_initial_load);
+ service_->OnExternalExtensionUpdateUrlFound(extension,
+ /*force_update=*/true);
for (const auto& extension : external_file_extensions)
service_->OnExternalExtensionFileFound(extension);
+
+ service_->OnExternalProviderReady(this);
}
void ExternalProviderImpl::UpdatePrefs(