Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(87)

Side by Side Diff: chrome/browser/extensions/extension_management_test_util.cc

Issue 559603002: Add new ExtensionManagement preference (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fixes addressing #2 Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "chrome/browser/extensions/extension_management_test_util.h"
6
7 #include "components/crx_file/id_util.h"
8
9 namespace extensions {
10
11 namespace schema = schema_constants;
12
13 namespace {
14
15 std::string make_path(std::string a, std::string b) {
16 return a + "." + b;
17 }
18
19 const std::string kInstallSourcesPath =
20 make_path(schema::kWildcard, schema::kInstallSources);
21 const std::string kAllowedTypesPath =
22 make_path(schema::kWildcard, schema::kAllowedTypes);
Joao da Silva 2014/09/18 15:23:53 Don't define std::string globals like this, becaus
binjin 2014/09/18 15:49:03 Done.
23
24 } // namespace
25
26 ExtensionManagementPrefUpdaterBase::ExtensionManagementPrefUpdaterBase() {
27 }
28
29 ExtensionManagementPrefUpdaterBase::~ExtensionManagementPrefUpdaterBase() {
30 }
31
32 void ExtensionManagementPrefUpdaterBase::SetBlacklistedByDefault(bool value) {
33 pref_->SetString(make_path(schema::kWildcard, schema::kInstallationMode),
34 value ? schema::kBlocked : schema::kAllowed);
35 }
36
37 void ExtensionManagementPrefUpdaterBase::
38 ClearInstallationModesForIndividualExtensions() {
39 for (base::DictionaryValue::Iterator it(*pref_.get()); !it.IsAtEnd();
40 it.Advance()) {
41 DCHECK(it.value().IsType(base::Value::TYPE_DICTIONARY));
42 if (it.key() != schema::kWildcard) {
43 DCHECK(crx_file::id_util::IdIsValid(it.key()));
44 pref_->Remove(make_path(it.key(), schema::kInstallationMode), NULL);
45 pref_->Remove(make_path(it.key(), schema::kUpdateUrl), NULL);
46 }
47 }
48 }
49
50 void
51 ExtensionManagementPrefUpdaterBase::SetIndividualExtensionInstallationAllowed(
52 const ExtensionId& id,
53 bool allowed) {
54 DCHECK(crx_file::id_util::IdIsValid(id));
55 pref_->SetString(make_path(id, schema::kInstallationMode),
56 allowed ? schema::kAllowed : schema::kBlocked);
57 pref_->Remove(make_path(id, schema::kUpdateUrl), NULL);
58 }
59
60 void ExtensionManagementPrefUpdaterBase::SetIndividualExtensionAutoInstalled(
61 const ExtensionId& id,
62 const std::string& update_url,
63 bool forced) {
64 DCHECK(crx_file::id_util::IdIsValid(id));
65 pref_->SetString(make_path(id, schema::kInstallationMode),
66 forced ? schema::kForceInstalled : schema::kNormalInstalled);
67 pref_->SetString(make_path(id, schema::kUpdateUrl), update_url);
68 }
69
70 void ExtensionManagementPrefUpdaterBase::UnsetInstallSources() {
71 pref_->Remove(kInstallSourcesPath, NULL);
72 }
73
74 void ExtensionManagementPrefUpdaterBase::ClearInstallSources() {
75 ClearList(kInstallSourcesPath);
76 }
77
78 void ExtensionManagementPrefUpdaterBase::AddInstallSource(
79 const std::string& install_source) {
80 AddStringToList(kInstallSourcesPath, install_source);
81 }
82
83 void ExtensionManagementPrefUpdaterBase::RemoveInstallSource(
84 const std::string& install_source) {
85 RemoveStringFromList(kInstallSourcesPath, install_source);
86 }
87
88 void ExtensionManagementPrefUpdaterBase::UnsetAllowedTypes() {
89 pref_->Remove(kAllowedTypesPath, NULL);
90 }
91
92 void ExtensionManagementPrefUpdaterBase::ClearAllowedTypes() {
93 ClearList(kAllowedTypesPath);
94 }
95
96 void ExtensionManagementPrefUpdaterBase::AddAllowedType(
97 const std::string& allowed_type) {
98 AddStringToList(kAllowedTypesPath, allowed_type);
99 }
100
101 const base::DictionaryValue* ExtensionManagementPrefUpdaterBase::GetPref() {
102 return pref_.get();
103 }
104
105 void ExtensionManagementPrefUpdaterBase::SetPref(base::DictionaryValue* pref) {
106 pref_.reset(pref);
107 }
108
109 scoped_ptr<base::DictionaryValue>
110 ExtensionManagementPrefUpdaterBase::TakePref() {
111 return pref_.Pass();
112 }
113
114 void ExtensionManagementPrefUpdaterBase::RemoveAllowedType(
115 const std::string& allowd_type) {
116 RemoveStringFromList(kAllowedTypesPath, allowd_type);
117 }
118
119 void ExtensionManagementPrefUpdaterBase::ClearList(const std::string& path) {
120 base::ListValue* list_value = NULL;
121 if (pref_->GetList(path, &list_value))
122 list_value->Clear();
123 else
124 pref_->Set(path, new base::ListValue());
Joao da Silva 2014/09/18 15:23:53 This also overrides existing lists, so it works fo
binjin 2014/09/18 15:49:03 Done.
125 }
126
127 void ExtensionManagementPrefUpdaterBase::AddStringToList(
128 const std::string& path,
129 const std::string& str) {
130 base::ListValue* list_value = NULL;
131 if (!pref_->GetList(path, &list_value)) {
132 list_value = new base::ListValue();
133 pref_->Set(path, list_value);
134 }
135 CHECK(list_value->AppendIfNotPresent(new base::StringValue(str)));
136 }
137
138 void ExtensionManagementPrefUpdaterBase::RemoveStringFromList(
139 const std::string& path,
140 const std::string& str) {
141 base::ListValue* list_value = NULL;
142 if (pref_->GetList(path, &list_value))
143 CHECK(list_value->Remove(base::StringValue(str), NULL));
144 }
145
146 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698