single_client_typed_urls_sync_test.cc revision 5821806d5e7f356e8fa4b058a389a808ea183019
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
12using typed_urls_helper::AddUrlToHistory;
13using typed_urls_helper::AddUrlToHistoryWithTransition;
14using typed_urls_helper::AssertAllProfilesHaveSameURLsAsVerifier;
15using typed_urls_helper::DeleteUrlFromHistory;
16using typed_urls_helper::GetTypedUrlsFromClient;
17
18const std::string kSanityHistoryUrl = "http://www.sanity-history.google.com";
19
20class SingleClientTypedUrlsSyncTest : public SyncTest {
21 public:
22  SingleClientTypedUrlsSyncTest() : SyncTest(SINGLE_CLIENT) {}
23  virtual ~SingleClientTypedUrlsSyncTest() {}
24
25 private:
26  DISALLOW_COPY_AND_ASSIGN(SingleClientTypedUrlsSyncTest);
27};
28
29IN_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
49IN_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
71IN_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
101IN_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