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/syncable/in_memory_directory_backing_store.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncer { 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace syncable { 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)InMemoryDirectoryBackingStore::InMemoryDirectoryBackingStore( 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const std::string& dir_name) 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : DirectoryBackingStore(dir_name), 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) consistent_cache_guid_requested_(false) { 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DirOpenResult InMemoryDirectoryBackingStore::Load( 17868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) Directory::MetahandlesMap* handles_map, 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) JournalIndex* delete_journals, 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Directory::KernelLoadInfo* kernel_load_info) { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!db_->is_open()) { 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!db_->OpenInMemory()) 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return FAILED_OPEN_DATABASE; 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!InitializeTables()) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return FAILED_OPEN_DATABASE; 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (consistent_cache_guid_requested_) { 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (!db_->Execute("UPDATE share_info " 30c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) "SET cache_guid = 'IrcjZ2jyzHDV9Io4+zKcXQ=='")) { 31c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return FAILED_OPEN_DATABASE; 32c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 34c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!DropDeletedEntries()) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return FAILED_DATABASE_CORRUPT; 37868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!LoadEntries(handles_map)) 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return FAILED_DATABASE_CORRUPT; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!LoadDeleteJournals(delete_journals)) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return FAILED_DATABASE_CORRUPT; 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!LoadInfo(kernel_load_info)) 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return FAILED_DATABASE_CORRUPT; 43868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (!VerifyReferenceIntegrity(handles_map)) 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return FAILED_DATABASE_CORRUPT; 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return OPENED; 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncable 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace syncer 51