15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved.
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file.
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "sync/test/test_directory_backing_store.h"
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h"
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h"
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncer {
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncable {
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestDirectoryBackingStore::TestDirectoryBackingStore(
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const std::string& dir_name, sql::Connection* db)
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  : DirectoryBackingStore(dir_name, db) {
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)TestDirectoryBackingStore::~TestDirectoryBackingStore() {
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // This variant of the DirectoryBackingStore does not own its connection, so
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // we take care to not delete it here.
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  ignore_result(db_.release());
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DirOpenResult TestDirectoryBackingStore::Load(
25868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    Directory::MetahandlesMap* handles_map,
262a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    JournalIndex* delete_journals,
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    Directory::KernelLoadInfo* kernel_load_info) {
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  DCHECK(db_->is_open());
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!InitializeTables())
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return FAILED_OPEN_DATABASE;
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!DropDeletedEntries())
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return FAILED_DATABASE_CORRUPT;
35868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  if (!LoadEntries(handles_map))
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return FAILED_DATABASE_CORRUPT;
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (!LoadDeleteJournals(delete_journals))
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return FAILED_DATABASE_CORRUPT;
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (!LoadInfo(kernel_load_info))
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return FAILED_DATABASE_CORRUPT;
41868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  if (!VerifyReferenceIntegrity(handles_map))
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return FAILED_DATABASE_CORRUPT;
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return OPENED;
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace syncable
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace syncer
49