Home | History | Annotate | Download | only in integration
      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