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.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 
     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;
     19 
     20 const std::string kSanityHistoryUrl = "http://www.sanity-history.google.com";
     21 
     22 class SingleClientTypedUrlsSyncTest : public SyncTest {
     23  public:
     24   SingleClientTypedUrlsSyncTest() : SyncTest(SINGLE_CLIENT) {}
     25   virtual ~SingleClientTypedUrlsSyncTest() {}
     26 
     27  private:
     28   DISALLOW_COPY_AND_ASSIGN(SingleClientTypedUrlsSyncTest);
     29 };
     30 
     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());
     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   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
     43 
     44   // Wait for sync and verify client did not change.
     45   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
     46   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
     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   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
     63 
     64   // Wait for sync and verify client did not change.
     65   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
     66   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
     67 }
     68 
     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());
     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   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
     83 
     84   // Wait for sync and verify client did not change.
     85   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
     86   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
     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(GetSyncService((0))));
     91   urls = GetTypedUrlsFromClient(0);
     92   ASSERT_EQ(0U, urls.size());
     93   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
     94 }
     95 
     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());
    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   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
    109 
    110   // Wait for sync and verify client did not change.
    111   ASSERT_TRUE(AwaitCommitActivityCompletion(GetSyncService((0))));
    112   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
    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(GetSyncService((0))));
    117   urls = GetTypedUrlsFromClient(0);
    118   ASSERT_EQ(0U, urls.size());
    119   ASSERT_TRUE(CheckAllProfilesHaveSameURLsAsVerifier());
    120 }
    121