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

Side by Side Diff: chrome/browser/extensions/api/preference/preference_api.cc

Issue 2344273002: Remove stl_util's STLDeleteContainerPairSecondPointers from extensions. (Closed)
Patch Set: devlin Created 4 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
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/extensions/api/preference/preference_api.h" 5 #include "chrome/browser/extensions/api/preference/preference_api.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <map> 9 #include <map>
10 #include <memory> 10 #include <memory>
11 #include <utility> 11 #include <utility>
12 12
13 #include "base/lazy_instance.h" 13 #include "base/lazy_instance.h"
14 #include "base/macros.h" 14 #include "base/macros.h"
15 #include "base/memory/ptr_util.h"
15 #include "base/memory/singleton.h" 16 #include "base/memory/singleton.h"
16 #include "base/stl_util.h"
17 #include "base/strings/stringprintf.h" 17 #include "base/strings/stringprintf.h"
18 #include "base/values.h" 18 #include "base/values.h"
19 #include "build/build_config.h" 19 #include "build/build_config.h"
20 #include "chrome/browser/chrome_notification_types.h" 20 #include "chrome/browser/chrome_notification_types.h"
21 #include "chrome/browser/extensions/api/content_settings/content_settings_servic e.h" 21 #include "chrome/browser/extensions/api/content_settings/content_settings_servic e.h"
22 #include "chrome/browser/extensions/api/preference/preference_api_constants.h" 22 #include "chrome/browser/extensions/api/preference/preference_api_constants.h"
23 #include "chrome/browser/extensions/api/preference/preference_helpers.h" 23 #include "chrome/browser/extensions/api/preference/preference_helpers.h"
24 #include "chrome/browser/extensions/api/proxy/proxy_api.h" 24 #include "chrome/browser/extensions/api/proxy/proxy_api.h"
25 #include "chrome/browser/extensions/extension_service.h" 25 #include "chrome/browser/extensions/extension_service.h"
26 #include "chrome/browser/net/prediction_options.h" 26 #include "chrome/browser/net/prediction_options.h"
(...skipping 231 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 if (it != event_mapping_.end()) { 258 if (it != event_mapping_.end()) {
259 *event_name = it->second.pref_name; 259 *event_name = it->second.pref_name;
260 *permission = it->second.read_permission; 260 *permission = it->second.read_permission;
261 return true; 261 return true;
262 } 262 }
263 return false; 263 return false;
264 } 264 }
265 265
266 PrefTransformerInterface* FindTransformerForBrowserPref( 266 PrefTransformerInterface* FindTransformerForBrowserPref(
267 const std::string& browser_pref) { 267 const std::string& browser_pref) {
268 std::map<std::string, PrefTransformerInterface*>::iterator it = 268 auto it = transformers_.find(browser_pref);
269 transformers_.find(browser_pref);
270 if (it != transformers_.end()) 269 if (it != transformers_.end())
271 return it->second; 270 return it->second.get();
272 else 271 else
273 return identity_transformer_.get(); 272 return identity_transformer_.get();
274 } 273 }
275 274
276 private: 275 private:
277 friend struct base::DefaultSingletonTraits<PrefMapping>; 276 friend struct base::DefaultSingletonTraits<PrefMapping>;
278 277
279 PrefMapping() { 278 PrefMapping() {
280 identity_transformer_.reset(new IdentityPrefTransformer()); 279 identity_transformer_.reset(new IdentityPrefTransformer());
281 for (size_t i = 0; i < arraysize(kPrefMapping); ++i) { 280 for (size_t i = 0; i < arraysize(kPrefMapping); ++i) {
282 mapping_[kPrefMapping[i].extension_pref] = 281 mapping_[kPrefMapping[i].extension_pref] =
283 PrefMapData(kPrefMapping[i].browser_pref, 282 PrefMapData(kPrefMapping[i].browser_pref,
284 kPrefMapping[i].read_permission, 283 kPrefMapping[i].read_permission,
285 kPrefMapping[i].write_permission); 284 kPrefMapping[i].write_permission);
286 std::string event_name = 285 std::string event_name =
287 base::StringPrintf(kOnPrefChangeFormat, 286 base::StringPrintf(kOnPrefChangeFormat,
288 kPrefMapping[i].extension_pref); 287 kPrefMapping[i].extension_pref);
289 event_mapping_[kPrefMapping[i].browser_pref] = 288 event_mapping_[kPrefMapping[i].browser_pref] =
290 PrefMapData(event_name, 289 PrefMapData(event_name,
291 kPrefMapping[i].read_permission, 290 kPrefMapping[i].read_permission,
292 kPrefMapping[i].write_permission); 291 kPrefMapping[i].write_permission);
293 } 292 }
294 DCHECK_EQ(arraysize(kPrefMapping), mapping_.size()); 293 DCHECK_EQ(arraysize(kPrefMapping), mapping_.size());
295 DCHECK_EQ(arraysize(kPrefMapping), event_mapping_.size()); 294 DCHECK_EQ(arraysize(kPrefMapping), event_mapping_.size());
296 RegisterPrefTransformer(proxy_config::prefs::kProxy, 295 RegisterPrefTransformer(proxy_config::prefs::kProxy,
297 new ProxyPrefTransformer()); 296 base::MakeUnique<ProxyPrefTransformer>());
298 RegisterPrefTransformer(prefs::kBlockThirdPartyCookies, 297 RegisterPrefTransformer(prefs::kBlockThirdPartyCookies,
299 new InvertBooleanTransformer()); 298 base::MakeUnique<InvertBooleanTransformer>());
300 RegisterPrefTransformer(prefs::kNetworkPredictionOptions, 299 RegisterPrefTransformer(prefs::kNetworkPredictionOptions,
301 new NetworkPredictionTransformer()); 300 base::MakeUnique<NetworkPredictionTransformer>());
302 } 301 }
303 302
304 ~PrefMapping() { 303 ~PrefMapping() {
305 base::STLDeleteContainerPairSecondPointers(transformers_.begin(),
306 transformers_.end());
307 } 304 }
308 305
309 void RegisterPrefTransformer(const std::string& browser_pref, 306 void RegisterPrefTransformer(
310 PrefTransformerInterface* transformer) { 307 const std::string& browser_pref,
308 std::unique_ptr<PrefTransformerInterface> transformer) {
311 DCHECK_EQ(0u, transformers_.count(browser_pref)) << 309 DCHECK_EQ(0u, transformers_.count(browser_pref)) <<
312 "Trying to register pref transformer for " << browser_pref << " twice"; 310 "Trying to register pref transformer for " << browser_pref << " twice";
313 transformers_[browser_pref] = transformer; 311 transformers_[browser_pref] = std::move(transformer);
314 } 312 }
315 313
316 struct PrefMapData { 314 struct PrefMapData {
317 PrefMapData() 315 PrefMapData()
318 : read_permission(APIPermission::kInvalid), 316 : read_permission(APIPermission::kInvalid),
319 write_permission(APIPermission::kInvalid) {} 317 write_permission(APIPermission::kInvalid) {}
320 318
321 PrefMapData(const std::string& pref_name, 319 PrefMapData(const std::string& pref_name,
322 APIPermission::ID read, 320 APIPermission::ID read,
323 APIPermission::ID write) 321 APIPermission::ID write)
(...skipping 13 matching lines...) Expand all
337 335
338 typedef std::map<std::string, PrefMapData> PrefMap; 336 typedef std::map<std::string, PrefMapData> PrefMap;
339 337
340 // Mapping from extension pref keys to browser pref keys and permissions. 338 // Mapping from extension pref keys to browser pref keys and permissions.
341 PrefMap mapping_; 339 PrefMap mapping_;
342 340
343 // Mapping from browser pref keys to extension event names and permissions. 341 // Mapping from browser pref keys to extension event names and permissions.
344 PrefMap event_mapping_; 342 PrefMap event_mapping_;
345 343
346 // Mapping from browser pref keys to transformers. 344 // Mapping from browser pref keys to transformers.
347 std::map<std::string, PrefTransformerInterface*> transformers_; 345 std::map<std::string, std::unique_ptr<PrefTransformerInterface>>
346 transformers_;
348 347
349 std::unique_ptr<PrefTransformerInterface> identity_transformer_; 348 std::unique_ptr<PrefTransformerInterface> identity_transformer_;
350 349
351 DISALLOW_COPY_AND_ASSIGN(PrefMapping); 350 DISALLOW_COPY_AND_ASSIGN(PrefMapping);
352 }; 351 };
353 352
354 } // namespace 353 } // namespace
355 354
356 PreferenceEventRouter::PreferenceEventRouter(Profile* profile) 355 PreferenceEventRouter::PreferenceEventRouter(Profile* profile)
357 : profile_(profile) { 356 : profile_(profile) {
(...skipping 439 matching lines...) Expand 10 before | Expand all | Expand 10 after
797 pref_key, PreferenceFunction::PERMISSION_TYPE_WRITE, &browser_pref)) { 796 pref_key, PreferenceFunction::PERMISSION_TYPE_WRITE, &browser_pref)) {
798 return false; 797 return false;
799 } 798 }
800 799
801 PreferenceAPI::Get(GetProfile()) 800 PreferenceAPI::Get(GetProfile())
802 ->RemoveExtensionControlledPref(extension_id(), browser_pref, scope); 801 ->RemoveExtensionControlledPref(extension_id(), browser_pref, scope);
803 return true; 802 return true;
804 } 803 }
805 804
806 } // namespace extensions 805 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/messaging/message_service.cc ('k') | extensions/browser/api/vpn_provider/vpn_service.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698