// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "components/user_prefs/user_prefs.h" #include "base/logging.h" #include "base/memory/singleton.h" #include "base/prefs/pref_service.h" namespace user_prefs { namespace { void* UserDataKey() { // We just need a unique constant. Use the address of a static that // COMDAT folding won't touch in an optimizing linker. static int data_key = 0; return reinterpret_cast(&data_key); } } // namespace // static PrefService* UserPrefs::Get(base::SupportsUserData* context) { DCHECK(context); DCHECK(context->GetUserData(UserDataKey())); return static_cast( context->GetUserData(UserDataKey()))->prefs_; } // static void UserPrefs::Set(base::SupportsUserData* context, PrefService* prefs) { DCHECK(context); DCHECK(prefs); DCHECK(!context->GetUserData(UserDataKey())); context->SetUserData(UserDataKey(), new UserPrefs(prefs)); } UserPrefs::UserPrefs(PrefService* prefs) : prefs_(prefs) { } UserPrefs::~UserPrefs() { } } // namespace user_prefs