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