// Copyright (c) 2012 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 <stddef.h>

#include "base/logging.h"
#include "base/macros.h"
#include "base/time/time.h"
#include "crypto/mock_apple_keychain.h"

namespace crypto {

MockAppleKeychain::MockAppleKeychain()
    : find_generic_result_(noErr),
      called_add_generic_(false),
      password_data_count_(0) {}

MockAppleKeychain::~MockAppleKeychain() {}

OSStatus MockAppleKeychain::ItemDelete(AppleSecKeychainItemRef itemRef) const {
  return noErr;
}

}  // namespace crypto
