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

[Extensions] Use policy-enforced update URL in ManagementApi

This change gives ExtensionManagement control over update URL used when
updating extensions. Previously only first install was affected, all
later updates used update URL from the extension manifest. Now update
URL from the policy can be used if extension management said so.
Update URL from policy is handled in
https://chromium-review.googlesource.com/c/chromium/src/+/2593260.
This is a follow up CL that allows usage of policy enforced update URL
in management_api.cc

Bug: b/175768136
Change-Id: Iae334e3a50b9398664c1ac23fb7f65ee1833a289
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2592803Reviewed-by: default avatarDevlin <rdevlin.cronin@chromium.org>
Reviewed-by: default avatarMike Pinkerton <pinkerton@chromium.org>
Commit-Queue: Swapnil Gupta <swapnilgupta@google.com>
Cr-Commit-Position: refs/heads/master@{#843454}
parent ba98af5e
......@@ -18,6 +18,7 @@
#include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
#include "chrome/browser/apps/app_service/browser_app_launcher.h"
#include "chrome/browser/extensions/chrome_extension_function_details.h"
#include "chrome/browser/extensions/extension_management.h"
#include "chrome/browser/extensions/extension_service.h"
#include "chrome/browser/extensions/launch_util.h"
#include "chrome/browser/favicon/favicon_service_factory.h"
......@@ -657,3 +658,11 @@ GURL ChromeManagementAPIDelegate::GetIconURL(
return extensions::ExtensionIconSource::GetIconURL(extension, icon_size,
match, grayscale);
}
GURL ChromeManagementAPIDelegate::GetEffectiveUpdateURL(
const extensions::Extension& extension,
content::BrowserContext* context) const {
extensions::ExtensionManagement* extension_management =
extensions::ExtensionManagementFactory::GetForBrowserContext(context);
return extension_management->GetEffectiveUpdateURL(extension);
}
......@@ -80,6 +80,8 @@ class ChromeManagementAPIDelegate : public extensions::ManagementAPIDelegate {
int icon_size,
ExtensionIconSet::MatchType match,
bool grayscale) const override;
GURL GetEffectiveUpdateURL(const extensions::Extension& extension,
content::BrowserContext* context) const override;
};
#endif // CHROME_BROWSER_EXTENSIONS_API_MANAGEMENT_CHROME_MANAGEMENT_API_DELEGATE_H_
......@@ -838,6 +838,10 @@ class TestManagementAPIDelegate : public ManagementAPIDelegate {
bool grayscale) const override {
return GURL();
}
GURL GetEffectiveUpdateURL(const extensions::Extension& extension,
content::BrowserContext* context) const override {
return GURL();
}
// EnableExtension is const, so this is mutable.
mutable int enable_count_ = 0;
......
......@@ -147,11 +147,9 @@ management::ExtensionInfo CreateExtensionInfo(
!system->management_policy()->MustRemainDisabled(&extension, nullptr,
nullptr));
}
if (!ManifestURL::GetUpdateURL(&extension).is_empty()) {
info.update_url.reset(
new std::string(ManifestURL::GetUpdateURL(&extension).spec()));
}
const GURL update_url = delegate->GetEffectiveUpdateURL(extension, context);
if (!update_url.is_empty())
info.update_url = std::make_unique<std::string>(update_url.spec());
if (extension.is_app()) {
info.app_launch_url.reset(
......
......@@ -163,6 +163,11 @@ class ManagementAPIDelegate {
int icon_size,
ExtensionIconSet::MatchType match,
bool grayscale) const = 0;
// Returns effective update URL from ExtensionManagement.
virtual GURL GetEffectiveUpdateURL(
const Extension& extension,
content::BrowserContext* context) const = 0;
};
} // namespace extensions
......
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