1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include "chrome/browser/history/history_database.h" 6 7 #include "base/files/file_path.h" 8 #include "base/files/file_util.h" 9 #include "base/files/scoped_temp_dir.h" 10 #include "base/path_service.h" 11 #include "chrome/common/chrome_paths.h" 12 #include "sql/init_status.h" 13 #include "testing/gtest/include/gtest/gtest.h" 14 15 namespace history { 16 17 TEST(HistoryDatabaseTest, DropBookmarks) { 18 base::ScopedTempDir temp_dir; 19 base::FilePath db_file; 20 21 ASSERT_TRUE(temp_dir.CreateUniqueTempDir()); 22 db_file = temp_dir.path().AppendASCII("DropBookmarks.db"); 23 sql::Connection::Delete(db_file); 24 25 // Copy db file over that contains starred URLs. 26 base::FilePath old_history_path; 27 PathService::Get(chrome::DIR_TEST_DATA, &old_history_path); 28 old_history_path = old_history_path.AppendASCII("bookmarks"); 29 old_history_path = old_history_path.Append( 30 FILE_PATH_LITERAL("History_with_starred")); 31 base::CopyFile(old_history_path, db_file); 32 33 // Load the DB twice. The first time it should migrate. Make sure that the 34 // migration leaves it in a state fit to load again later. 35 for (int i = 0; i < 2; ++i) { 36 HistoryDatabase history_db; 37 ASSERT_EQ(sql::INIT_OK, history_db.Init(db_file)); 38 HistoryDatabase::URLEnumerator url_enumerator; 39 ASSERT_TRUE(history_db.InitURLEnumeratorForEverything(&url_enumerator)); 40 int num_urls = 0; 41 URLRow url_row; 42 while (url_enumerator.GetNextURL(&url_row)) { 43 ++num_urls; 44 } 45 ASSERT_EQ(5, num_urls); 46 } 47 } 48 49 } // namespace history 50