1// Copyright 2014 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#ifndef CHROME_BROWSER_CHROMEOS_LOGIN_SIGNIN_MERGE_SESSION_XHR_REQUEST_WAITER_H_ 6#define CHROME_BROWSER_CHROMEOS_LOGIN_SIGNIN_MERGE_SESSION_XHR_REQUEST_WAITER_H_ 7 8#include "chrome/browser/chromeos/login/signin/merge_session_xhr_request_waiter.h" 9 10#include "base/bind.h" 11#include "base/lazy_instance.h" 12#include "base/logging.h" 13#include "base/memory/weak_ptr.h" 14#include "chrome/browser/chromeos/login/signin/merge_session_throttle.h" 15#include "chrome/browser/chromeos/login/signin/oauth2_login_manager.h" 16#include "chrome/browser/chromeos/login/signin/oauth2_login_manager_factory.h" 17 18class Profile; 19 20namespace chromeos { 21 22class MergeSessionXHRRequestWaiter : public OAuth2LoginManager::Observer { 23 public: 24 MergeSessionXHRRequestWaiter( 25 Profile* profile, 26 const MergeSessionThrottle::CompletionCallback& callback); 27 virtual ~MergeSessionXHRRequestWaiter(); 28 29 // Starts waiting for merge session completion for |profile_|. 30 void StartWaiting(); 31 32 private: 33 // OAuth2LoginManager::Observer overrides. 34 virtual void OnSessionRestoreStateChanged( 35 Profile* user_profile, 36 OAuth2LoginManager::SessionRestoreState state) OVERRIDE; 37 38 // Timeout callback. 39 void OnTimeout(); 40 41 // Notifies callback that waiting is done. 42 void NotifyBlockingDone(); 43 44 Profile* profile_; 45 MergeSessionThrottle::CompletionCallback callback_; 46 base::WeakPtrFactory<MergeSessionXHRRequestWaiter> weak_ptr_factory_; 47 48 DISALLOW_COPY_AND_ASSIGN(MergeSessionXHRRequestWaiter); 49}; 50 51} // namespace chromeos 52 53#endif // CHROME_BROWSER_CHROMEOS_LOGIN_SIGNIN_MERGE_SESSION_XHR_REQUEST_WAITER_H_ 54