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 "base/memory/scoped_vector.h" 6 #include "chrome/browser/history/history_types.h" 7 #include "chrome/browser/sessions/session_service.h" 8 #include "chrome/browser/sync/profile_sync_service.h" 9 #include "chrome/browser/sync/test/integration/sync_integration_test_util.h" 10 #include "chrome/browser/sync/test/integration/sync_test.h" 11 #include "chrome/browser/sync/test/integration/typed_urls_helper.h" 12 13 using sync_integration_test_util::AwaitCommitActivityCompletion; 14 using typed_urls_helper::AddUrlToHistory; 15 using typed_urls_helper::AddUrlToHistoryWithTransition; 16 using typed_urls_helper::CheckAllProfilesHaveSameURLsAsVerifier; 17 using typed_urls_helper::DeleteUrlFromHistory; 18 using typed_urls_helper::GetTypedUrlsFromClient; 19 20 const std::string kSanityHistoryUrl = "http://www.sanity-history.google.com"; 21 22 class SingleClientTypedUrlsSyncTest : public SyncTest { 23 public: 24 SingleClientTypedUrlsSyncTest() : SyncTest(SINGLE_CLIENT) {} 25 virtual ~SingleClientTypedUrlsSyncTest() {} 26 27 private: 28 DISALLOW_COPY_AND_ASSIGN(SingleClientTypedUrlsSyncTest); 29 }; 30 31 IN_PROC_BROWSER_TEST_F(SingleClientTypedUrlsSyncTest, Sanity) { 32 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 33 history::URLRows urls = GetTypedUrlsFromClient(0); 34 ASSERT_EQ(0U, urls.size()); 35 36 GURL new_url(kSanityHistoryUrl); 37 AddUrlToHistory(0, new_url); 38 39 urls = GetTypedUrlsFromClient(0); 40 ASSERT_EQ(1U, urls.size()); 41 ASSERT_EQ(new_url, urls[0].url()); 42 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 43 44 // Wait for sync and verify client did not change. 45 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); 46 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 47 } 48 49 IN_PROC_BROWSER_TEST_F(SingleClientTypedUrlsSyncTest, TwoVisits) { 50 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 51 history::URLRows urls = GetTypedUrlsFromClient(0); 52 ASSERT_EQ(0U, urls.size()); 53 54 GURL new_url(kSanityHistoryUrl); 55 // Adding twice should add two visits with distinct timestamps. 56 AddUrlToHistory(0, new_url); 57 AddUrlToHistory(0, new_url); 58 59 urls = GetTypedUrlsFromClient(0); 60 ASSERT_EQ(1U, urls.size()); 61 ASSERT_EQ(new_url, urls[0].url()); 62 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 63 64 // Wait for sync and verify client did not change. 65 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); 66 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 67 } 68 69 IN_PROC_BROWSER_TEST_F(SingleClientTypedUrlsSyncTest, DeleteTyped) { 70 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 71 history::URLRows urls = GetTypedUrlsFromClient(0); 72 ASSERT_EQ(0U, urls.size()); 73 74 GURL new_url(kSanityHistoryUrl); 75 // Adding twice should add two visits with distinct timestamps. 76 AddUrlToHistory(0, new_url); 77 AddUrlToHistory(0, new_url); 78 79 urls = GetTypedUrlsFromClient(0); 80 ASSERT_EQ(1U, urls.size()); 81 ASSERT_EQ(new_url, urls[0].url()); 82 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 83 84 // Wait for sync and verify client did not change. 85 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); 86 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 87 88 // Now delete the URL we just added, wait for sync, and verify the deletion. 89 DeleteUrlFromHistory(0, new_url); 90 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); 91 urls = GetTypedUrlsFromClient(0); 92 ASSERT_EQ(0U, urls.size()); 93 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 94 } 95 96 IN_PROC_BROWSER_TEST_F(SingleClientTypedUrlsSyncTest, DeleteNonTyped) { 97 ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 98 history::URLRows urls = GetTypedUrlsFromClient(0); 99 ASSERT_EQ(0U, urls.size()); 100 101 GURL new_url(kSanityHistoryUrl); 102 // Add a non-typed URL. 103 AddUrlToHistoryWithTransition(0, new_url, content::PAGE_TRANSITION_LINK, 104 history::SOURCE_BROWSED); 105 106 urls = GetTypedUrlsFromClient(0); 107 ASSERT_EQ(0U, urls.size()); 108 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 109 110 // Wait for sync and verify client did not change. 111 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); 112 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 113 114 // Now delete the URL we just added, wait for sync and verify the deletion. 115 DeleteUrlFromHistory(0, new_url); 116 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0)))); 117 urls = GetTypedUrlsFromClient(0); 118 ASSERT_EQ(0U, urls.size()); 119 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier()); 120 } 121