1e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved. 2e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// Use of this source code is governed by a BSD-style license that can be 3e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch// found in the LICENSE file. 4e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 5e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "chrome/browser/sync/test/integration/multi_client_status_change_checker.h" 6e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 7e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "base/logging.h" 8e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "base/scoped_observer.h" 9e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch#include "chrome/browser/sync/profile_sync_service.h" 10e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 11e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochMultiClientStatusChangeChecker::MultiClientStatusChangeChecker( 12e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch std::vector<ProfileSyncService*> services) 13cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) : services_(services) {} 14e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 15e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen MurdochMultiClientStatusChangeChecker::~MultiClientStatusChangeChecker() {} 16e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 17e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochvoid MultiClientStatusChangeChecker::Wait() { 18e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch DVLOG(1) << "Await: " << GetDebugMessage(); 19e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 20e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch if (IsExitConditionSatisfied()) { 21e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch DVLOG(1) << "Await -> Exit before waiting: " << GetDebugMessage(); 22e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch return; 23e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 24e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 25e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch ScopedObserver<ProfileSyncService, MultiClientStatusChangeChecker> obs(this); 26e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch for (std::vector<ProfileSyncService*>::iterator it = services_.begin(); 27e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch it != services_.end(); ++it) { 28e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch obs.Add(*it); 29e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch } 30e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 31cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) StartBlockingWait(); 32e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 33e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch 34e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdochvoid MultiClientStatusChangeChecker::OnStateChanged() { 35cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) CheckExitCondition(); 36e5d81f57cb97b3b6b7fccc9c5610d21eb81db09dBen Murdoch} 37