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/remoting_options_handler.h" 6 7#include "base/utf_string_conversions.h" 8#include "base/values.h" 9#include "chrome/browser/prefs/pref_service.h" 10#include "chrome/browser/profiles/profile.h" 11#include "chrome/browser/service/service_process_control_manager.h" 12#include "chrome/common/pref_names.h" 13#include "chrome/common/remoting/chromoting_host_info.h" 14#include "content/browser/webui/web_ui.h" 15#include "grit/generated_resources.h" 16#include "ui/base/l10n/l10n_util.h" 17 18namespace remoting { 19 20RemotingOptionsHandler::RemotingOptionsHandler() 21 : web_ui_(NULL), 22 process_control_(NULL) { 23} 24 25RemotingOptionsHandler::~RemotingOptionsHandler() { 26 if (process_control_) 27 process_control_->RemoveMessageHandler(this); 28} 29 30void RemotingOptionsHandler::Init(WebUI* web_ui) { 31 web_ui_ = web_ui; 32 33 process_control_ = 34 ServiceProcessControlManager::GetInstance()->GetProcessControl( 35 web_ui_->GetProfile()); 36 process_control_->AddMessageHandler(this); 37 38 if (!process_control_->RequestRemotingHostStatus()) { 39 // Assume that host is not started if we can't request status. 40 SetStatus(false, ""); 41 } 42 web_ui_->GetProfile()->GetPrefs()->SetBoolean( 43 prefs::kRemotingHasSetupCompleted, false); 44} 45 46// ServiceProcessControl::MessageHandler interface 47void RemotingOptionsHandler::OnRemotingHostInfo( 48 const remoting::ChromotingHostInfo& host_info) { 49 SetStatus(host_info.enabled, host_info.login); 50} 51 52void RemotingOptionsHandler::SetStatus( 53 bool enabled, const std::string& login) { 54 string16 status; 55 if (enabled) { 56 status = l10n_util::GetStringFUTF16(IDS_REMOTING_STATUS_ENABLED_TEXT, 57 UTF8ToUTF16(login)); 58 } else { 59 status = l10n_util::GetStringUTF16(IDS_REMOTING_STATUS_DISABLED_TEXT); 60 } 61 62 FundamentalValue enabled_value(enabled); 63 StringValue status_value(status); 64 web_ui_->CallJavascriptFunction("options.AdvancedOptions.SetRemotingStatus", 65 enabled_value, status_value); 66} 67 68} // namespace remoting 69