Commit f832a991 authored by treib's avatar treib Committed by Commit bot

Supervised users: Include extension version in update requests

BUG=397951

Review URL: https://codereview.chromium.org/1028123002

Cr-Commit-Position: refs/heads/master@{#322029}
parent d450c33f
......@@ -1674,12 +1674,12 @@ void ExtensionService::CheckPermissionsIncrease(const Extension* extension,
#if defined(ENABLE_SUPERVISED_USERS)
// If a custodian-installed extension is disabled for a supervised user due
// to a permissions increase, send a request to the custodian, since the
// supervised user itself can't re-enable the extension.
// supervised user themselves can't re-enable the extension.
if (extensions::util::IsExtensionSupervised(extension, profile_)) {
SupervisedUserService* supervised_user_service =
SupervisedUserServiceFactory::GetForProfile(profile_);
supervised_user_service->AddExtensionUpdateRequest(
extension->id(),
extension->id(), *extension->version(),
base::Bind(ExtensionUpdateRequestSent, extension->id()));
}
#endif
......
......@@ -6642,7 +6642,7 @@ class MockPermissionRequestCreator : public PermissionRequestCreator {
}
MOCK_METHOD2(CreateExtensionUpdateRequest,
void(const std::string& extension_id,
void(const std::string& id,
const SupervisedUserService::SuccessCallback& callback));
private:
......@@ -6737,7 +6737,8 @@ TEST_F(ExtensionServiceTest, SupervisedUser_UpdateWithPermissionIncrease) {
std::string old_version = extension->VersionString();
// Update to a new version with increased permissions.
EXPECT_CALL(*creator, CreateExtensionUpdateRequest(id, testing::_));
EXPECT_CALL(*creator,
CreateExtensionUpdateRequest(id + ":2", testing::_));
path = base_path.AppendASCII("v2");
PackCRXAndUpdateExtension(id, path, pem_path, DISABLED);
......
......@@ -117,9 +117,9 @@ void PermissionRequestCreatorApiary::CreateURLAccessRequest(
}
void PermissionRequestCreatorApiary::CreateExtensionUpdateRequest(
const std::string& extension_id,
const std::string& id,
const SuccessCallback& callback) {
CreateRequest(kNamespaceUpdateRequest, extension_id, callback);
CreateRequest(kNamespaceUpdateRequest, id, callback);
}
GURL PermissionRequestCreatorApiary::GetApiUrl() const {
......
......@@ -42,7 +42,7 @@ class PermissionRequestCreatorApiary : public PermissionRequestCreator,
bool IsEnabled() const override;
void CreateURLAccessRequest(const GURL& url_requested,
const SuccessCallback& callback) override;
void CreateExtensionUpdateRequest(const std::string& extension_id,
void CreateExtensionUpdateRequest(const std::string& id,
const SuccessCallback& callback) override;
void set_url_fetcher_id_for_testing(int id) { url_fetcher_id_ = id; }
......
......@@ -57,9 +57,9 @@ void PermissionRequestCreatorSync::CreateURLAccessRequest(
}
void PermissionRequestCreatorSync::CreateExtensionUpdateRequest(
const std::string& extension_id,
const std::string& id,
const SuccessCallback& callback) {
CreateRequest(kSupervisedUserUpdateRequestKeyPrefix, extension_id, callback);
CreateRequest(kSupervisedUserUpdateRequestKeyPrefix, id, callback);
}
void PermissionRequestCreatorSync::CreateRequest(
......
......@@ -31,7 +31,7 @@ class PermissionRequestCreatorSync : public PermissionRequestCreator {
bool IsEnabled() const override;
void CreateURLAccessRequest(const GURL& url_requested,
const SuccessCallback& callback) override;
void CreateExtensionUpdateRequest(const std::string& extension_id,
void CreateExtensionUpdateRequest(const std::string& id,
const SuccessCallback& callback) override;
private:
......
......@@ -28,10 +28,10 @@ class PermissionRequestCreator {
virtual void CreateURLAccessRequest(const GURL& url_requested,
const SuccessCallback& callback) = 0;
// Creates a request to re-enable the extension with the given |extension_id|,
// which was disabled due to a permission increase.
// Creates a request to re-enable the extension with the given |id| (composed
// of extension_id:version), which was disabled due to a permission increase.
virtual void CreateExtensionUpdateRequest(
const std::string& extension_id,
const std::string& id,
const SuccessCallback& callback) = 0;
};
......
......@@ -9,6 +9,7 @@
#include "base/memory/ref_counted.h"
#include "base/prefs/pref_service.h"
#include "base/strings/utf_string_conversions.h"
#include "base/version.h"
#include "chrome/browser/browser_process.h"
#include "chrome/browser/component_updater/supervised_user_whitelist_installer.h"
#include "chrome/browser/profiles/profile.h"
......@@ -86,10 +87,10 @@ void CreateURLAccessRequest(
}
void CreateExtensionUpdateRequest(
const std::string& extension_id,
const std::string& id,
PermissionRequestCreator* creator,
const SupervisedUserService::SuccessCallback& callback) {
creator->CreateExtensionUpdateRequest(extension_id, callback);
creator->CreateExtensionUpdateRequest(id, callback);
}
#if defined(ENABLE_EXTENSIONS)
......@@ -657,9 +658,11 @@ void SupervisedUserService::AddURLAccessRequest(
void SupervisedUserService::AddExtensionUpdateRequest(
const std::string& extension_id,
const base::Version& version,
const SuccessCallback& callback) {
std::string id = extension_id + ":" + version.GetString();
AddPermissionRequestInternal(
base::Bind(CreateExtensionUpdateRequest, extension_id),
base::Bind(CreateExtensionUpdateRequest, id),
callback, 0);
}
......
......@@ -43,6 +43,7 @@ class SupervisedUserWhitelistService;
namespace base {
class FilePath;
class Version;
}
namespace content {
......@@ -120,6 +121,7 @@ class SupervisedUserService : public KeyedService,
// Adds an update request for the given WebStore item (App/Extension).
void AddExtensionUpdateRequest(const std::string& extension_id,
const base::Version& version,
const SuccessCallback& callback);
// Returns the email address of the custodian.
......
......@@ -256,7 +256,7 @@ class MockPermissionRequestCreator : public PermissionRequestCreator {
callbacks_.push_back(callback);
}
void CreateExtensionUpdateRequest(const std::string& extension_id,
void CreateExtensionUpdateRequest(const std::string& id,
const SuccessCallback& callback) override {
FAIL();
}
......
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