13f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 23f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// Use of this source code is governed by a BSD-style license that can be 33f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// found in the LICENSE file. 43f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 53f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#ifndef CHROME_BROWSER_REMOTING_SETUP_FLOW_GET_STATUS_STEP_H_ 63f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#define CHROME_BROWSER_REMOTING_SETUP_FLOW_GET_STATUS_STEP_H_ 73f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 83f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "chrome/browser/remoting/setup_flow.h" 93f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "chrome/browser/service/service_process_control.h" 103f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "chrome/common/net/gaia/gaia_auth_consumer.h" 113f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#include "chrome/common/net/gaia/gaia_auth_fetcher.h" 123f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 133f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsennamespace remoting { 143f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 153f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// SetupFlowGetStatusStep requests current host information from the service 163f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen// process. It also starts service process if necessary. 173f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenclass SetupFlowGetStatusStep : public SetupFlowStepBase, 183f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen public ServiceProcessControl::MessageHandler { 193f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen public: 203f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen SetupFlowGetStatusStep(); 213f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual ~SetupFlowGetStatusStep(); 223f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 233f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen // SetupFlowStep implementation. 243f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual void HandleMessage(const std::string& message, const Value* arg); 253f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual void Cancel(); 263f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 273f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen // ServiceProcessControl::MessageHandler interface 283f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual void OnRemotingHostInfo( 293f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen const remoting::ChromotingHostInfo& host_info); 303f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 313f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen protected: 323f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual void DoStart(); 333f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 343f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen private: 353f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen void LaunchServiceProcess(); 363f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen void OnServiceProcessLaunched(); 373f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen void RequestStatus(); 383f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 393f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ScopedRunnableMethodFactory<SetupFlowGetStatusStep> task_factory_; 403f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen ServiceProcessControl* process_control_; 413f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen bool status_requested_; 423f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 433f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen DISALLOW_COPY_AND_ASSIGN(SetupFlowGetStatusStep); 443f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen}; 453f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 463f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsenclass SetupFlowGetStatusErrorStep : public SetupFlowErrorStepBase { 473f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen public: 483f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen SetupFlowGetStatusErrorStep(); 493f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual ~SetupFlowGetStatusErrorStep(); 503f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 513f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen protected: 523f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual string16 GetErrorMessage(); 533f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen virtual void Retry(); 543f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 553f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen private: 563f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen DISALLOW_COPY_AND_ASSIGN(SetupFlowGetStatusErrorStep); 573f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen}; 583f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 593f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen} // namespace remoting 603f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen 613f50c38dc070f4bb515c1b64450dae14f316474eKristian Monsen#endif // CHROME_BROWSER_REMOTING_SETUP_FLOW_GET_STATUS_STEP_H_ 62