// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef CHROME_BROWSER_REMOTING_SETUP_FLOW_GET_STATUS_STEP_H_ #define CHROME_BROWSER_REMOTING_SETUP_FLOW_GET_STATUS_STEP_H_ #include "chrome/browser/remoting/setup_flow.h" #include "chrome/browser/service/service_process_control.h" #include "chrome/common/net/gaia/gaia_auth_consumer.h" #include "chrome/common/net/gaia/gaia_auth_fetcher.h" namespace remoting { // SetupFlowGetStatusStep requests current host information from the service // process. It also starts service process if necessary. class SetupFlowGetStatusStep : public SetupFlowStepBase, public ServiceProcessControl::MessageHandler { public: SetupFlowGetStatusStep(); virtual ~SetupFlowGetStatusStep(); // SetupFlowStep implementation. virtual void HandleMessage(const std::string& message, const Value* arg); virtual void Cancel(); // ServiceProcessControl::MessageHandler interface virtual void OnRemotingHostInfo( const remoting::ChromotingHostInfo& host_info); protected: virtual void DoStart(); private: void LaunchServiceProcess(); void OnServiceProcessLaunched(); void RequestStatus(); ScopedRunnableMethodFactory<SetupFlowGetStatusStep> task_factory_; ServiceProcessControl* process_control_; bool status_requested_; DISALLOW_COPY_AND_ASSIGN(SetupFlowGetStatusStep); }; class SetupFlowGetStatusErrorStep : public SetupFlowErrorStepBase { public: SetupFlowGetStatusErrorStep(); virtual ~SetupFlowGetStatusErrorStep(); protected: virtual string16 GetErrorMessage(); virtual void Retry(); private: DISALLOW_COPY_AND_ASSIGN(SetupFlowGetStatusErrorStep); }; } // namespace remoting #endif // CHROME_BROWSER_REMOTING_SETUP_FLOW_GET_STATUS_STEP_H_