blob: 4536f4d06b99ec23854dcd0960e63fd53cea088b [file] [log] [blame]
rdevlin.cronin@chromium.org5df038b2012-07-16 19:03:271// Copyright (c) 2012 The Chromium Authors. All rights reserved.
gfeher@chromium.org8e4560b62011-01-14 10:09:142// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
rdevlin.cronin@chromium.org5df038b2012-07-16 19:03:275#include "chrome/browser/extensions/external_policy_loader.h"
gfeher@chromium.org8e4560b62011-01-14 10:09:146
binjincccacef2014-10-13 19:00:207#include "base/logging.h"
avi@chromium.org46acbf12013-06-10 18:43:428#include "base/strings/stringprintf.h"
gfeher@chromium.org8e4560b62011-01-14 10:09:149#include "base/values.h"
mnissler@chromium.orge410b5f2012-12-14 14:02:2410#include "chrome/browser/extensions/external_provider_impl.h"
gfeher@chromium.org8e4560b62011-01-14 10:09:1411
rdevlin.cronin@chromium.org5df038b2012-07-16 19:03:2712namespace extensions {
13
binjincccacef2014-10-13 19:00:2014ExternalPolicyLoader::ExternalPolicyLoader(ExtensionManagement* settings,
15 InstallationType type)
16 : settings_(settings), type_(type) {
binjin30301062014-09-08 20:27:3417 settings_->AddObserver(this);
18}
19
20ExternalPolicyLoader::~ExternalPolicyLoader() {
21 settings_->RemoveObserver(this);
22}
23
24void ExternalPolicyLoader::OnExtensionManagementSettingsChanged() {
25 StartLoading();
gfeher@chromium.org8e4560b62011-01-14 10:09:1426}
27
mnissler@chromium.orge410b5f2012-12-14 14:02:2428// static
29void ExternalPolicyLoader::AddExtension(base::DictionaryValue* dict,
30 const std::string& extension_id,
31 const std::string& update_url) {
32 dict->SetString(base::StringPrintf("%s.%s", extension_id.c_str(),
33 ExternalProviderImpl::kExternalUpdateUrl),
34 update_url);
gfeher@chromium.org8e4560b62011-01-14 10:09:1435}
36
mnissler@chromium.orge410b5f2012-12-14 14:02:2437void ExternalPolicyLoader::StartLoading() {
Istiaque Ahmedef99c8ea2017-09-06 21:19:5738 std::unique_ptr<base::DictionaryValue> prefs;
binjincccacef2014-10-13 19:00:2039 switch (type_) {
40 case FORCED:
Istiaque Ahmedef99c8ea2017-09-06 21:19:5741 prefs = settings_->GetForceInstallList();
binjincccacef2014-10-13 19:00:2042 break;
43 case RECOMMENDED:
Istiaque Ahmedef99c8ea2017-09-06 21:19:5744 prefs = settings_->GetRecommendedInstallList();
binjincccacef2014-10-13 19:00:2045 break;
46 }
Istiaque Ahmedef99c8ea2017-09-06 21:19:5747 LoadFinished(std::move(prefs));
mnissler@chromium.orge410b5f2012-12-14 14:02:2448}
49
rdevlin.cronin@chromium.org5df038b2012-07-16 19:03:2750} // namespace extensions