single_client_typed_urls_sync_test.cc revision effb81e5f8246d0db0270817048dc992db66e9fb
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_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
13using sync_integration_test_util::AwaitCommitActivityCompletion;
14using typed_urls_helper::AddUrlToHistory;
15using typed_urls_helper::AddUrlToHistoryWithTransition;
16using typed_urls_helper::AssertAllProfilesHaveSameURLsAsVerifier;
17using typed_urls_helper::DeleteUrlFromHistory;
18using typed_urls_helper::GetTypedUrlsFromClient;
19
20const std::string kSanityHistoryUrl = "http://www.sanity-history.google.com";
21
22class SingleClientTypedUrlsSyncTest : public SyncTest {
23 public:
24  SingleClientTypedUrlsSyncTest() : SyncTest(SINGLE_CLIENT) {}
25  virtual ~SingleClientTypedUrlsSyncTest() {}
26
27 private:
28  DISALLOW_COPY_AND_ASSIGN(SingleClientTypedUrlsSyncTest);
29};
30
31IN_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  AssertAllProfilesHaveSameURLsAsVerifier();
43
44  // Wait for sync and verify client did not change.
45  ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(0)->service()));
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  // Wait for sync and verify client did not change.
65  ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(0)->service()));
66  AssertAllProfilesHaveSameURLsAsVerifier();
67}
68
69IN_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  AssertAllProfilesHaveSameURLsAsVerifier();
83
84  // Wait for sync and verify client did not change.
85  ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(0)->service()));
86  AssertAllProfilesHaveSameURLsAsVerifier();
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(GetClient(0)->service()));
91  urls = GetTypedUrlsFromClient(0);
92  ASSERT_EQ(0U, urls.size());
93  AssertAllProfilesHaveSameURLsAsVerifier();
94}
95
96IN_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  AssertAllProfilesHaveSameURLsAsVerifier();
109
110  // Wait for sync and verify client did not change.
111  ASSERT_TRUE(AwaitCommitActivityCompletion(GetClient(0)->service()));
112  AssertAllProfilesHaveSameURLsAsVerifier();
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(GetClient(0)->service()));
117  urls = GetTypedUrlsFromClient(0);
118  ASSERT_EQ(0U, urls.size());
119  AssertAllProfilesHaveSameURLsAsVerifier();
120}
121