Commit 04f0fb31 authored by derat@chromium.org's avatar derat@chromium.org

contacts: Add FakeContactDatabase.

This class provides a fake, memory-backed implementation of
ContactDatabaseInterface.

BUG=128805
TEST=none
TBR=ben@chromium.org

Review URL: https://chromiumcodereview.appspot.com/10829117

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@149544 0039d316-1c4b-4281-b951-d872f2087c98
parent eaaa586c
// 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 "chrome/browser/chromeos/contacts/fake_contact_database.h"
#include "chrome/browser/chromeos/contacts/contact.pb.h"
#include "chrome/browser/chromeos/contacts/contact_test_util.h"
#include "content/public/browser/browser_thread.h"
using content::BrowserThread;
namespace contacts {
FakeContactDatabase::FakeContactDatabase()
: init_success_(true),
save_success_(true),
load_success_(true) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
}
void FakeContactDatabase::Init(const FilePath& database_dir,
InitCallback callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
callback.Run(init_success_);
}
void FakeContactDatabase::SetContacts(const ContactPointers& contacts,
const UpdateMetadata& metadata) {
test::CopyContacts(contacts, &contacts_);
metadata_ = metadata;
}
void FakeContactDatabase::DestroyOnUIThread() {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
delete this;
}
void FakeContactDatabase::SaveContacts(scoped_ptr<ContactPointers> contacts,
scoped_ptr<UpdateMetadata> metadata,
bool is_full_update,
SaveCallback callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
if (save_success_) {
test::CopyContacts(*contacts, &contacts_);
metadata_ = *metadata;
}
callback.Run(save_success_);
}
void FakeContactDatabase::LoadContacts(LoadCallback callback) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
scoped_ptr<ScopedVector<Contact> > contacts(new ScopedVector<Contact>());
scoped_ptr<UpdateMetadata> metadata(new UpdateMetadata);
if (load_success_) {
test::CopyContacts(contacts_, contacts.get());
*metadata = metadata_;
}
callback.Run(load_success_, contacts.Pass(), metadata.Pass());
}
FakeContactDatabase::~FakeContactDatabase() {
}
} // namespace contacts
// 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.
#ifndef CHROME_BROWSER_CHROMEOS_CONTACTS_FAKE_CONTACT_DATABASE_H_
#define CHROME_BROWSER_CHROMEOS_CONTACTS_FAKE_CONTACT_DATABASE_H_
#include "chrome/browser/chromeos/contacts/contact_database.h"
#include "chrome/browser/chromeos/contacts/contact.pb.h"
namespace contacts {
// Fake implementation used for testing.
class FakeContactDatabase : public ContactDatabaseInterface {
public:
FakeContactDatabase();
const ScopedVector<Contact>& contacts() const { return contacts_; }
void set_init_success(bool success) { init_success_ = success; }
void set_save_success(bool success) { save_success_ = success; }
void set_load_success(bool success) { load_success_ = success; }
// Copies |contacts| into |contacts_| and |metadata| into |metadata_|. These
// values will be returned by subsequent calls to LoadContacts().
void SetContacts(const ContactPointers& contacts,
const UpdateMetadata& metadata);
// ContactDatabaseInterface implementation.
virtual void DestroyOnUIThread() OVERRIDE;
virtual void Init(const FilePath& database_dir,
InitCallback callback) OVERRIDE;
virtual void SaveContacts(scoped_ptr<ContactPointers> contacts,
scoped_ptr<UpdateMetadata> metadata,
bool is_full_update,
SaveCallback callback) OVERRIDE;
virtual void LoadContacts(LoadCallback callback) OVERRIDE;
protected:
virtual ~FakeContactDatabase();
private:
// Should we report success in response to various requests?
bool init_success_;
bool save_success_;
bool load_success_;
// Currently-stored contacts and metadata.
ScopedVector<Contact> contacts_;
UpdateMetadata metadata_;
DISALLOW_COPY_AND_ASSIGN(FakeContactDatabase);
};
} // namespace contacts
#endif // CHROME_BROWSER_CHROMEOS_CONTACTS_FAKE_CONTACT_DATABASE_H_
...@@ -1083,6 +1083,8 @@ ...@@ -1083,6 +1083,8 @@
'browser/chromeos/contacts/contact_database_unittest.cc', 'browser/chromeos/contacts/contact_database_unittest.cc',
'browser/chromeos/contacts/contact_test_util.cc', 'browser/chromeos/contacts/contact_test_util.cc',
'browser/chromeos/contacts/contact_test_util.h', 'browser/chromeos/contacts/contact_test_util.h',
'browser/chromeos/contacts/fake_contact_database.cc',
'browser/chromeos/contacts/fake_contact_database.h',
'browser/chromeos/cros/cros_network_functions_unittest.cc', 'browser/chromeos/cros/cros_network_functions_unittest.cc',
'browser/chromeos/cros/network_constants.h', 'browser/chromeos/cros/network_constants.h',
'browser/chromeos/cros/network_library.cc', 'browser/chromeos/cros/network_library.cc',
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment