1ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file. 4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest.h" 6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <string> 8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 9c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "app/sql/connection.h" 10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "app/sql/statement.h" 11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/file_path.h" 12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/file_util.h" 13ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_ptr.h" 14ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/scoped_temp_dir.h" 15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "base/stl_util-inl.h" 163345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#include "base/string_number_conversions.h" 17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/protocol/bookmark_specifics.pb.h" 18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/protocol/sync.pb.h" 19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/syncable/directory_backing_store.h" 20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/syncable/directory_manager.h" 21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/syncable/syncable-inl.h" 22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/sync/syncable/syncable.h" 23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "testing/gtest/include/gtest/gtest-param-test.h" 24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace syncable { 26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochextern const int32 kCurrentDBVersion; 28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass MigrationTest : public testing::TestWithParam<int> { 30c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public: 31c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch virtual void SetUp() { 32c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(temp_dir_.CreateUniqueTempDir()); 33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch protected: 36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string GetUsername() { 37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return "nick@chromium.org"; 38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FilePath GetDatabasePath() { 41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch return temp_dir_.path().Append( 42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DirectoryManager::GetSyncDataDatabaseFilename()); 43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetUpVersion67Database(); 45c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetUpVersion68Database(); 46c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetUpVersion69Database(); 47c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetUpVersion70Database(); 48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetUpVersion71Database(); 49731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick void SetUpVersion72Database(); 5021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen void SetUpVersion73Database(); 5172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen void SetUpVersion74Database(); 52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch void SetUpCurrentDatabaseAndCheckVersion() { 54c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion70Database(); // Prepopulates data. 55c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 56c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->BeginLoad(); 59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(OPENED, dbs->InitializeTables()); 60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(dbs->needs_column_refresh_); 61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->EndLoad(); 63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch private: 66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ScopedTempDir temp_dir_; 67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}; 68c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 69c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochclass DirectoryBackingStoreTest : public MigrationTest {}; 70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid MigrationTest::SetUpVersion67Database() { 72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This is a version 67 database dump whose contents were backformed from 73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // the contents of the version 68 database dump (the v68 migration was 74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // actually written first). 75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.BeginTransaction()); 78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Execute( 79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 80c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 81c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 82c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "base_version bigint default -1,server_version bigint default 0," 83c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "mtime bigint default 0,server_mtime bigint default 0," 84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "ctime bigint default 0,server_ctime bigint default 0," 85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_position_in_parent bigint default 0," 86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "local_external_id bigint default 0,id varchar(255) default 'r'," 87c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "parent_id varchar(255) default 'r'," 88c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_parent_id varchar(255) default 'r'," 89c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 90c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_unsynced bit default 0,is_unapplied_update bit default 0," 91c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_del bit default 0,is_dir bit default 0," 92c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_bookmark_object bit default 0,server_is_dir bit default 0," 93c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_is_del bit default 0,server_is_bookmark_object bit default 0," 94c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "name varchar(255), " /* COLLATE PATHNAME, */ 95c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "unsanitized_name varchar(255)," /* COLLATE PATHNAME, */ 96c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "non_unique_name varchar," 97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_name varchar(255)," /* COLLATE PATHNAME */ 98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_non_unique_name varchar," 99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "bookmark_url varchar,server_bookmark_url varchar," 100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "singleton_tag varchar,bookmark_favicon blob," 101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_bookmark_favicon blob);" 102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(1,-1,0,129079956640320000,0," 103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079956640320000,0,0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL);" 105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(2,669,669,128976886618480000," 106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976886618480000,128976886618480000,128976886618480000,-2097152," 107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1," 108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Deleted Item',NULL,'Deleted Item','Deleted Item','Deleted Item'," 109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/','http://www.google.com/2',NULL,'AASGASGA'," 110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ASADGADGADG');" 111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(4,681,681,129002163642690000," 112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129002163642690000,129002163642690000,129002163642690000,-3145728," 113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1," 114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Welcome to Chromium',NULL,'Welcome to Chromium'," 115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Welcome to Chromium','Welcome to Chromium'," 116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/chrome/intl/en/welcome.html'," 117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL);" 119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(5,677,677,129001555500000000," 120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129001555500000000,129001555500000000,129001555500000000,1048576," 121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "7,'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1," 122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google',NULL,'Google','Google','Google','http://www.google.com/'," 123c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 124c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(6,694,694,129053976170000000," 125c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129053976170000000,129053976170000000,129053976170000000,-4194304," 126c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 127c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The Internet',NULL,'The Internet','The Internet'," 128c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The Internet',NULL,NULL,NULL,NULL,NULL);" 129c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(7,663,663,128976864758480000," 130c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000," 131c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 132c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google Chrome',NULL,'Google Chrome','Google Chrome'," 133c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL);" 134c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(8,664,664,128976864758480000," 135c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576," 136c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 137c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,'Bookmarks','Bookmarks','Bookmarks',NULL,NULL," 138c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'google_chrome_bookmarks',NULL,NULL);" 139c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(9,665,665,128976864758480000," 140c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000," 141c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 142c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1,'Bookmark Bar',NULL,'Bookmark Bar','Bookmark Bar','Bookmark Bar'," 143c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,'bookmark_bar',NULL,NULL);" 144c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(10,666,666,128976864758480000," 145c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,2097152," 146c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 147c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Other Bookmarks',NULL,'Other Bookmarks','Other Bookmarks'," 148c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Other Bookmarks',NULL,NULL,'other_bookmarks'," 149c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL);" 150c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(11,683,683,129079956948440000," 151c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079956948440000,129079956948440000,129079956948440000,-1048576," 152c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 153c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Home (The Chromium Projects)',NULL,'Home (The Chromium Projects)'," 154c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 155c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 156c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'AGATWA','AFAGVASF');" 157c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(12,685,685,129079957513650000," 158c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957513650000,129079957513650000,129079957513650000,0,9," 159c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1," 160c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Extra Bookmarks',NULL,'Extra Bookmarks','Extra Bookmarks'," 161c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 162c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(13,687,687,129079957985300000," 163c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957985300000,129079957985300000,129079957985300000,-917504," 164c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0," 165c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 166c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN Internet Corporation for Assigned Names and Numbers'," 167c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN | Internet Corporation for Assigned Names and Numbers'," 168c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN | Internet Corporation for Assigned Names and Numbers'," 169c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN | Internet Corporation for Assigned Names and Numbers'," 170c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.icann.com/','http://www.icann.com/',NULL," 171c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'PNGAXF0AAFF','DAAFASF');" 172c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(14,692,692,129079958383000000," 173c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079958383000000,129079958383000000,129079958383000000,1048576," 174c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 175c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The WebKit Open Source Project',NULL," 176c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The WebKit Open Source Project','The WebKit Open Source Project'," 177c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The WebKit Open Source Project','http://webkit.org/'," 178c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://webkit.org/x',NULL,'PNGX','PNG2Y');" 179c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE share_info (id VARCHAR(128) primary key, " 180c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "last_sync_timestamp INT, name VARCHAR(128), " 181c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 182c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "db_create_version VARCHAR(128), db_create_time int, " 183c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "next_id bigint default -2, cache_guid VARCHAR(32));" 184c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO share_info VALUES('nick@chromium.org',694," 185c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 186c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Unknown',1263522064,-65542," 187c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'9010788312004066376x-6609234393368420856x');" 188c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 189c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 190c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.CommitTransaction()); 191c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 192c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 193c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid MigrationTest::SetUpVersion68Database() { 194c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // This sets up an actual version 68 database dump. The IDs were 195c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // canonicalized to be less huge, and the favicons were overwritten 196c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // with random junk so that they didn't contain any unprintable 197c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // characters. A few server URLs were tweaked so that they'd be 198c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // different from the local URLs. Lastly, the custom collation on 199c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // the server_non_unique_name column was removed. 200c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 201c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 202c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.BeginTransaction()); 203c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Execute( 204c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 205c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 206c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 207c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "base_version bigint default -1,server_version bigint default 0," 208c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "mtime bigint default 0,server_mtime bigint default 0," 209c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "ctime bigint default 0,server_ctime bigint default 0," 210c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_position_in_parent bigint default 0," 211c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "local_external_id bigint default 0,id varchar(255) default 'r'," 212c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "parent_id varchar(255) default 'r'," 213c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_parent_id varchar(255) default 'r'," 214c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 215c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_unsynced bit default 0,is_unapplied_update bit default 0," 216c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_del bit default 0,is_dir bit default 0," 217c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_bookmark_object bit default 0,server_is_dir bit default 0," 218c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_is_del bit default 0," 219c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_is_bookmark_object bit default 0," 220c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "non_unique_name varchar,server_non_unique_name varchar(255)," 221c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "bookmark_url varchar,server_bookmark_url varchar," 222c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "singleton_tag varchar,bookmark_favicon blob," 223c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_bookmark_favicon blob);" 224c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(1,-1,0,129079956640320000,0," 225c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079956640320000,0,0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL," 226c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,NULL,NULL,NULL,NULL);" 227c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(2,669,669,128976886618480000," 228c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976886618480000,128976886618480000,128976886618480000,-2097152," 229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1," 230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Deleted Item','Deleted Item','http://www.google.com/'," 231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG');" 232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(4,681,681,129002163642690000," 233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129002163642690000,129002163642690000,129002163642690000,-3145728," 234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1," 235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Welcome to Chromium','Welcome to Chromium'," 236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/chrome/intl/en/welcome.html'," 237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL," 238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL);" 239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(5,677,677,129001555500000000," 240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129001555500000000,129001555500000000,129001555500000000,1048576," 241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "7,'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1," 242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google','Google','http://www.google.com/'," 243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG');" 244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(6,694,694,129053976170000000," 245c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129053976170000000,129053976170000000,129053976170000000,-4194304," 246c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1," 247c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The Internet','The Internet',NULL,NULL,NULL,NULL,NULL);" 248c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(7,663,663,128976864758480000," 249c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000," 250c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1048576,0,'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1," 251c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google Chrome','Google Chrome',NULL,NULL,'google_chrome',NULL," 252c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL);" 253c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(8,664,664,128976864758480000," 254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576," 255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "0,'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL);" 257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(9,665,665,128976864758480000," 258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000," 259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1048576,1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0," 260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1,'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL," 261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL);" 262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(10,666,666,128976864758480000," 263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,2097152," 264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL);" 267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(11,683,683,129079956948440000," 268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079956948440000,129079956948440000,129079956948440000,-1048576," 269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'AGATWA','AFAGVASF');" 273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(12,685,685,129079957513650000," 274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957513650000,129079957513650000,129079957513650000,0,9," 275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1," 276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL);" 277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(13,687,687,129079957985300000," 278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957985300000,129079957985300000,129079957985300000,-917504," 279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0," 280c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 281c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN | Internet Corporation for Assigned Names and Numbers'," 282c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.icann.com/','http://www.icann.com/',NULL," 283c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'PNGAXF0AAFF','DAAFASF');" 284c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(14,692,692,129079958383000000," 285c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079958383000000,129079958383000000,129079958383000000,1048576," 286c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 287c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The WebKit Open Source Project','The WebKit Open Source Project'," 288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y');" 289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE share_info (id VARCHAR(128) primary key, " 290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "last_sync_timestamp INT, name VARCHAR(128), " 291c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 292c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "db_create_version VARCHAR(128), db_create_time int, " 293c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "next_id bigint default -2, cache_guid VARCHAR(32));" 294c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO share_info VALUES('nick@chromium.org',694," 295c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 296c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Unknown',1263522064,-65542," 297c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'9010788312004066376x-6609234393368420856x');" 298c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 299c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO share_version VALUES('nick@chromium.org',68);")); 300c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.CommitTransaction()); 301c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 302c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 303c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid MigrationTest::SetUpVersion69Database() { 304c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 305c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 306c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.BeginTransaction()); 307c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Execute( 308c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 309c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 310c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE metas (metahandle bigint primary key ON CONFLICT FAIL," 311c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "base_version bigint default -1,server_version bigint default 0," 312c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "mtime bigint default 0,server_mtime bigint default 0," 313c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "ctime bigint default 0,server_ctime bigint default 0," 314c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_position_in_parent bigint default 0," 315c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "local_external_id bigint default 0,id varchar(255) default 'r'," 316c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "parent_id varchar(255) default 'r'," 317c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_parent_id varchar(255) default 'r'," 318c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 319c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_unsynced bit default 0,is_unapplied_update bit default 0," 320c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_del bit default 0,is_dir bit default 0," 321c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_bookmark_object bit default 0,server_is_dir bit default 0," 322c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_is_del bit default 0," 323c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_is_bookmark_object bit default 0," 324c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "non_unique_name varchar,server_non_unique_name varchar(255)," 325c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "bookmark_url varchar,server_bookmark_url varchar," 326c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "singleton_tag varchar,bookmark_favicon blob," 327c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_bookmark_favicon blob, specifics blob, " 328c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_specifics blob);" 329c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(1,-1,0,129079956640320000,0,129079956640320000," 330c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "0,0,0,'r','r','r','r','r',0,0,0,1,0,0,0,0,NULL,NULL,NULL,NULL,NULL," 331c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,X'',X'');" 332c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(2,669,669,128976886618480000," 333c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976886618480000,128976886618480000,128976886618480000,-2097152," 334c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,1,0,1,1," 335c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Deleted Item','Deleted Item','http://www.google.com/'," 336c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/2',NULL,'AASGASGA','ASADGADGADG'," 337c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841415" 338c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "34741534741',X'C28810260A17687474703A2F2F7777772E676F6F676C652E636F" 339c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "6D2F32120B4153414447414447414447');" 340c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(4,681,681,129002163642690000," 341c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129002163642690000,129002163642690000,129002163642690000,-3145728," 342c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,1,0,1,1," 343c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Welcome to Chromium','Welcome to Chromium'," 344c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/chrome/intl/en/welcome.html'," 345c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/chrome/intl/en/welcome.html',NULL,NULL,NULL," 346c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C28810350A31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6" 347c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "D652F696E746C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A3168" 348c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "7474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F6" 349c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "56E2F77656C636F6D652E68746D6C1200');" 350c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(5,677,677,129001555500000000," 351c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129001555500000000,129001555500000000,129001555500000000,1048576,7," 352c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,1,0,1,1," 353c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google','Google','http://www.google.com/'," 354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.google.com/',NULL,'AGASGASG','AGFDGASG',X'C28810220A166" 355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "87474703A2F2F7777772E676F6F676C652E636F6D2F12084147415347415347',X'" 356c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F12084147464" 357c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "447415347');" 358c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(6,694,694,129053976170000000," 359c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129053976170000000,129053976170000000,129053976170000000,-4194304,6" 360c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ",'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,1,0,1,'The Internet'," 361c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The Internet',NULL,NULL,NULL,NULL,NULL,X'C2881000',X'C2881000');" 362c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(7,663,663,128976864758480000," 363c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576,0," 364c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_7','r','r','r','r',0,0,0,1,1,1,0,1,'Google Chrome'," 365c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google Chrome',NULL,NULL,'google_chrome',NULL,NULL,NULL,NULL);" 366c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(8,664,664,128976864758480000," 367c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576,0," 368c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,1,0,1,'Bookmarks'," 369c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Bookmarks',NULL,NULL,'google_chrome_bookmarks',NULL,NULL," 370c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C2881000',X'C2881000');" 371c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(9,665,665,128976864758480000," 372c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576,1," 373c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,1,0,1," 374c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Bookmark Bar','Bookmark Bar',NULL,NULL,'bookmark_bar',NULL,NULL," 375c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C2881000',X'C2881000');" 376c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(10,666,666,128976864758480000," 377c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,2097152,2," 378c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,1,0,1," 379c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Other Bookmarks','Other Bookmarks',NULL,NULL,'other_bookmarks'," 380c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,X'C2881000',X'C2881000');" 381c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(11,683,683,129079956948440000," 382c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079956948440000,129079956948440000,129079956948440000,-1048576," 383c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,1,0,0,1," 384c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 385c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://dev.chromium.org/','http://dev.chromium.org/other',NULL," 386c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'AGATWA','AFAGVASF',X'C28810220A18687474703A2F2F6465762E6368726F6D6" 387c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "9756D2E6F72672F1206414741545741',X'C28810290A1D687474703A2F2F646576" 388c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "2E6368726F6D69756D2E6F72672F6F7468657212084146414756415346');" 389c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(12,685,685,129079957513650000," 390c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957513650000,129079957513650000,129079957513650000,0,9," 391c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,1,0,1," 392c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,NULL,NULL,NULL," 393c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C2881000',X'C2881000');" 394c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(13,687,687,129079957985300000," 395c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957985300000,129079957985300000,129079957985300000,-917504," 396c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,1,0,0," 397c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1,'ICANN | Internet Corporation for Assigned Names and Numbers'," 398c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN | Internet Corporation for Assigned Names and Numbers'," 399c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://www.icann.com/','http://www.icann.com/',NULL,'PNGAXF0AAFF'," 400c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'DAAFASF',X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F1" 401c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "20B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963" 402c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "616E6E2E636F6D2F120744414146415346');" 403c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(14,692,692,129079958383000000," 404c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079958383000000,129079958383000000,129079958383000000,1048576,11," 405c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,1,0,0,1," 406c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The WebKit Open Source Project','The WebKit Open Source Project'," 407c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'http://webkit.org/','http://webkit.org/x',NULL,'PNGX','PNG2Y'," 408c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C288101A0A12687474703A2F2F7765626B69742E6F72672F1204504E4758',X'C2" 409c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "88101C0A13687474703A2F2F7765626B69742E6F72672F781205504E473259');" 410c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE share_info (id VARCHAR(128) primary key, " 411c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "last_sync_timestamp INT, name VARCHAR(128), " 412c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 413c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "db_create_version VARCHAR(128), db_create_time int, " 414c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "next_id bigint default -2, cache_guid VARCHAR(32));" 415c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO share_info VALUES('nick@chromium.org',694," 416c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 417c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Unknown',1263522064,-65542," 418c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'9010788312004066376x-6609234393368420856x');" 419c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 420c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO share_version VALUES('nick@chromium.org',69);" 421c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch )); 422c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.CommitTransaction()); 423c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 424c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 425c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid MigrationTest::SetUpVersion70Database() { 426c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 427c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 428c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.BeginTransaction()); 429c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Execute( 430c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 431c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 432c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE share_info (id VARCHAR(128) primary key, " 433c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "last_sync_timestamp INT, name VARCHAR(128), " 434c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "initial_sync_ended BIT default 0, store_birthday VARCHAR(256), " 435c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "db_create_version VARCHAR(128), db_create_time int, " 436c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "next_id bigint default -2, cache_guid VARCHAR(32));" 437c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO share_info VALUES('nick@chromium.org',694," 438c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'nick@chromium.org',1,'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb'," 439c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Unknown',1263522064,-65542," 440c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'9010788312004066376x-6609234393368420856x');" 441c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 442c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO share_version VALUES('nick@chromium.org',70);" 443c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 444c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "base_version bigint default -1,server_version bigint default 0," 445c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "mtime bigint default 0,server_mtime bigint default 0," 446c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "ctime bigint default 0,server_ctime bigint default 0," 447c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_position_in_parent bigint default 0," 448c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "local_external_id bigint default 0,id varchar(255) default 'r'," 449c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "parent_id varchar(255) default 'r'," 450c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_parent_id varchar(255) default 'r'," 451c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "prev_id varchar(255) default 'r',next_id varchar(255) default 'r'," 452c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_unsynced bit default 0,is_unapplied_update bit default 0," 453c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_del bit default 0,is_dir bit default 0," 454c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_is_dir bit default 0,server_is_del bit default 0," 455c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "non_unique_name varchar,server_non_unique_name varchar(255)," 456c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "unique_server_tag varchar,unique_client_tag varchar," 457c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "specifics blob,server_specifics blob);" 458c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(1,-1,0,129079956640320000,0,129079956640320000," 459c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "0,0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'');" 460c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(2,669,669,128976886618480000," 461c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976886618480000,128976886618480000,128976886618480000," 462c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "-2097152,4,'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0," 463c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1,'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A" 464c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "2F2F7777772E676F6F676C652E636F6D2F12084141534741534741',X'C2881026" 465c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "0A17687474703A2F2F7777772E676F6F676C652E636F6D2F32120B415341444741" 466c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "4447414447');" 467c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(4,681,681,129002163642690000," 468c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129002163642690000,129002163642690000,129002163642690000,-3145728," 469c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "3,'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 470c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A" 471c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "31687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E74" 472c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "6C2F656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F" 473c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F7765" 474c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "6C636F6D652E68746D6C1200');" 475c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(5,677,677,129001555500000000," 476c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129001555500000000,129001555500000000,129001555500000000,1048576,7," 477c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 478c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C6" 479c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "52E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F77777" 480c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "72E676F6F676C652E636F6D2F12084147464447415347');" 481c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(6,694,694,129053976170000000," 482c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129053976170000000,129053976170000000,129053976170000000,-4194304," 483c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "6,'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 484c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 485c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(7,663,663,128976864758480000," 486c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576,0," 487c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome'," 488c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google Chrome','google_chrome',NULL,NULL,NULL);" 489c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(8,664,664,128976864758480000," 490c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576,0," 491c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 492c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000'," 493c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C2881000');" 494c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(9,665,665,128976864758480000," 495c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576," 496c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "1,'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0," 497c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Bookmark Bar','Bookmark Bar','bookmark_bar',NULL,X'C2881000'," 498c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C2881000');" 499c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(10,666,666,128976864758480000," 500c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000," 501c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "2097152,2,'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 502c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 503c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C2881000',X'C2881000');" 504c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(11,683,683,129079956948440000," 505c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079956948440000,129079956948440000,129079956948440000,-1048576," 506c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "8,'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 507c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Home (The Chromium Projects)','Home (The Chromium Projects)'," 508c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F" 509c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "72672F1206414741545741',X'C28810290A1D687474703A2F2F6465762E636872" 510c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "6F6D69756D2E6F72672F6F7468657212084146414756415346');" 511c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(12,685,685,129079957513650000," 512c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957513650000,129079957513650000,129079957513650000,0,9," 513c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 514c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 515c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C2881000');" 516c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(13,687,687,129079957985300000," 517c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957985300000,129079957985300000,129079957985300000,-917504," 518c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "10,'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 519c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN | Internet Corporation for Assigned Names and Numbers'," 520c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN | Internet Corporation for Assigned Names and Numbers'," 521c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F" 522c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "120B504E474158463041414646',X'C28810200A15687474703A2F2F7777772E69" 523c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "63616E6E2E636F6D2F120744414146415346');" 524c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO metas VALUES(14,692,692,129079958383000000," 525c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079958383000000,129079958383000000,129079958383000000,1048576," 526c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "11,'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 527c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The WebKit Open Source Project','The WebKit Open Source Project'," 528c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 529c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F78120550" 530c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "4E473259');" 531c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch )); 532c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.CommitTransaction()); 533c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 534c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 535c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochvoid MigrationTest::SetUpVersion71Database() { 536c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 537c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 538c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.BeginTransaction()); 539c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Execute( 540c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE extended_attributes(metahandle bigint, key varchar(127), " 541c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "value blob, PRIMARY KEY(metahandle, key) ON CONFLICT REPLACE);" 542c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 543c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'share_version' VALUES('nick@chromium.org',71);" 544c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 545c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "base_version bigint default -1,server_version bigint default 0," 546c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 547c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "default 0,server_ctime bigint default 0,server_position_in_parent " 548c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "bigint default 0,local_external_id bigint default 0,id varchar(255) " 549c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "default 'r',parent_id varchar(255) default 'r',server_parent_id " 550c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 551c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "varchar(255) default 'r',is_unsynced bit default 0," 552c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 553c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "default 0,server_is_dir bit default 0,server_is_del bit default 0," 554c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "non_unique_name varchar,server_non_unique_name varchar(255)," 555c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 556c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_specifics blob);" 557c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(1,-1,0,129079956640320000,0," 558c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079956640320000,0,0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 559c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,X'',X'');" 560c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(2,669,669,128976886618480000," 561c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976886618480000,128976886618480000,128976886618480000,-2097152,4," 562c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 563c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 564c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 565c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 566c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "47');" 567c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(4,681,681,129002163642690000," 568c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129002163642690000,129002163642690000,129002163642690000,-3145728,3," 569c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 570c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 571c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 572c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 573c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 574c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "652E68746D6C1200');" 575c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(5,677,677,129001555500000000," 576c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129001555500000000,129001555500000000,129001555500000000,1048576,7," 577c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 578c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 579c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 580c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "76F6F676C652E636F6D2F12084147464447415347');" 581c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(6,694,694,129053976170000000," 582c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129053976170000000,129053976170000000,129053976170000000,-4194304,6," 583c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 584c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 585c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(7,663,663,128976864758480000," 586c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576,0," 587c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 588c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ",'google_chrome',NULL,NULL,NULL);" 589c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(8,664,664,128976864758480000," 590c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576,0," 591c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 592c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 593c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(9,665,665,128976864758480000," 594c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,1048576,1," 595c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 596c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 597c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(10,666,666,128976864758480000," 598c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "128976864758480000,128976864758480000,128976864758480000,2097152,2," 599c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 600c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 601c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C2881000',X'C2881000');" 602c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(11,683,683,129079956948440000," 603c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079956948440000,129079956948440000,129079956948440000,-1048576,8," 604c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 605c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 606c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 607c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 608c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "D2E6F72672F6F7468657212084146414756415346');" 609c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(12,685,685,129079957513650000," 610c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957513650000,129079957513650000,129079957513650000,0,9," 611c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 612c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 613c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "X'C2881000');" 614c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(13,687,687,129079957985300000," 615c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079957985300000,129079957985300000,129079957985300000,-917504,10," 616c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 617c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN | Internet Corporation for Assigned Names and Numbers'," 618c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 619c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 620c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 621c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "E636F6D2F120744414146415346');" 622c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'metas' VALUES(14,692,692,129079958383000000," 623c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "129079958383000000,129079958383000000,129079958383000000,1048576,11," 624c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 625c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'The WebKit Open Source Project','The WebKit Open Source Project'," 626c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 627c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 628c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "473259');" 629c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE models (model_id BLOB primary key, " 630c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 631c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 632c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 633c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 634c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "next_id INT default -2, cache_guid TEXT);" 635c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 636c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 637c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "'9010788312004066376x-6609234393368420856x');")); 638c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.CommitTransaction()); 639c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 640731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 641731df977c0511bca2206b5f333555b1205ff1f43Iain Merrickvoid MigrationTest::SetUpVersion72Database() { 642731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick sql::Connection connection; 643731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_TRUE(connection.Open(GetDatabasePath())); 644731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_TRUE(connection.BeginTransaction()); 645731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_TRUE(connection.Execute( 646731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 64721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'share_version' VALUES('nick@chromium.org',72);" 648731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 649731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "base_version bigint default -1,server_version bigint default 0," 650731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 651731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "default 0,server_ctime bigint default 0,server_position_in_parent " 652731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "bigint default 0,local_external_id bigint default 0,id varchar(255) " 653731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "default 'r',parent_id varchar(255) default 'r',server_parent_id " 654731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 655731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "varchar(255) default 'r',is_unsynced bit default 0," 656731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 657731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "default 0,server_is_dir bit default 0,server_is_del bit default 0," 658731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "non_unique_name varchar,server_non_unique_name varchar(255)," 659731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 660731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "server_specifics blob);" 661731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(1,-1,0,129079956640320000,0," 662731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "129079956640320000,0,0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 663731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "NULL,NULL,X'',X'');" 664731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(2,669,669,128976886618480000," 665731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "128976886618480000,128976886618480000,128976886618480000,-2097152,4," 666731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 667731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 668731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 669731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 670731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "47');" 671731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(4,681,681,129002163642690000," 672731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "129002163642690000,129002163642690000,129002163642690000,-3145728,3," 673731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 674731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 675731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 676731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 677731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 678731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "652E68746D6C1200');" 679731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(5,677,677,129001555500000000," 680731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "129001555500000000,129001555500000000,129001555500000000,1048576,7," 681731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 682731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 683731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 684731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "76F6F676C652E636F6D2F12084147464447415347');" 685731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(6,694,694,129053976170000000," 686731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "129053976170000000,129053976170000000,129053976170000000,-4194304,6," 687731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 688731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 689731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(7,663,663,128976864758480000," 690731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "128976864758480000,128976864758480000,128976864758480000,1048576,0," 691731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 692731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ",'google_chrome',NULL,NULL,NULL);" 693731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(8,664,664,128976864758480000," 694731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "128976864758480000,128976864758480000,128976864758480000,1048576,0," 695731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 696731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 697731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(9,665,665,128976864758480000," 698731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "128976864758480000,128976864758480000,128976864758480000,1048576,1," 699731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 700731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 701731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(10,666,666,128976864758480000," 702731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "128976864758480000,128976864758480000,128976864758480000,2097152,2," 703731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 704731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 705731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "X'C2881000',X'C2881000');" 706731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(11,683,683,129079956948440000," 707731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "129079956948440000,129079956948440000,129079956948440000,-1048576,8," 708731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 709731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 710731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 711731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 712731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "D2E6F72672F6F7468657212084146414756415346');" 713731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(12,685,685,129079957513650000," 714731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "129079957513650000,129079957513650000,129079957513650000,0,9," 715731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 716731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 717731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "X'C2881000');" 718731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(13,687,687,129079957985300000," 719731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "129079957985300000,129079957985300000,129079957985300000,-917504,10," 720731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 721731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'ICANN | Internet Corporation for Assigned Names and Numbers'," 722731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 723731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 724731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 725731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "E636F6D2F120744414146415346');" 726731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'metas' VALUES(14,692,692,129079958383000000," 727731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "129079958383000000,129079958383000000,129079958383000000,1048576,11," 728731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 729731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'The WebKit Open Source Project','The WebKit Open Source Project'," 730731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 731731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 732731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "473259');" 733731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "CREATE TABLE models (model_id BLOB primary key, " 734731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 735731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 736731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 737731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 738731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "next_id INT default -2, cache_guid TEXT);" 739731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 740731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 741731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "'9010788312004066376x-6609234393368420856x');")); 742731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_TRUE(connection.CommitTransaction()); 743731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 744731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 74521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsenvoid MigrationTest::SetUpVersion73Database() { 74621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen sql::Connection connection; 74721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE(connection.Open(GetDatabasePath())); 74821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE(connection.BeginTransaction()); 74921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE(connection.Execute( 75021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 75121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'share_version' VALUES('nick@chromium.org',73);" 75221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "CREATE TABLE metas(metahandle bigint primary key ON CONFLICT FAIL," 75321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "base_version bigint default -1,server_version bigint default 0," 75421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "mtime bigint default 0,server_mtime bigint default 0,ctime bigint " 75521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "default 0,server_ctime bigint default 0,server_position_in_parent " 75621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "bigint default 0,local_external_id bigint default 0,id varchar(255) " 75721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "default 'r',parent_id varchar(255) default 'r',server_parent_id " 75821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "varchar(255) default 'r',prev_id varchar(255) default 'r',next_id " 75921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "varchar(255) default 'r',is_unsynced bit default 0," 76021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "is_unapplied_update bit default 0,is_del bit default 0,is_dir bit " 76121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "default 0,server_is_dir bit default 0,server_is_del bit default 0," 76221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "non_unique_name varchar,server_non_unique_name varchar(255)," 76321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "unique_server_tag varchar,unique_client_tag varchar,specifics blob," 76421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "server_specifics blob);" 76521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(1,-1,0,129079956640320000,0," 76621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "129079956640320000,0,0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL," 76721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "NULL,NULL,X'',X'');" 76821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(2,669,669,128976886618480000," 76921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "128976886618480000,128976886618480000,128976886618480000,-2097152,4," 77021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_2','s_ID_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1," 77121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'Deleted Item','Deleted Item',NULL,NULL,X'C28810220A16687474703A2F2F" 77221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "7777772E676F6F676C652E636F6D2F12084141534741534741',X'C28810260A1768" 77321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "7474703A2F2F7777772E676F6F676C652E636F6D2F32120B41534144474144474144" 77421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "47');" 77521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(4,681,681,129002163642690000," 77621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "129002163642690000,129002163642690000,129002163642690000,-3145728,3," 77721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_4','s_ID_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1," 77821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'Welcome to Chromium','Welcome to Chromium',NULL,NULL,X'C28810350A31" 77921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "687474703A2F2F7777772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F" 78021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "656E2F77656C636F6D652E68746D6C1200',X'C28810350A31687474703A2F2F7777" 78121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "772E676F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D" 78221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "652E68746D6C1200');" 78321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(5,677,677,129001555500000000," 78421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "129001555500000000,129001555500000000,129001555500000000,1048576,7," 78521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_5','s_ID_9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google'," 78621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'Google',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652" 78721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "E636F6D2F12084147415347415347',X'C28810220A16687474703A2F2F7777772E6" 78821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "76F6F676C652E636F6D2F12084147464447415347');" 78921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(6,694,694,129053976170000000," 79021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "129053976170000000,129053976170000000,129053976170000000,-4194304,6," 79121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_6','s_ID_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet'," 79221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'The Internet',NULL,NULL,X'C2881000',X'C2881000');" 79321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(7,663,663,128976864758480000," 79421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "128976864758480000,128976864758480000,128976864758480000,1048576,0," 79521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_7','r','r','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome'" 79621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ",'google_chrome',NULL,NULL,NULL);" 79721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(8,664,664,128976864758480000," 79821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "128976864758480000,128976864758480000,128976864758480000,1048576,0," 79921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_8','s_ID_7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks'," 80021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'Bookmarks','google_chrome_bookmarks',NULL,X'C2881000',X'C2881000');" 80121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(9,665,665,128976864758480000," 80221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "128976864758480000,128976864758480000,128976864758480000,1048576,1," 80321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_9','s_ID_8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar'," 80421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'Bookmark Bar','bookmark_bar',NULL,X'C2881000',X'C2881000');" 80521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(10,666,666,128976864758480000," 80621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "128976864758480000,128976864758480000,128976864758480000,2097152,2," 80721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_10','s_ID_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0," 80821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'Other Bookmarks','Other Bookmarks','other_bookmarks',NULL," 80921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "X'C2881000',X'C2881000');" 81021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(11,683,683,129079956948440000," 81121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "129079956948440000,129079956948440000,129079956948440000,-1048576,8," 81221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_11','s_ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0," 81321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'Home (The Chromium Projects)','Home (The Chromium Projects)',NULL," 81421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "NULL,X'C28810220A18687474703A2F2F6465762E6368726F6D69756D2E6F72672F1" 81521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "206414741545741',X'C28810290A1D687474703A2F2F6465762E6368726F6D69756" 81621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "D2E6F72672F6F7468657212084146414756415346');" 81721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(12,685,685,129079957513650000," 81821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "129079957513650000,129079957513650000,129079957513650000,0,9," 81921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_12','s_ID_6','s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0," 82021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'Extra Bookmarks','Extra Bookmarks',NULL,NULL,X'C2881000'," 82121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "X'C2881000');" 82221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(13,687,687,129079957985300000," 82321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "129079957985300000,129079957985300000,129079957985300000,-917504,10," 82421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_13','s_ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0," 82521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'ICANN | Internet Corporation for Assigned Names and Numbers'," 82621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'ICANN | Internet Corporation for Assigned Names and Numbers',NULL," 82721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "NULL,X'C28810240A15687474703A2F2F7777772E6963616E6E2E636F6D2F120B504" 82821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "E474158463041414646',X'C28810200A15687474703A2F2F7777772E6963616E6E2" 82921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "E636F6D2F120744414146415346');" 83021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'metas' VALUES(14,692,692,129079958383000000," 83121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "129079958383000000,129079958383000000,129079958383000000,1048576,11," 83221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'s_ID_14','s_ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0," 83321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'The WebKit Open Source Project','The WebKit Open Source Project'," 83421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "NULL,NULL,""X'C288101A0A12687474703A2F2F7765626B69742E6F72672F120450" 83521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "4E4758',X'C288101C0A13687474703A2F2F7765626B69742E6F72672F781205504E" 83621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "473259');" 83721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "CREATE TABLE models (model_id BLOB primary key, " 83821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "last_download_timestamp INT, initial_sync_ended BOOLEAN default 0);" 83921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 84021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, " 84121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "store_birthday TEXT, db_create_version TEXT, db_create_time INT, " 84221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "next_id INT default -2, cache_guid TEXT, " 84321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "notification_state BLOB);" 84421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'," 84521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542," 84621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "'9010788312004066376x-6609234393368420856x',X'C2881000');")); 84721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE(connection.CommitTransaction()); 84821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 84921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 85072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid MigrationTest::SetUpVersion74Database() { 85172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen sql::Connection connection; 85272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(connection.Open(GetDatabasePath())); 85372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(connection.BeginTransaction()); 85472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(connection.Execute( 85572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "CREATE TABLE share_version (id VARCHAR(128) primary key, data INT);" 85672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'share_version' VALUES('nick@chromium.org',74);" 85772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "CREATE TABLE models (model_id BLOB primary key, last_download_timestamp" 85872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen " INT, initial_sync_ended BOOLEAN default 0);" 85972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'models' VALUES(X'C2881000',694,1);" 86072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "CREATE TABLE 'share_info' (id TEXT primary key, name TEXT, store_birthd" 86172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "ay TEXT, db_create_version TEXT, db_create_time INT, next_id INT de" 86272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "fault -2, cache_guid TEXT , notification_state BLOB, autofill_migra" 86372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "tion_state INT default 0, bookmarks_added_during_autofill_migration" 86472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen " INT default 0, autofill_migration_time INT default 0, autofill_ent" 86572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "ries_added_during_migration INT default 0, autofill_profiles_added_" 86672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "during_migration INT default 0);" 86772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'share_info' VALUES('nick@chromium.org','nick@chromium.org'" 86872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ",'c27e9f59-08ca-46f8-b0cc-f16a2ed778bb','Unknown',1263522064,-65542" 86972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ",'9010788312004066376x-6609234393368420856x',NULL,0,0,0,0,0);" 87072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "CREATE TABLE 'metas'(metahandle bigint primary key ON CONFLICT FAIL,bas" 87172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "e_version bigint default -1,server_version bigint default 0,mtime b" 87272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "igint default 0,server_mtime bigint default 0,ctime bigint default " 87372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "0,server_ctime bigint default 0,server_position_in_parent bigint de" 87472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "fault 0,local_external_id bigint default 0,id varchar(255) default " 87572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "'r',parent_id varchar(255) default 'r',server_parent_id varchar(255" 87672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ") default 'r',prev_id varchar(255) default 'r',next_id varchar(255)" 87772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen " default 'r',is_unsynced bit default 0,is_unapplied_update bit defa" 87872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "ult 0,is_del bit default 0,is_dir bit default 0,server_is_dir bit d" 87972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "efault 0,server_is_del bit default 0,non_unique_name varchar,server" 88072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "_non_unique_name varchar(255),unique_server_tag varchar,unique_clie" 88172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "nt_tag varchar,specifics blob,server_specifics blob);" 88272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(1,-1,0,129079956640320000,0,1290799566403200" 88372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "00,0,0,0,'r','r','r','r','r',0,0,0,1,0,0,NULL,NULL,NULL,NULL,X'',X'" 88472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "');" 88572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(2,669,669,128976886618480000,128976886618480" 88672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "000,128976886618480000,128976886618480000,-2097152,4,'s_ID_2','s_ID" 88772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "_9','s_ID_9','s_ID_2','s_ID_2',0,0,1,0,0,1,'Deleted Item','Deleted " 88872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "Item',NULL,NULL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 88972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "36F6D2F12084141534741534741',X'C28810260A17687474703A2F2F7777772E67" 89072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "6F6F676C652E636F6D2F32120B4153414447414447414447');" 89172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(4,681,681,129002163642690000,129002163642690" 89272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "000,129002163642690000,129002163642690000,-3145728,3,'s_ID_4','s_ID" 89372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "_9','s_ID_9','s_ID_4','s_ID_4',0,0,1,0,0,1,'Welcome to Chromium','W" 89472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "elcome to Chromium',NULL,NULL,X'C28810350A31687474703A2F2F7777772E6" 89572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "76F6F676C652E636F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E" 89672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "68746D6C1200',X'C28810350A31687474703A2F2F7777772E676F6F676C652E636" 89772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "F6D2F6368726F6D652F696E746C2F656E2F77656C636F6D652E68746D6C1200');" 89872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(5,677,677,129001555500000000,129001555500000" 89972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "000,129001555500000000,129001555500000000,1048576,7,'s_ID_5','s_ID_" 90072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "9','s_ID_9','s_ID_5','s_ID_5',0,0,1,0,0,1,'Google','Google',NULL,NU" 90172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "LL,X'C28810220A16687474703A2F2F7777772E676F6F676C652E636F6D2F120841" 90272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "47415347415347',X'C28810220A16687474703A2F2F7777772E676F6F676C652E6" 90372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "36F6D2F12084147464447415347');" 90472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(6,694,694,129053976170000000,129053976170000" 90572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "000,129053976170000000,129053976170000000,-4194304,6,'s_ID_6','s_ID" 90672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "_9','s_ID_9','r','r',0,0,0,1,1,0,'The Internet','The Internet',NULL" 90772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ",NULL,X'C2881000',X'C2881000');" 90872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(7,663,663,128976864758480000,128976864758480" 90972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "000,128976864758480000,128976864758480000,1048576,0,'s_ID_7','r','r" 91072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "','r','r',0,0,0,1,1,0,'Google Chrome','Google Chrome','google_chrom" 91172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "e',NULL,NULL,NULL);" 91272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(8,664,664,128976864758480000,128976864758480" 91372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "000,128976864758480000,128976864758480000,1048576,0,'s_ID_8','s_ID_" 91472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "7','s_ID_7','r','r',0,0,0,1,1,0,'Bookmarks','Bookmarks','google_chr" 91572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "ome_bookmarks',NULL,X'C2881000',X'C2881000');" 91672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(9,665,665,128976864758480000,128976864758480" 91772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "000,128976864758480000,128976864758480000,1048576,1,'s_ID_9','s_ID_" 91872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "8','s_ID_8','r','s_ID_10',0,0,0,1,1,0,'Bookmark Bar','Bookmark Bar'" 91972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ",'bookmark_bar',NULL,X'C2881000',X'C2881000');" 92072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(10,666,666,128976864758480000,12897686475848" 92172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "0000,128976864758480000,128976864758480000,2097152,2,'s_ID_10','s_I" 92272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "D_8','s_ID_8','s_ID_9','r',0,0,0,1,1,0,'Other Bookmarks','Other Boo" 92372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "kmarks','other_bookmarks',NULL,X'C2881000',X'C2881000');" 92472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(11,683,683,129079956948440000,12907995694844" 92572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "0000,129079956948440000,129079956948440000,-1048576,8,'s_ID_11','s_" 92672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "ID_6','s_ID_6','r','s_ID_13',0,0,0,0,0,0,'Home (The Chromium Projec" 92772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "ts)','Home (The Chromium Projects)',NULL,NULL,X'C28810220A186874747" 92872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "03A2F2F6465762E6368726F6D69756D2E6F72672F1206414741545741',X'C28810" 92972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "290A1D687474703A2F2F6465762E6368726F6D69756D2E6F72672F6F74686572120" 93072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "84146414756415346');" 93172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(12,685,685,129079957513650000,12907995751365" 93272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "0000,129079957513650000,129079957513650000,0,9,'s_ID_12','s_ID_6','" 93372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "s_ID_6','s_ID_13','s_ID_14',0,0,0,1,1,0,'Extra Bookmarks','Extra Bo" 93472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "okmarks',NULL,NULL,X'C2881000',X'C2881000');" 93572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(13,687,687,129079957985300000,12907995798530" 93672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "0000,129079957985300000,129079957985300000,-917504,10,'s_ID_13','s_" 93772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "ID_6','s_ID_6','s_ID_11','s_ID_12',0,0,0,0,0,0,'ICANN | Internet Co" 93872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "rporation for Assigned Names and Numbers','ICANN | Internet Corpora" 93972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "tion for Assigned Names and Numbers',NULL,NULL,X'C28810240A15687474" 94072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "703A2F2F7777772E6963616E6E2E636F6D2F120B504E474158463041414646',X'C" 94172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "28810200A15687474703A2F2F7777772E6963616E6E2E636F6D2F12074441414641" 94272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "5346');" 94372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "INSERT INTO 'metas' VALUES(14,692,692,129079958383000000,12907995838300" 94472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "0000,129079958383000000,129079958383000000,1048576,11,'s_ID_14','s_" 94572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "ID_6','s_ID_6','s_ID_12','r',0,0,0,0,0,0,'The WebKit Open Source Pr" 94672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "oject','The WebKit Open Source Project',NULL,NULL,X'C288101A0A12687" 94772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "474703A2F2F7765626B69742E6F72672F1204504E4758',X'C288101C0A13687474" 94872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "703A2F2F7765626B69742E6F72672F781205504E473259');" 94972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen )); 95072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(connection.CommitTransaction()); 95172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 95272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 953c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DirectoryBackingStoreTest, MigrateVersion67To68) { 954c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion67Database(); 955c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 956c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 957c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 958c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 959c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 960c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Columns existing before version 67. 961c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "name")); 962c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "unsanitized_name")); 963c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "server_name")); 964c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 965c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 966c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 967c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 968c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 969c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->BeginLoad(); 970c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(dbs->needs_column_refresh_); 971c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(dbs->MigrateVersion67To68()); 972c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(68, dbs->GetVersion()); 973c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->EndLoad(); 974c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(dbs->needs_column_refresh_); 975c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 976c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 977c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DirectoryBackingStoreTest, MigrateVersion68To69) { 978c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion68Database(); 979c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 980c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 981c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 982c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 983c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->BeginLoad(); 984c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(dbs->needs_column_refresh_); 985c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(dbs->MigrateVersion68To69()); 986c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(69, dbs->GetVersion()); 987c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->EndLoad(); 988c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(dbs->needs_column_refresh_); 989c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 990c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 991c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 992c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 993c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 994c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Statement s(connection.GetUniqueStatement("SELECT non_unique_name," 995c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "is_del, is_dir, id, specifics, server_specifics FROM metas " 996c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "WHERE metahandle = 2")); 997c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(s.Step()); 998c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ("Deleted Item", s.ColumnString(0)); 999c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(s.ColumnBool(1)); 1000c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(s.ColumnBool(2)); 1001c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ("s_ID_2", s.ColumnString(3)); 1002c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sync_pb::EntitySpecifics specifics; 1003c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch specifics.ParseFromArray(s.ColumnBlob(4), s.ColumnByteLength(4)); 1004c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(specifics.HasExtension(sync_pb::bookmark)); 1005c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ("http://www.google.com/", 1006c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch specifics.GetExtension(sync_pb::bookmark).url()); 1007c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ("AASGASGA", specifics.GetExtension(sync_pb::bookmark).favicon()); 1008c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch specifics.ParseFromArray(s.ColumnBlob(5), s.ColumnByteLength(5)); 1009c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(specifics.HasExtension(sync_pb::bookmark)); 1010c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ("http://www.google.com/2", 1011c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch specifics.GetExtension(sync_pb::bookmark).url()); 1012c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ("ASADGADGADG", specifics.GetExtension(sync_pb::bookmark).favicon()); 1013c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(s.Step()); 1014c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1015c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1016c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DirectoryBackingStoreTest, MigrateVersion69To70) { 1017c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion69Database(); 1018c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1019c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 1020c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 1021c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 1022c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1023c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "singleton_tag")); 1024c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_server_tag")); 1025c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "unique_client_tag")); 1026c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1027c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1028c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 1029c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 1030c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1031c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->BeginLoad(); 1032c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(dbs->needs_column_refresh_); 1033c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(dbs->MigrateVersion69To70()); 1034c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(70, dbs->GetVersion()); 1035c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->EndLoad(); 1036c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(dbs->needs_column_refresh_); 1037c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1038c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 1039c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 1040c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1041c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 1042c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 1043c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Statement s(connection.GetUniqueStatement("SELECT id" 1044c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch " FROM metas WHERE unique_server_tag = 'google_chrome'")); 1045c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(s.Step()); 1046c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("s_ID_7", s.ColumnString(0)); 1047c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1048c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1049c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DirectoryBackingStoreTest, MigrateVersion70To71) { 1050c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion70Database(); 1051c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1052c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 1053c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 1054c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 1055c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE( 1056c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch connection.DoesColumnExist("share_info", "last_sync_timestamp")); 1057c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE( 1058c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch connection.DoesColumnExist("share_info", "initial_sync_ended")); 1059c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesTableExist("models")); 1060c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1061c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1062c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 1063c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 1064c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1065c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->BeginLoad(); 1066c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(dbs->needs_column_refresh_); 1067c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(dbs->MigrateVersion70To71()); 1068c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(71, dbs->GetVersion()); 1069c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->EndLoad(); 1070c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(dbs->needs_column_refresh_); 1071c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1072c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 1073c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 1074c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1075c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE( 1076c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch connection.DoesColumnExist("share_info", "last_sync_timestamp")); 1077c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE( 1078c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch connection.DoesColumnExist("share_info", "initial_sync_ended")); 1079c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesTableExist("models")); 1080c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE( 1081c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch connection.DoesColumnExist("models", "initial_sync_ended")); 1082c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE( 1083c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch connection.DoesColumnExist("models", "last_download_timestamp")); 1084c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE( 1085c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch connection.DoesColumnExist("models", "model_id")); 1086c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1087c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Statement s(connection.GetUniqueStatement("SELECT model_id, " 1088c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "initial_sync_ended, last_download_timestamp FROM models")); 1089c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(s.Step()); 1090c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string model_id = s.ColumnString(0); 10913345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick EXPECT_EQ("C2881000", base::HexEncode(model_id.data(), model_id.size())) 1092c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch << "Model ID is expected to be the empty BookmarkSpecifics proto."; 109372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_TRUE(s.ColumnBool(1)); 1094c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(694, s.ColumnInt64(2)); 1095c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(s.Step()); 1096c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1097c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1098c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1099c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DirectoryBackingStoreTest, MigrateVersion71To72) { 1100c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion71Database(); 1101c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1102c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 1103c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 1104c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 1105c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesTableExist("extended_attributes")); 1106c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1107c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1108c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 1109c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 1110c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1111c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->BeginLoad(); 1112c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(dbs->needs_column_refresh_); 1113c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(dbs->MigrateVersion71To72()); 1114c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(72, dbs->GetVersion()); 1115c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->EndLoad(); 1116c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(dbs->needs_column_refresh_); 1117c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1118c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 1119c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 1120c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 1121c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1122c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1123731df977c0511bca2206b5f333555b1205ff1f43Iain MerrickTEST_F(DirectoryBackingStoreTest, MigrateVersion72To73) { 1124731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick SetUpVersion72Database(); 1125731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 1126731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick { 1127731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick sql::Connection connection; 1128731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_TRUE(connection.Open(GetDatabasePath())); 1129731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_FALSE( 1130731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick connection.DoesColumnExist("share_info", "notification_state")); 1131731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick } 1132731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 1133731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick scoped_ptr<DirectoryBackingStore> dbs( 1134731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 1135731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 1136731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick dbs->BeginLoad(); 1137731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_FALSE(dbs->needs_column_refresh_); 1138731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_TRUE(dbs->MigrateVersion72To73()); 1139731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_EQ(73, dbs->GetVersion()); 1140731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick dbs->EndLoad(); 1141731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_FALSE(dbs->needs_column_refresh_); 1142731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 1143731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick sql::Connection connection; 1144731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_TRUE(connection.Open(GetDatabasePath())); 1145731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_TRUE( 1146731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick connection.DoesColumnExist("share_info", "notification_state")); 1147731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick} 1148731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 114921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian MonsenTEST_F(DirectoryBackingStoreTest, MigrateVersion73To74) { 115021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetUpVersion73Database(); 115121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 115221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen { 115321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen sql::Connection connection; 115421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE(connection.Open(GetDatabasePath())); 115521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_FALSE( 115621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", "autofill_migration_state")); 115721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_FALSE( 115821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", 115921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "bookmarks_added_during_autofill_migration")); 116021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_FALSE( 116121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", "autofill_migration_time")); 116221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_FALSE( 116321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", 116421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "autofill_entries_added_during_migration")); 116521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 116621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_FALSE( 116721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", 116821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "autofill_profiles_added_during_migration")); 116921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen } 117021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 117121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen scoped_ptr<DirectoryBackingStore> dbs( 117221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 117321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 117421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen dbs->BeginLoad(); 117521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_FALSE(dbs->needs_column_refresh_); 117621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE(dbs->MigrateVersion73To74()); 117721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_EQ(74, dbs->GetVersion()); 117821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen dbs->EndLoad(); 117921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_FALSE(dbs->needs_column_refresh_); 118021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 118121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen sql::Connection connection; 118221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE(connection.Open(GetDatabasePath())); 118321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE( 118421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", "autofill_migration_state")); 118521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE( 118621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", 118721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "bookmarks_added_during_autofill_migration")); 118821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE( 118921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", "autofill_migration_time")); 119021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE( 119121d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", 119221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "autofill_entries_added_during_migration")); 119321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 119421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE( 119521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen connection.DoesColumnExist("share_info", 119621d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "autofill_profiles_added_during_migration")); 119721d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen} 119821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 119972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenTEST_F(DirectoryBackingStoreTest, MigrateVersion74To75) { 120072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen SetUpVersion74Database(); 120172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 120272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { 120372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen sql::Connection connection; 120472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(connection.Open(GetDatabasePath())); 120572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(connection.DoesColumnExist("models", "progress_marker")); 120672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(connection.DoesColumnExist("models", 120772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "last_download_timestamp")); 120872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } 120972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 121072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_ptr<DirectoryBackingStore> dbs( 121172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 121272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 121372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dbs->BeginLoad(); 121472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dbs->needs_column_refresh_); 121572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(dbs->MigrateVersion74To75()); 121672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_EQ(75, dbs->GetVersion()); 121772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dbs->EndLoad(); 121872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(dbs->needs_column_refresh_); 121972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 122072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen sql::Connection connection; 122172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(connection.Open(GetDatabasePath())); 122272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 122372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 122472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(connection.DoesColumnExist("models", 122572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "last_download_timestamp")); 122672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 122772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1228c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_P(MigrationTest, ToCurrentVersion) { 1229c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch switch (GetParam()) { 1230c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch case 67: 1231c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion67Database(); 1232c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch break; 1233c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch case 68: 1234c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion68Database(); 1235c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch break; 1236c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch case 69: 1237c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion69Database(); 1238c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch break; 1239c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch case 70: 1240c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion70Database(); 1241c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch break; 1242c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch case 71: 1243c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpVersion71Database(); 1244c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch break; 1245731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick case 72: 1246731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick SetUpVersion72Database(); 1247731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick break; 124821d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen case 73: 124921d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen SetUpVersion73Database(); 125021d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen break; 125172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen case 74: 125272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen SetUpVersion74Database(); 125372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen break; 1254c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch default: 1255c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // If you see this error, it may mean that you've increased the 1256c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // database version number but you haven't finished adding unit tests 1257c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // for the database migration code. You need to need to supply a 1258c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // SetUpVersionXXDatabase function with a dump of the test database 1259c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // at the old schema. Here's one way to do that: 1260c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // 1. Start on a clean tree (with none of your pending schema changes). 1261c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // 2. Set a breakpoint in this function and run the unit test. 1262c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // 3. Allow this test to run to completion (step out of the call), 1263c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // without allowing ~MigrationTest to execute. 1264c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // 4. Examine this->scoped_dir_ to determine the location of the 1265c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // test database (it is currently of the version you need). 1266c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // 5. Dump this using the sqlite command line tool: 1267c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // > .output foo_dump.sql 1268c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // > .dump 1269c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch FAIL() << "Need to supply database dump for version " << GetParam(); 1270c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1271c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1272c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 1273c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 1274c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1275c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->BeginLoad(); 1276c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(OPENED == dbs->InitializeTables()); 1277c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(dbs->needs_column_refresh_); 1278c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(kCurrentDBVersion, dbs->GetVersion()); 1279c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1280c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 1281c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch sql::Connection connection; 1282c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.Open(GetDatabasePath())); 1283c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1284c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Columns deleted in Version 67. 1285c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "name")); 1286c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "unsanitized_name")); 1287c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "server_name")); 1288c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1289c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Columns added in Version 68. 1290c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "specifics")); 1291c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "server_specifics")); 1292c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1293c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Columns deleted in Version 68. 1294c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "is_bookmark_object")); 1295c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", 1296c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch "server_is_bookmark_object")); 1297c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_favicon")); 1298c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "bookmark_url")); 1299c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "server_bookmark_url")); 1300c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1301c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Renamed a column in Version 70 1302c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesColumnExist("metas", "singleton_tag")); 1303c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_server_tag")); 1304c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(connection.DoesColumnExist("metas", "unique_client_tag")); 1305c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1306c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // Removed extended attributes in Version 72. 1307c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_FALSE(connection.DoesTableExist("extended_attributes")); 1308731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick 1309731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick // Columns added in Version 73. 1310731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick ASSERT_TRUE(connection.DoesColumnExist( 1311731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick "share_info", "notification_state")); 131221d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen 131321d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen // Columns added in version 74. 131421d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen ASSERT_TRUE(connection.DoesColumnExist("share_info", 131521d179b334e59e9a3bfcaed4c4430bef1bc5759dKristian Monsen "autofill_migration_state")); 131672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 131772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Column replaced in version 75. 131872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE(connection.DoesColumnExist("models", "progress_marker")); 131972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE(connection.DoesColumnExist("models", 132072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen "last_download_timestamp")); 132172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } 132272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen { 132372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen syncable::Directory::KernelLoadInfo dir_info; 132472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dbs->LoadInfo(&dir_info); 132572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 132672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Check download_progress state (v75 migration) 132772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_EQ(694, 132872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dir_info.kernel_info.download_progress[syncable::BOOKMARKS] 132972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen .timestamp_token_for_migration()); 133072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE( 133172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dir_info.kernel_info.download_progress[syncable::BOOKMARKS] 133272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen .has_token()); 133372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_EQ(32904, 133472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dir_info.kernel_info.download_progress[syncable::BOOKMARKS] 133572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen .data_type_id()); 133672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_FALSE( 133772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dir_info.kernel_info.download_progress[syncable::THEMES] 133872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen .has_timestamp_token_for_migration()); 133972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE( 134072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dir_info.kernel_info.download_progress[syncable::THEMES] 134172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen .has_token()); 134272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_TRUE( 134372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dir_info.kernel_info.download_progress[syncable::THEMES] 134472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen .token().empty()); 134572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_EQ(41210, 134672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen dir_info.kernel_info.download_progress[syncable::THEMES] 134772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen .data_type_id()); 1348c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1349c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1350c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MetahandlesIndex index; 13513345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick STLElementDeleter<MetahandlesIndex> index_deleter(&index); 1352c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->LoadEntries(&index); 1353c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->EndLoad(); 1354c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1355c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MetahandlesIndex::iterator it = index.begin(); 1356c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(it != index.end()); 1357c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(1, (*it)->ref(META_HANDLE)); 1358c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(ID).IsRoot()); 1359c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1360c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()) << "Upgrade destroyed database contents."; 1361c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(2, (*it)->ref(META_HANDLE)); 1362c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(IS_DEL)); 1363c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_IS_DEL)); 1364c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SPECIFICS).HasExtension(sync_pb::bookmark)); 1365c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).HasExtension(sync_pb::bookmark)); 1366c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("http://www.google.com/", 1367c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).url()); 1368c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("AASGASGA", 1369c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).favicon()); 1370c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("http://www.google.com/2", 1371c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SERVER_SPECIFICS).GetExtension(sync_pb::bookmark).url()); 1372c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("ASADGADGADG", 1373c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SERVER_SPECIFICS).GetExtension(sync_pb::bookmark).favicon()); 1374c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("", (*it)->ref(UNIQUE_SERVER_TAG)); 1375c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("Deleted Item", (*it)->ref(NON_UNIQUE_NAME)); 1376c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("Deleted Item", (*it)->ref(SERVER_NON_UNIQUE_NAME)); 1377c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1378c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1379c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(4, (*it)->ref(META_HANDLE)); 1380c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(IS_DEL)); 1381c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_IS_DEL)); 1382c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1383c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1384c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(5, (*it)->ref(META_HANDLE)); 1385c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(IS_DEL)); 1386c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_IS_DEL)); 1387c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1388c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1389c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(6, (*it)->ref(META_HANDLE)); 1390c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(IS_DIR)); 1391c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_IS_DIR)); 1392c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE( 1393c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).has_url()); 1394c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE( 1395c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SERVER_SPECIFICS).GetExtension(sync_pb::bookmark).has_url()); 1396c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE( 1397c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).has_favicon()); 1398c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(SERVER_SPECIFICS). 1399c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetExtension(sync_pb::bookmark).has_favicon()); 1400c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1401c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1402c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(7, (*it)->ref(META_HANDLE)); 1403c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("google_chrome", (*it)->ref(UNIQUE_SERVER_TAG)); 1404c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(SPECIFICS).HasExtension(sync_pb::bookmark)); 1405c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(SERVER_SPECIFICS).HasExtension(sync_pb::bookmark)); 1406c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1407c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1408c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(8, (*it)->ref(META_HANDLE)); 1409c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("google_chrome_bookmarks", (*it)->ref(UNIQUE_SERVER_TAG)); 1410c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SPECIFICS).HasExtension(sync_pb::bookmark)); 1411c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).HasExtension(sync_pb::bookmark)); 1412c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1413c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1414c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(9, (*it)->ref(META_HANDLE)); 1415c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("bookmark_bar", (*it)->ref(UNIQUE_SERVER_TAG)); 1416c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SPECIFICS).HasExtension(sync_pb::bookmark)); 1417c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).HasExtension(sync_pb::bookmark)); 1418c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1419c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1420c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(10, (*it)->ref(META_HANDLE)); 1421c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(IS_DEL)); 1422c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SPECIFICS).HasExtension(sync_pb::bookmark)); 1423c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).HasExtension(sync_pb::bookmark)); 1424c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).has_url()); 1425c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE( 1426c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).has_favicon()); 1427c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE( 1428c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SERVER_SPECIFICS).GetExtension(sync_pb::bookmark).has_url()); 1429c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(SERVER_SPECIFICS). 1430c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetExtension(sync_pb::bookmark).has_favicon()); 1431c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("other_bookmarks", (*it)->ref(UNIQUE_SERVER_TAG)); 1432c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("Other Bookmarks", (*it)->ref(NON_UNIQUE_NAME)); 1433c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("Other Bookmarks", (*it)->ref(SERVER_NON_UNIQUE_NAME)); 1434c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1435c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1436c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(11, (*it)->ref(META_HANDLE)); 1437c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(IS_DEL)); 1438c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(IS_DIR)); 1439c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SPECIFICS).HasExtension(sync_pb::bookmark)); 1440c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).HasExtension(sync_pb::bookmark)); 1441c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("http://dev.chromium.org/", 1442c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).url()); 1443c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("AGATWA", 1444c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).favicon()); 1445c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("http://dev.chromium.org/other", 1446c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SERVER_SPECIFICS).GetExtension(sync_pb::bookmark).url()); 1447c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("AFAGVASF", 1448c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SERVER_SPECIFICS).GetExtension(sync_pb::bookmark).favicon()); 1449c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("", (*it)->ref(UNIQUE_SERVER_TAG)); 1450c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("Home (The Chromium Projects)", (*it)->ref(NON_UNIQUE_NAME)); 1451c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("Home (The Chromium Projects)", (*it)->ref(SERVER_NON_UNIQUE_NAME)); 1452c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1453c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1454c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(12, (*it)->ref(META_HANDLE)); 1455c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(IS_DEL)); 1456c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(IS_DIR)); 1457c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("Extra Bookmarks", (*it)->ref(NON_UNIQUE_NAME)); 1458c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ("Extra Bookmarks", (*it)->ref(SERVER_NON_UNIQUE_NAME)); 1459c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SPECIFICS).HasExtension(sync_pb::bookmark)); 1460c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE((*it)->ref(SERVER_SPECIFICS).HasExtension(sync_pb::bookmark)); 1461c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE( 1462c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).has_url()); 1463c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE( 1464c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SERVER_SPECIFICS).GetExtension(sync_pb::bookmark).has_url()); 1465c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE( 1466c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch (*it)->ref(SPECIFICS).GetExtension(sync_pb::bookmark).has_favicon()); 1467c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE((*it)->ref(SERVER_SPECIFICS). 1468c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch GetExtension(sync_pb::bookmark).has_favicon()); 1469c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1470c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1471c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(13, (*it)->ref(META_HANDLE)); 1472c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1473c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it != index.end()); 1474c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_EQ(14, (*it)->ref(META_HANDLE)); 1475c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1476c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_TRUE(++it == index.end()); 1477c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1478c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1479c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochINSTANTIATE_TEST_CASE_P(DirectoryBackingStore, MigrationTest, 1480c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch testing::Range(67, kCurrentDBVersion)); 1481c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1482c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DirectoryBackingStoreTest, ModelTypeIds) { 1483c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (int i = FIRST_REAL_MODEL_TYPE; i < MODEL_TYPE_COUNT; ++i) { 1484c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string model_id = 1485c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch DirectoryBackingStore::ModelTypeEnumToModelId(ModelTypeFromInt(i)); 1486c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(i, 148772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen DirectoryBackingStore::ModelIdToModelTypeEnum(model_id.data(), 148872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen model_id.size())); 1489c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1490c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1491c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1492c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DirectoryBackingStoreTest, Corruption) { 1493c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 1494c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 1495c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 1496c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(dbs->BeginLoad()); 1497c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1498c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch std::string bad_data("BAD DATA"); 1499c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(file_util::WriteFile(GetDatabasePath(), bad_data.data(), 1500c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bad_data.size())); 1501c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch { 1502c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 1503c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 1504c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1505c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // In release mode, we expect the sync database to nuke itself and start 1506c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch // over if it detects invalid/corrupted data. 1507c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#if defined(NDEBUG) 1508c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(dbs->BeginLoad()); 1509c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#else 1510c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_DEATH(dbs->BeginLoad(), "sqlite error"); 1511c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif 1512c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1513c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1514c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1515c407dc5cd9bdc5668497f21b26b09d988ab439deBen MurdochTEST_F(DirectoryBackingStoreTest, DeleteEntries) { 1516c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch SetUpCurrentDatabaseAndCheckVersion(); 1517c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch scoped_ptr<DirectoryBackingStore> dbs( 1518c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch new DirectoryBackingStore(GetUsername(), GetDatabasePath())); 1519c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->BeginLoad(); 1520c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MetahandlesIndex index; 15213345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick STLElementDeleter<MetahandlesIndex> index_deleter(&index); 1522c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->LoadEntries(&index); 1523c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch size_t initial_size = index.size(); 1524c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ASSERT_LT(0U, initial_size) << "Test requires entries to delete."; 1525c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch int64 first_to_die = (*index.begin())->ref(META_HANDLE); 1526c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch MetahandleSet to_delete; 1527c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch to_delete.insert(first_to_die); 1528c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(dbs->DeleteEntries(to_delete)); 1529c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15303345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick STLDeleteElements(&index); 1531c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->LoadEntries(&index); 1532c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1533c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(initial_size - 1, index.size()); 1534c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch bool delete_failed = false; 1535c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (MetahandlesIndex::iterator it = index.begin(); it != index.end(); 1536c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++it) { 1537c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch if ((*it)->ref(META_HANDLE) == first_to_die) { 1538c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch delete_failed = true; 1539c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch break; 1540c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1541c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1542c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_FALSE(delete_failed); 1543c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1544c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch to_delete.clear(); 1545c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch for (MetahandlesIndex::iterator it = index.begin(); it != index.end(); 1546c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch ++it) { 1547c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch to_delete.insert((*it)->ref(META_HANDLE)); 1548c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch } 1549c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1550c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_TRUE(dbs->DeleteEntries(to_delete)); 1551c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 15523345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick STLDeleteElements(&index); 1553c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->LoadEntries(&index); 1554c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch EXPECT_EQ(0U, index.size()); 1555c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1556c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->EndLoad(); 1557c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch dbs->EndSave(); 1558c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} 1559c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch 1560c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch} // namespace syncable 1561