172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// found in the LICENSE file. 472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include <string> 672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/basictypes.h" 872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/callback.h" 972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/file_path.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "base/memory/ref_counted.h" 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/message_loop.h" 1272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/utf_string_conversions.h" 1372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/browsing_data_helper_browsertest.h" 1472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/browsing_data_indexed_db_helper.h" 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/test/in_process_browser_test.h" 1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/test/testing_profile.h" 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "testing/gtest/include/gtest/gtest.h" 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsennamespace { 2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsentypedef BrowsingDataHelperCallback<BrowsingDataIndexedDBHelper::IndexedDBInfo> 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen TestCompletionCallback; 2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenclass BrowsingDataIndexedDBHelperTest : public InProcessBrowserTest { 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen protected: 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen TestingProfile testing_profile_; 2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen}; 2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenIN_PROC_BROWSER_TEST_F(BrowsingDataIndexedDBHelperTest, CannedAddIndexedDB) { 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const GURL origin1("http://host1:1/"); 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const GURL origin2("http://host2:1/"); 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const string16 description(ASCIIToUTF16("description")); 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const FilePath::CharType file1[] = 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen FILE_PATH_LITERAL("http_host1_1.indexeddb"); 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const FilePath::CharType file2[] = 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen FILE_PATH_LITERAL("http_host2_1.indexeddb"); 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_refptr<CannedBrowsingDataIndexedDBHelper> helper( 3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen new CannedBrowsingDataIndexedDBHelper(&testing_profile_)); 3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen helper->AddIndexedDB(origin1, description); 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen helper->AddIndexedDB(origin2, description); 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 4272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen TestCompletionCallback callback; 4372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen helper->StartFetching( 4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen NewCallback(&callback, &TestCompletionCallback::callback)); 4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<BrowsingDataIndexedDBHelper::IndexedDBInfo> result = 4772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen callback.result(); 4872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 4972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_EQ(2U, result.size()); 5072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ(FilePath(file1).value(), result[0].file_path.BaseName().value()); 5172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ(FilePath(file2).value(), result[1].file_path.BaseName().value()); 5272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenIN_PROC_BROWSER_TEST_F(BrowsingDataIndexedDBHelperTest, CannedUnique) { 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const GURL origin("http://host1:1/"); 5672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const string16 description(ASCIIToUTF16("description")); 5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const FilePath::CharType file[] = 5872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen FILE_PATH_LITERAL("http_host1_1.indexeddb"); 5972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 6072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen scoped_refptr<CannedBrowsingDataIndexedDBHelper> helper( 6172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen new CannedBrowsingDataIndexedDBHelper(&testing_profile_)); 6272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen helper->AddIndexedDB(origin, description); 6372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen helper->AddIndexedDB(origin, description); 6472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 6572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen TestCompletionCallback callback; 6672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen helper->StartFetching( 6772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen NewCallback(&callback, &TestCompletionCallback::callback)); 6872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 6972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen std::vector<BrowsingDataIndexedDBHelper::IndexedDBInfo> result = 7072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen callback.result(); 7172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 7272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ASSERT_EQ(1U, result.size()); 7372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen EXPECT_EQ(FilePath(file).value(), result[0].file_path.BaseName().value()); 7472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 7572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} // namespace 76