// Copyright (c) 2010 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.

#ifndef CHROME_BROWSER_PREFERENCES_MAC_H_
#define CHROME_BROWSER_PREFERENCES_MAC_H_
#pragma once

#include <CoreFoundation/CoreFoundation.h>

#include "base/basictypes.h"

// Wraps a small part of the CFPreferences API surface in a very thin layer, to
// allow it to be mocked out for testing.

// See CFPreferences documentation for function documentation, as these call
// through directly to their CFPreferences equivalents (Foo ->
// CFPreferencesFoo).
class MacPreferences {
 public:
  MacPreferences() {}
  virtual ~MacPreferences() {}

  virtual Boolean AppSynchronize(CFStringRef applicationID);

  virtual CFPropertyListRef CopyAppValue(CFStringRef key,
                                         CFStringRef applicationID);

  virtual Boolean AppValueIsForced(CFStringRef key, CFStringRef applicationID);

 private:
  DISALLOW_COPY_AND_ASSIGN(MacPreferences);
};

#endif  // CHROME_BROWSER_PREFERENCES_MAC_H_
