multiple_client_typed_urls_sync_test.cc revision a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7
123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)// found in the LICENSE file. 423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/i18n/number_formatting.h" 623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/memory/scoped_vector.h" 723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "base/strings/utf_string_conversions.h" 823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/history/history_types.h" 923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/sessions/session_service.h" 1023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/sync/profile_sync_service_harness.h" 1123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/sync/test/integration/sync_test.h" 1223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)#include "chrome/browser/sync/test/integration/typed_urls_helper.h" 1323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)using typed_urls_helper::AddUrlToHistory; 15a02191e04bc25c4935f804f2c080ae28663d096dBen Murdochusing typed_urls_helper::AssertAllProfilesHaveSameURLsAsVerifier; 1623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)using typed_urls_helper::GetTypedUrlsFromClient; 1723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 1823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)class MultipleClientTypedUrlsSyncTest : public SyncTest { 1923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) public: 2023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) MultipleClientTypedUrlsSyncTest() : SyncTest(MULTIPLE_CLIENT) {} 2123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) virtual ~MultipleClientTypedUrlsSyncTest() {} 2223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 2323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) private: 2423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(MultipleClientTypedUrlsSyncTest); 2523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)}; 260de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 270de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles)// TCM: 3728323 2823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MultipleClientTypedUrlsSyncTest, AddToOne) { 2923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const base::string16 kHistoryUrl( 3023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASCIIToUTF16("http://www.add-one-history.google.com/")); 3123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 3223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 3323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Populate one client with a URL, should sync to all others. 3423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) GURL new_url(kHistoryUrl); 3523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) AddUrlToHistory(0, new_url); 3623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) history::URLRows urls = GetTypedUrlsFromClient(0); 3723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ(1U, urls.size()); 380de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) ASSERT_EQ(new_url, urls[0].url()); 3923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 4023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Let sync finish. 410de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) ASSERT_TRUE(GetClient(0)->AwaitGroupSyncCycleCompletion(clients())); 420de6073388f4e2780db8536178b129cd8f6ab386Torne (Richard Coles) 4323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // All clients should have this URL. 4423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) AssertAllProfilesHaveSameURLsAsVerifier(); 4523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 4623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 4723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)IN_PROC_BROWSER_TEST_F(MultipleClientTypedUrlsSyncTest, AddToAll) { 4823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) const base::string16 kHistoryUrl( 4923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASCIIToUTF16("http://www.add-all-history.google.com/")); 50a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch ASSERT_TRUE(SetupSync()) << "SetupSync() failed."; 51a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch 5223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Populate clients with the same URL. 5323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) for (int i = 0; i < num_clients(); ++i) { 5423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) history::URLRows urls = GetTypedUrlsFromClient(i); 5523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ(0U, urls.size()); 5623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 5723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) base::string16 unique_url = kHistoryUrl + base::FormatNumber(i); 5823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) GURL new_url(unique_url); 5923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) AddUrlToHistory(i, new_url); 6023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 6123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) urls = GetTypedUrlsFromClient(i); 6223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ(1U, urls.size()); 6323730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_EQ(new_url, urls[0].url()); 6423730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) } 6523730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 6623730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Wait for sync. 6723730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) ASSERT_TRUE(AwaitQuiescence()); 6823730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) 6923730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) // Verify that all clients have all urls. 7023730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles) AssertAllProfilesHaveSameURLsAsVerifier(); 7123730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)} 7223730a6e56a168d1879203e4b3819bb36e3d8f1fTorne (Richard Coles)