• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "sync/syncable/in_memory_directory_backing_store.h"
6 
7 namespace syncer {
8 namespace syncable {
9 
InMemoryDirectoryBackingStore(const std::string & dir_name)10 InMemoryDirectoryBackingStore::InMemoryDirectoryBackingStore(
11     const std::string& dir_name)
12     : DirectoryBackingStore(dir_name),
13       consistent_cache_guid_requested_(false) {
14 }
15 
Load(Directory::MetahandlesMap * handles_map,JournalIndex * delete_journals,Directory::KernelLoadInfo * kernel_load_info)16 DirOpenResult InMemoryDirectoryBackingStore::Load(
17     Directory::MetahandlesMap* handles_map,
18     JournalIndex* delete_journals,
19     Directory::KernelLoadInfo* kernel_load_info) {
20   if (!db_->is_open()) {
21     if (!db_->OpenInMemory())
22       return FAILED_OPEN_DATABASE;
23   }
24 
25   if (!InitializeTables())
26     return FAILED_OPEN_DATABASE;
27 
28   if (consistent_cache_guid_requested_) {
29     if (!db_->Execute("UPDATE share_info "
30                       "SET cache_guid = 'IrcjZ2jyzHDV9Io4+zKcXQ=='")) {
31       return FAILED_OPEN_DATABASE;
32     }
33   }
34 
35   if (!DropDeletedEntries())
36     return FAILED_DATABASE_CORRUPT;
37   if (!LoadEntries(handles_map))
38     return FAILED_DATABASE_CORRUPT;
39   if (!LoadDeleteJournals(delete_journals))
40     return FAILED_DATABASE_CORRUPT;
41   if (!LoadInfo(kernel_load_info))
42     return FAILED_DATABASE_CORRUPT;
43   if (!VerifyReferenceIntegrity(handles_map))
44     return FAILED_DATABASE_CORRUPT;
45 
46   return OPENED;
47 }
48 
49 }  // namespace syncable
50 }  // namespace syncer
51