1// Copyright (c) 2011 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#include "chrome/browser/remoting/setup_flow_start_host_step.h" 6 7#include "chrome/browser/remoting/setup_flow_get_status_step.h" 8#include "chrome/browser/service/service_process_control.h" 9#include "chrome/browser/service/service_process_control_manager.h" 10#include "grit/generated_resources.h" 11#include "ui/base/l10n/l10n_util.h" 12 13namespace remoting { 14 15SetupFlowStartHostStep::SetupFlowStartHostStep() 16 : ALLOW_THIS_IN_INITIALIZER_LIST(task_factory_(this)), 17 status_requested_(false) { 18} 19 20SetupFlowStartHostStep::~SetupFlowStartHostStep() { 21 if (process_control_) 22 process_control_->RemoveMessageHandler(this); 23} 24 25void SetupFlowStartHostStep::HandleMessage(const std::string& message, 26 const Value* arg) { 27} 28 29void SetupFlowStartHostStep::Cancel() { 30 if (process_control_) 31 process_control_->RemoveMessageHandler(this); 32} 33 34void SetupFlowStartHostStep::OnRemotingHostInfo( 35 const remoting::ChromotingHostInfo& host_info) { 36 if (status_requested_) { 37 status_requested_ = false; 38 if (host_info.enabled) { 39 FinishStep(new SetupFlowDoneStep()); 40 } else { 41 FinishStep(new SetupFlowStartHostErrorStep()); 42 } 43 } 44} 45 46void SetupFlowStartHostStep::DoStart() { 47 flow()->web_ui()->CallJavascriptFunction("showSettingUp"); 48 49 process_control_ = 50 ServiceProcessControlManager::GetInstance()->GetProcessControl( 51 flow()->profile()); 52 if (!process_control_ || !process_control_->is_connected()) { 53 FinishStep(new SetupFlowStartHostErrorStep()); 54 } 55 56 process_control_->SetRemotingHostCredentials(flow()->context()->login, 57 flow()->context()->talk_token); 58 process_control_->EnableRemotingHost(); 59 RequestStatus(); 60} 61 62void SetupFlowStartHostStep::RequestStatus() { 63 DCHECK(!status_requested_); 64 65 if (!process_control_->RequestRemotingHostStatus()) { 66 FinishStep(new SetupFlowStartHostErrorStep()); 67 return; 68 } 69 70 status_requested_ = true; 71 process_control_->AddMessageHandler(this); 72} 73 74SetupFlowStartHostErrorStep::SetupFlowStartHostErrorStep() { } 75SetupFlowStartHostErrorStep::~SetupFlowStartHostErrorStep() { } 76 77string16 SetupFlowStartHostErrorStep::GetErrorMessage() { 78 return l10n_util::GetStringUTF16(IDS_REMOTING_SERVICE_PROCESS_FAILED_MESSAGE); 79} 80 81void SetupFlowStartHostErrorStep::Retry() { 82 // When retrying we retry from the GetStatus step because it may be 83 // necessary to start service process. 84 FinishStep(new SetupFlowGetStatusStep()); 85} 86 87} // namespace remoting 88