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/i18n/number_formatting.h"
      6 #include "base/memory/scoped_vector.h"
      7 #include "base/strings/utf_string_conversions.h"
      8 #include "chrome/browser/history/history_types.h"
      9 #include "chrome/browser/sessions/session_service.h"
     10 #include "chrome/browser/sync/test/integration/profile_sync_service_harness.h"
     11 #include "chrome/browser/sync/test/integration/sync_test.h"
     12 #include "chrome/browser/sync/test/integration/typed_urls_helper.h"
     13 
     14 using typed_urls_helper::AddUrlToHistory;
     15 using typed_urls_helper::AwaitCheckAllProfilesHaveSameURLsAsVerifier;
     16 using typed_urls_helper::GetTypedUrlsFromClient;
     17 
     18 class MultipleClientTypedUrlsSyncTest : public SyncTest {
     19  public:
     20   MultipleClientTypedUrlsSyncTest() : SyncTest(MULTIPLE_CLIENT) {}
     21   virtual ~MultipleClientTypedUrlsSyncTest() {}
     22 
     23   virtual bool TestUsesSelfNotifications() OVERRIDE {
     24     return false;
     25   }
     26 
     27  private:
     28   DISALLOW_COPY_AND_ASSIGN(MultipleClientTypedUrlsSyncTest);
     29 };
     30 
     31 // TCM: 3728323
     32 IN_PROC_BROWSER_TEST_F(MultipleClientTypedUrlsSyncTest, AddToOne) {
     33   const base::string16 kHistoryUrl(
     34       base::ASCIIToUTF16("http://www.add-one-history.google.com/"));
     35   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
     36 
     37   // Populate one client with a URL, should sync to all others.
     38   GURL new_url(kHistoryUrl);
     39   AddUrlToHistory(0, new_url);
     40   history::URLRows urls = GetTypedUrlsFromClient(0);
     41   ASSERT_EQ(1U, urls.size());
     42   ASSERT_EQ(new_url, urls[0].url());
     43 
     44   // All clients should have this URL.
     45   ASSERT_TRUE(AwaitCheckAllProfilesHaveSameURLsAsVerifier());
     46 }
     47 
     48 IN_PROC_BROWSER_TEST_F(MultipleClientTypedUrlsSyncTest, AddToAll) {
     49   const base::string16 kHistoryUrl(
     50       base::ASCIIToUTF16("http://www.add-all-history.google.com/"));
     51   ASSERT_TRUE(SetupSync()) << "SetupSync() failed.";
     52 
     53   // Populate clients with the same URL.
     54   for (int i = 0; i < num_clients(); ++i) {
     55     history::URLRows urls = GetTypedUrlsFromClient(i);
     56     ASSERT_EQ(0U, urls.size());
     57 
     58     base::string16 unique_url = kHistoryUrl + base::FormatNumber(i);
     59     GURL new_url(unique_url);
     60     AddUrlToHistory(i, new_url);
     61 
     62     urls = GetTypedUrlsFromClient(i);
     63     ASSERT_EQ(1U, urls.size());
     64     ASSERT_EQ(new_url, urls[0].url());
     65   }
     66 
     67   // Verify that all clients have all urls.
     68   ASSERT_TRUE(AwaitCheckAllProfilesHaveSameURLsAsVerifier());
     69 }
     70