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 @@ ...@@ -18,6 +18,7 @@
#include "chrome/browser/apps/app_service/app_service_proxy_factory.h" #include "chrome/browser/apps/app_service/app_service_proxy_factory.h"
#include "chrome/browser/apps/app_service/browser_app_launcher.h" #include "chrome/browser/apps/app_service/browser_app_launcher.h"
#include "chrome/browser/extensions/chrome_extension_function_details.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/extension_service.h"
#include "chrome/browser/extensions/launch_util.h" #include "chrome/browser/extensions/launch_util.h"
#include "chrome/browser/favicon/favicon_service_factory.h" #include "chrome/browser/favicon/favicon_service_factory.h"
...@@ -657,3 +658,11 @@ GURL ChromeManagementAPIDelegate::GetIconURL( ...@@ -657,3 +658,11 @@ GURL ChromeManagementAPIDelegate::GetIconURL(
return extensions::ExtensionIconSource::GetIconURL(extension, icon_size, return extensions::ExtensionIconSource::GetIconURL(extension, icon_size,
match, grayscale); 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 { ...@@ -80,6 +80,8 @@ class ChromeManagementAPIDelegate : public extensions::ManagementAPIDelegate {
int icon_size, int icon_size,
ExtensionIconSet::MatchType match, ExtensionIconSet::MatchType match,
bool grayscale) const override; 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_ #endif // CHROME_BROWSER_EXTENSIONS_API_MANAGEMENT_CHROME_MANAGEMENT_API_DELEGATE_H_
...@@ -838,6 +838,10 @@ class TestManagementAPIDelegate : public ManagementAPIDelegate { ...@@ -838,6 +838,10 @@ class TestManagementAPIDelegate : public ManagementAPIDelegate {
bool grayscale) const override { bool grayscale) const override {
return GURL(); return GURL();
} }
GURL GetEffectiveUpdateURL(const extensions::Extension& extension,
content::BrowserContext* context) const override {
return GURL();
}
// EnableExtension is const, so this is mutable. // EnableExtension is const, so this is mutable.
mutable int enable_count_ = 0; mutable int enable_count_ = 0;
......
...@@ -147,11 +147,9 @@ management::ExtensionInfo CreateExtensionInfo( ...@@ -147,11 +147,9 @@ management::ExtensionInfo CreateExtensionInfo(
!system->management_policy()->MustRemainDisabled(&extension, nullptr, !system->management_policy()->MustRemainDisabled(&extension, nullptr,
nullptr)); nullptr));
} }
const GURL update_url = delegate->GetEffectiveUpdateURL(extension, context);
if (!ManifestURL::GetUpdateURL(&extension).is_empty()) { if (!update_url.is_empty())
info.update_url.reset( info.update_url = std::make_unique<std::string>(update_url.spec());
new std::string(ManifestURL::GetUpdateURL(&extension).spec()));
}
if (extension.is_app()) { if (extension.is_app()) {
info.app_launch_url.reset( info.app_launch_url.reset(
......
...@@ -163,6 +163,11 @@ class ManagementAPIDelegate { ...@@ -163,6 +163,11 @@ class ManagementAPIDelegate {
int icon_size, int icon_size,
ExtensionIconSet::MatchType match, ExtensionIconSet::MatchType match,
bool grayscale) const = 0; bool grayscale) const = 0;
// Returns effective update URL from ExtensionManagement.
virtual GURL GetEffectiveUpdateURL(
const Extension& extension,
content::BrowserContext* context) const = 0;
}; };
} // namespace extensions } // 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