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.
5 #include "base/memory/scoped_vector.h"
6 #include "chrome/browser/sessions/session_service.h"
7 #include "chrome/browser/sync/profile_sync_service.h"
8 #include "chrome/browser/sync/test/integration/sync_integration_test_util.h"
9 #include "chrome/browser/sync/test/integration/sync_test.h"
10 #include "chrome/browser/sync/test/integration/typed_urls_helper.h"
11 #include "components/history/core/browser/history_types.h"
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;
20 const std::string kSanityHistoryUrl = "http://www.sanity-history.google.com";
22 class SingleClientTypedUrlsSyncTest : public SyncTest {
24 SingleClientTypedUrlsSyncTest() : SyncTest(SINGLE_CLIENT) {}
25 virtual ~SingleClientTypedUrlsSyncTest() {}
28 DISALLOW_COPY_AND_ASSIGN(SingleClientTypedUrlsSyncTest);
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());
36 GURL new_url(kSanityHistoryUrl);
37 AddUrlToHistory(0, new_url);
39 urls = GetTypedUrlsFromClient(0);
40 ASSERT_EQ(1U, urls.size());
41 ASSERT_EQ(new_url, urls[0].url());
42 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
44 // Wait for sync and verify client did not change.
45 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
46 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
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());
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);
59 urls = GetTypedUrlsFromClient(0);
60 ASSERT_EQ(1U, urls.size());
61 ASSERT_EQ(new_url, urls[0].url());
62 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
64 // Wait for sync and verify client did not change.
65 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
66 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
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());
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);
79 urls = GetTypedUrlsFromClient(0);
80 ASSERT_EQ(1U, urls.size());
81 ASSERT_EQ(new_url, urls[0].url());
82 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
84 // Wait for sync and verify client did not change.
85 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
86 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
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());
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());
101 GURL new_url(kSanityHistoryUrl);
102 // Add a non-typed URL.
103 AddUrlToHistoryWithTransition(0, new_url, ui::PAGE_TRANSITION_LINK,
104 history::SOURCE_BROWSED);
106 urls = GetTypedUrlsFromClient(0);
107 ASSERT_EQ(0U, urls.size());
108 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
110 // Wait for sync and verify client did not change.
111 ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
112 ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
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());