single_client_typed_urls_sync_test.cc revision 5d1f7b1de12d16ceb2c938c56701a3e8bfa558f7
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/test/integration/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  // Wait for sync and verify client did not change.
43  ASSERT_TRUE(GetClient(0)->AwaitCommitActivityCompletion());
44  AssertAllProfilesHaveSameURLsAsVerifier();
45}
46
47IN_PROC_BROWSER_TEST_F(SingleClientTypedUrlsSyncTest, TwoVisits) {
48  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
49  history::URLRows urls = GetTypedUrlsFromClient(0);
50  ASSERT_EQ(0U, urls.size());
51
52  GURL new_url(kSanityHistoryUrl);
53  // Adding twice should add two visits with distinct timestamps.
54  AddUrlToHistory(0, new_url);
55  AddUrlToHistory(0, new_url);
56
57  urls = GetTypedUrlsFromClient(0);
58  ASSERT_EQ(1U, urls.size());
59  ASSERT_EQ(new_url, urls[0].url());
60  AssertAllProfilesHaveSameURLsAsVerifier();
61
62  // Wait for sync and verify client did not change.
63  ASSERT_TRUE(GetClient(0)->AwaitCommitActivityCompletion());
64  AssertAllProfilesHaveSameURLsAsVerifier();
65}
66
67IN_PROC_BROWSER_TEST_F(SingleClientTypedUrlsSyncTest, DeleteTyped) {
68  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
69  history::URLRows urls = GetTypedUrlsFromClient(0);
70  ASSERT_EQ(0U, urls.size());
71
72  GURL new_url(kSanityHistoryUrl);
73  // Adding twice should add two visits with distinct timestamps.
74  AddUrlToHistory(0, new_url);
75  AddUrlToHistory(0, new_url);
76
77  urls = GetTypedUrlsFromClient(0);
78  ASSERT_EQ(1U, urls.size());
79  ASSERT_EQ(new_url, urls[0].url());
80  AssertAllProfilesHaveSameURLsAsVerifier();
81
82  // Wait for sync and verify client did not change.
83  ASSERT_TRUE(GetClient(0)->AwaitCommitActivityCompletion());
84  AssertAllProfilesHaveSameURLsAsVerifier();
85
86  // Now delete the URL we just added, wait for sync, and verify the deletion.
87  DeleteUrlFromHistory(0, new_url);
88  ASSERT_TRUE(GetClient(0)->AwaitCommitActivityCompletion());
89  urls = GetTypedUrlsFromClient(0);
90  ASSERT_EQ(0U, urls.size());
91  AssertAllProfilesHaveSameURLsAsVerifier();
92}
93
94IN_PROC_BROWSER_TEST_F(SingleClientTypedUrlsSyncTest, DeleteNonTyped) {
95  ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
96  history::URLRows urls = GetTypedUrlsFromClient(0);
97  ASSERT_EQ(0U, urls.size());
98
99  GURL new_url(kSanityHistoryUrl);
100  // Add a non-typed URL.
101  AddUrlToHistoryWithTransition(0, new_url, content::PAGE_TRANSITION_LINK,
102                                history::SOURCE_BROWSED);
103
104  urls = GetTypedUrlsFromClient(0);
105  ASSERT_EQ(0U, urls.size());
106  AssertAllProfilesHaveSameURLsAsVerifier();
107
108  // Wait for sync and verify client did not change.
109  ASSERT_TRUE(GetClient(0)->AwaitCommitActivityCompletion());
110  AssertAllProfilesHaveSameURLsAsVerifier();
111
112  // Now delete the URL we just added, wait for sync and verify the deletion.
113  DeleteUrlFromHistory(0, new_url);
114  ASSERT_TRUE(GetClient(0)->AwaitCommitActivityCompletion());
115  urls = GetTypedUrlsFromClient(0);
116  ASSERT_EQ(0U, urls.size());
117  AssertAllProfilesHaveSameURLsAsVerifier();
118}
119