| Index: chrome/browser/component_updater/supervised_user_whitelist_installer.cc
|
| diff --git a/chrome/browser/component_updater/supervised_user_whitelist_installer.cc b/chrome/browser/component_updater/supervised_user_whitelist_installer.cc
|
| index a266eecc310c72e0440bb0d889101a9803ba5a1c..5e82e8c666dfd0b162a1cf2aa1bee532d8f545df 100644
|
| --- a/chrome/browser/component_updater/supervised_user_whitelist_installer.cc
|
| +++ b/chrome/browser/component_updater/supervised_user_whitelist_installer.cc
|
| @@ -40,20 +40,33 @@ namespace {
|
|
|
| const char kSanitizedWhitelistExtension[] = ".json";
|
|
|
| -const char kWhitelist[] = "whitelist";
|
| -const char kFile[] = "file";
|
| +const char kWhitelistedContent[] = "whitelisted_content";
|
| +const char kSites[] = "sites";
|
|
|
| const char kClients[] = "clients";
|
| const char kName[] = "name";
|
|
|
| +// These are copies of extensions::manifest_keys::kName and kShortName. They
|
| +// are duplicated here because we mustn't depend on code from extensions/
|
| +// (since it's not built on Android).
|
| +const char kExtensionName[] = "name";
|
| +const char kExtensionShortName[] = "short_name";
|
| +
|
| +base::string16 GetWhitelistTitle(const base::DictionaryValue& manifest) {
|
| + base::string16 title;
|
| + if (!manifest.GetString(kExtensionShortName, &title))
|
| + manifest.GetString(kExtensionName, &title);
|
| + return title;
|
| +}
|
| +
|
| base::FilePath GetRawWhitelistPath(const base::DictionaryValue& manifest,
|
| const base::FilePath& install_dir) {
|
| const base::DictionaryValue* whitelist_dict = nullptr;
|
| - if (!manifest.GetDictionary(kWhitelist, &whitelist_dict))
|
| + if (!manifest.GetDictionary(kWhitelistedContent, &whitelist_dict))
|
| return base::FilePath();
|
|
|
| base::FilePath::StringType whitelist_file;
|
| - if (!whitelist_dict->GetString(kFile, &whitelist_file))
|
| + if (!whitelist_dict->GetString(kSites, &whitelist_file))
|
| return base::FilePath();
|
|
|
| return install_dir.Append(whitelist_file);
|
| @@ -187,10 +200,13 @@ void RemoveUnregisteredWhitelistsOnTaskRunner(
|
| class SupervisedUserWhitelistComponentInstallerTraits
|
| : public ComponentInstallerTraits {
|
| public:
|
| + using RawWhitelistReadyCallback =
|
| + base::Callback<void(const base::string16&, const base::FilePath&)>;
|
| +
|
| SupervisedUserWhitelistComponentInstallerTraits(
|
| const std::string& crx_id,
|
| const std::string& name,
|
| - const base::Callback<void(const base::FilePath&)>& callback)
|
| + const RawWhitelistReadyCallback& callback)
|
| : crx_id_(crx_id), name_(name), callback_(callback) {}
|
| ~SupervisedUserWhitelistComponentInstallerTraits() override {}
|
|
|
| @@ -210,7 +226,7 @@ class SupervisedUserWhitelistComponentInstallerTraits
|
|
|
| std::string crx_id_;
|
| std::string name_;
|
| - base::Callback<void(const base::FilePath&)> callback_;
|
| + RawWhitelistReadyCallback callback_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(SupervisedUserWhitelistComponentInstallerTraits);
|
| };
|
| @@ -238,7 +254,11 @@ void SupervisedUserWhitelistComponentInstallerTraits::ComponentReady(
|
| const base::Version& version,
|
| const base::FilePath& install_dir,
|
| scoped_ptr<base::DictionaryValue> manifest) {
|
| - callback_.Run(GetRawWhitelistPath(*manifest, install_dir));
|
| + // TODO(treib): Before getting the title, we should localize the manifest
|
| + // using extension_l10n_util::LocalizeExtension, but that doesn't exist on
|
| + // Android. crbug.com/558387
|
| + callback_.Run(GetWhitelistTitle(*manifest),
|
| + GetRawWhitelistPath(*manifest, install_dir));
|
| }
|
|
|
| base::FilePath
|
| @@ -276,8 +296,10 @@ class SupervisedUserWhitelistInstallerImpl
|
| const std::string& crx_id);
|
|
|
| void OnRawWhitelistReady(const std::string& crx_id,
|
| + const base::string16& title,
|
| const base::FilePath& whitelist_path);
|
| - void OnSanitizedWhitelistReady(const std::string& crx_id);
|
| + void OnSanitizedWhitelistReady(const std::string& crx_id,
|
| + const base::string16& title);
|
|
|
| // SupervisedUserWhitelistInstaller overrides:
|
| void RegisterComponents() override;
|
| @@ -369,6 +391,7 @@ bool SupervisedUserWhitelistInstallerImpl::UnregisterWhitelistInternal(
|
|
|
| void SupervisedUserWhitelistInstallerImpl::OnRawWhitelistReady(
|
| const std::string& crx_id,
|
| + const base::string16& title,
|
| const base::FilePath& whitelist_path) {
|
| cus_->GetSequencedTaskRunner()->PostTask(
|
| FROM_HERE,
|
| @@ -377,13 +400,14 @@ void SupervisedUserWhitelistInstallerImpl::OnRawWhitelistReady(
|
| base::ThreadTaskRunnerHandle::Get(),
|
| base::Bind(
|
| &SupervisedUserWhitelistInstallerImpl::OnSanitizedWhitelistReady,
|
| - weak_ptr_factory_.GetWeakPtr(), crx_id)));
|
| + weak_ptr_factory_.GetWeakPtr(), crx_id, title)));
|
| }
|
|
|
| void SupervisedUserWhitelistInstallerImpl::OnSanitizedWhitelistReady(
|
| - const std::string& crx_id) {
|
| + const std::string& crx_id,
|
| + const base::string16& title) {
|
| for (const WhitelistReadyCallback& callback : callbacks_)
|
| - callback.Run(crx_id, GetSanitizedWhitelistPath(crx_id));
|
| + callback.Run(crx_id, title, GetSanitizedWhitelistPath(crx_id));
|
| }
|
|
|
| void SupervisedUserWhitelistInstallerImpl::RegisterComponents() {
|
|
|