Commit d8f2ab9a authored by achuith@chromium.org's avatar achuith@chromium.org

Minor GDataDB fixes.

* Add AssertIOAllowed to GDataLevelDB.
* Remove entry_set_. Use AddEntry for ownership transfer to parent directory.
Review URL: https://chromiumcodereview.appspot.com/10407013

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@138315 0039d316-1c4b-4281-b951-d872f2087c98
parent e0ad0896
......@@ -61,7 +61,6 @@ class GDataDBTest : public testing::Test {
scoped_ptr<TestingProfile> profile_;
scoped_ptr<GDataDB> gdata_db_;
std::set<GDataEntry*> entry_set_;
};
void GDataDBTest::SetUp() {
......@@ -102,8 +101,8 @@ void GDataDBTest::TestGetFound(const GDataEntry& source) {
void GDataDBTest::InitDB() {
int sequence_id = 1;
GDataRootDirectory root;
GDataDirectory* dir1 = AddDirectory(NULL, &root, sequence_id++);
GDataDirectory* dir2 = AddDirectory(NULL, &root, sequence_id++);
GDataDirectory* dir1 = AddDirectory(&root, &root, sequence_id++);
GDataDirectory* dir2 = AddDirectory(&root, &root, sequence_id++);
GDataDirectory* dir3 = AddDirectory(dir1, &root, sequence_id++);
AddFile(dir1, &root, sequence_id++);
......@@ -115,25 +114,23 @@ void GDataDBTest::InitDB() {
AddFile(dir3, &root, sequence_id++);
AddFile(dir3, &root, sequence_id++);
STLDeleteElements(&entry_set_);
}
GDataDirectory* GDataDBTest::AddDirectory(GDataDirectory* parent,
GDataRootDirectory* root,
int sequence_id) {
GDataDirectory* dir = new GDataDirectory(parent ? parent : root, root);
GDataDirectory* dir = new GDataDirectory(parent, root);
const std::string dir_name = "dir" + base::IntToString(sequence_id);
const std::string resource_id = std::string("dir_resource_id:") +
dir_name;
dir->set_title(dir_name);
dir->set_file_name(dir_name);
dir->set_resource_id(resource_id);
parent->AddEntry(dir);
GDataDB::Status status = gdata_db_->Put(*dir);
EXPECT_EQ(GDataDB::DB_OK, status);
DVLOG(1) << "AddDirectory " << dir->GetFilePath().value()
<< ", " << resource_id;
entry_set_.insert(dir);
return dir;
}
......@@ -145,13 +142,13 @@ GDataFile* GDataDBTest::AddFile(GDataDirectory* parent,
const std::string resource_id = std::string("file_resource_id:") +
title;
file->set_title(title);
file->set_file_name(title);
file->set_resource_id(resource_id);
parent->AddEntry(file);
GDataDB::Status status = gdata_db_->Put(*file);
EXPECT_EQ(GDataDB::DB_OK, status);
DVLOG(1) << "AddFile " << file->GetFilePath().value()
<< ", " << resource_id;
entry_set_.insert(file);
return file;
}
......
......@@ -7,6 +7,7 @@
#include <string>
#include "base/logging.h"
#include "base/threading/thread_restrictions.h"
#include "chrome/browser/chromeos/gdata/gdata_files.h"
#include "leveldb/write_batch.h"
......@@ -52,6 +53,8 @@ GDataLevelDB::~GDataLevelDB() {
}
void GDataLevelDB::Init(const FilePath& db_path) {
base::ThreadRestrictions::AssertIOAllowed();
leveldb::DB* level_db = NULL;
leveldb::Options options;
options.create_if_missing = true;
......@@ -65,6 +68,8 @@ void GDataLevelDB::Init(const FilePath& db_path) {
}
GDataDB::Status GDataLevelDB::Put(const GDataEntry& entry) {
base::ThreadRestrictions::AssertIOAllowed();
// Write the serialized proto.
std::string serialized_proto;
entry.SerializeToString(&serialized_proto);
......@@ -87,6 +92,8 @@ GDataDB::Status GDataLevelDB::Put(const GDataEntry& entry) {
GDataDB::Status GDataLevelDB::DeleteByResourceId(
const std::string& resource_id) {
base::ThreadRestrictions::AssertIOAllowed();
scoped_ptr<GDataEntry> entry;
Status status = GetByResourceId(resource_id, &entry);
if (status == DB_KEY_NOT_FOUND)
......@@ -107,6 +114,8 @@ GDataDB::Status GDataLevelDB::DeleteByResourceId(
GDataDB::Status GDataLevelDB::DeleteByPath(
const FilePath& path) {
base::ThreadRestrictions::AssertIOAllowed();
std::string resource_id;
const Status status = ResourceIdForPath(path, &resource_id);
if (status != DB_OK)
......@@ -116,6 +125,8 @@ GDataDB::Status GDataLevelDB::DeleteByPath(
GDataDB::Status GDataLevelDB::GetByResourceId(const std::string& resource_id,
scoped_ptr<GDataEntry>* entry) {
base::ThreadRestrictions::AssertIOAllowed();
entry->reset();
std::string serialized_proto;
const std::string resource_id_key = ResourceIdToKey(resource_id);
......@@ -136,6 +147,8 @@ GDataDB::Status GDataLevelDB::GetByResourceId(const std::string& resource_id,
GDataDB::Status GDataLevelDB::GetByPath(const FilePath& path,
scoped_ptr<GDataEntry>* entry) {
base::ThreadRestrictions::AssertIOAllowed();
entry->reset();
std::string resource_id;
const Status status = ResourceIdForPath(path, &resource_id);
......@@ -146,6 +159,8 @@ GDataDB::Status GDataLevelDB::GetByPath(const FilePath& path,
GDataDB::Status GDataLevelDB::ResourceIdForPath(const FilePath& path,
std::string* resource_id) {
base::ThreadRestrictions::AssertIOAllowed();
const std::string path_key = PathToKey(path);
const leveldb::Status db_status = level_db_->Get(
leveldb::ReadOptions(), path_key, resource_id);
......@@ -167,6 +182,8 @@ GDataLevelDBIter::GDataLevelDBIter(scoped_ptr<leveldb::Iterator> level_db_iter,
: level_db_iter_(level_db_iter.Pass()),
db_(db),
path_(path) {
base::ThreadRestrictions::AssertIOAllowed();
const std::string path_key = PathToKey(path);
level_db_iter_->Seek(leveldb::Slice(path_key));
}
......@@ -176,6 +193,8 @@ GDataLevelDBIter::~GDataLevelDBIter() {
bool GDataLevelDBIter::GetNext(std::string* path,
scoped_ptr<GDataEntry>* entry) {
base::ThreadRestrictions::AssertIOAllowed();
DCHECK(path);
DCHECK(entry);
path->clear();
......
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