// 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. #include "chrome/browser/remoting/setup_flow_register_step.h" #include "chrome/browser/prefs/pref_service.h" #include "chrome/browser/profiles/profile.h" #include "chrome/browser/remoting/setup_flow_login_step.h" #include "chrome/browser/remoting/setup_flow_start_host_step.h" #include "chrome/common/pref_names.h" #include "grit/generated_resources.h" #include "ui/base/l10n/l10n_util.h" namespace remoting { SetupFlowRegisterStep::SetupFlowRegisterStep() { } SetupFlowRegisterStep::~SetupFlowRegisterStep() { } void SetupFlowRegisterStep::HandleMessage(const std::string& message, const Value* arg) { } void SetupFlowRegisterStep::Cancel() { // Don't need to do anything here. The request will be canceled when // |request_| is destroyed. } void SetupFlowRegisterStep::DoStart() { flow()->web_ui()->CallJavascriptFunction("showSettingUp"); request_.reset(new DirectoryAddRequest( flow()->profile()->GetRequestContext())); request_->AddHost(flow()->context()->host_info, flow()->context()->remoting_token, NewCallback(this, &SetupFlowRegisterStep::OnRequestDone)); } void SetupFlowRegisterStep::SetRemotingEnabled() { flow()->profile()->GetPrefs()->SetBoolean( prefs::kRemotingHasSetupCompleted, true); } void SetupFlowRegisterStep::OnRequestDone(DirectoryAddRequest::Result result, const std::string& error_message) { switch (result) { case DirectoryAddRequest::SUCCESS: SetRemotingEnabled(); FinishStep(new SetupFlowStartHostStep()); break; case DirectoryAddRequest::ERROR_EXISTS: SetRemotingEnabled(); LOG(INFO) << "Chromoting host is already registered."; FinishStep(new SetupFlowStartHostStep()); break; case DirectoryAddRequest::ERROR_AUTH: LOG(ERROR) << "Access denied by Chromoting Directory."; FinishStep(new SetupFlowLoginStep(l10n_util::GetStringUTF16( IDS_REMOTING_REGISTRATION_ACCESS_DENIED))); break; default: LOG(ERROR) << "Chromoting Host registration failed: " << error_message << " (" << result << ")"; FinishStep(new SetupFlowRegisterErrorStep()); break; } } SetupFlowRegisterErrorStep::SetupFlowRegisterErrorStep() { } SetupFlowRegisterErrorStep::~SetupFlowRegisterErrorStep() { } string16 SetupFlowRegisterErrorStep::GetErrorMessage() { return l10n_util::GetStringUTF16(IDS_REMOTING_REGISTRATION_FAILED_MESSAGE); } void SetupFlowRegisterErrorStep::Retry() { // When retrying we retry from the GetStatus step because it may be // necessary to start service process. FinishStep(new SetupFlowRegisterStep()); } } // namespace remoting