172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Copyright (c) 2011 The Chromium Authors. All rights reserved. 272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// Use of this source code is governed by a BSD-style license that can be 372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// found in the LICENSE file. 472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/remoting/remoting_options_handler.h" 672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/utf_string_conversions.h" 872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "base/values.h" 9ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/prefs/pref_service.h" 10ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/browser/profiles/profile.h" 1172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "chrome/browser/service/service_process_control_manager.h" 12ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen#include "chrome/common/pref_names.h" 13dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "chrome/common/remoting/chromoting_host_info.h" 14dc0f95d653279beabeb9817299e2902918ba123eKristian Monsen#include "content/browser/webui/web_ui.h" 1572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "grit/generated_resources.h" 1672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen#include "ui/base/l10n/l10n_util.h" 1772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 1872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsennamespace remoting { 1972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenRemotingOptionsHandler::RemotingOptionsHandler() 2172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen : web_ui_(NULL), 2272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen process_control_(NULL) { 2372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 2472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 2572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian MonsenRemotingOptionsHandler::~RemotingOptionsHandler() { 2672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen if (process_control_) 2772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen process_control_->RemoveMessageHandler(this); 2872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 2972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid RemotingOptionsHandler::Init(WebUI* web_ui) { 3172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_ = web_ui; 3272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen process_control_ = 3472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen ServiceProcessControlManager::GetInstance()->GetProcessControl( 3572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen web_ui_->GetProfile()); 3672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen process_control_->AddMessageHandler(this); 3772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 3872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen if (!process_control_->RequestRemotingHostStatus()) { 3972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen // Assume that host is not started if we can't request status. 4072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen SetStatus(false, ""); 4172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } 42ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->GetProfile()->GetPrefs()->SetBoolean( 43ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen prefs::kRemotingHasSetupCompleted, false); 4472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 4572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 4672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen// ServiceProcessControl::MessageHandler interface 4772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid RemotingOptionsHandler::OnRemotingHostInfo( 4872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen const remoting::ChromotingHostInfo& host_info) { 4972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen SetStatus(host_info.enabled, host_info.login); 5072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 5172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 5272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsenvoid RemotingOptionsHandler::SetStatus( 5372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen bool enabled, const std::string& login) { 5472a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen string16 status; 5572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen if (enabled) { 5672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen status = l10n_util::GetStringFUTF16(IDS_REMOTING_STATUS_ENABLED_TEXT, 5772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen UTF8ToUTF16(login)); 5872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } else { 5972a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen status = l10n_util::GetStringUTF16(IDS_REMOTING_STATUS_DISABLED_TEXT); 6072a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen } 6172a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 6272a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen FundamentalValue enabled_value(enabled); 6372a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen StringValue status_value(status); 64ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen web_ui_->CallJavascriptFunction("options.AdvancedOptions.SetRemotingStatus", 6572a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen enabled_value, status_value); 6672a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} 6772a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen 6872a454cd3513ac24fbdd0e0cb9ad70b86a99b801Kristian Monsen} // namespace remoting 69