Index: remoting/host/setup/linux/linux_host_setup_wizard.cc |
diff --git a/remoting/host/setup/linux/linux_host_setup_wizard.cc b/remoting/host/setup/linux/linux_host_setup_wizard.cc |
deleted file mode 100644 |
index 98dde3bfe7864a96922b5ff86f23bdbb76225732..0000000000000000000000000000000000000000 |
--- a/remoting/host/setup/linux/linux_host_setup_wizard.cc |
+++ /dev/null |
@@ -1,308 +0,0 @@ |
-// Copyright (c) 2012 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 <gdk/gdk.h> |
-#include <gtk/gtk.h> |
-#include <webkit/webkitwebview.h> |
- |
-#include "base/at_exit.h" |
-#include "base/basictypes.h" |
-#include "base/command_line.h" |
-#include "base/message_loop.h" |
-#include "base/run_loop.h" |
-#include "base/threading/thread.h" |
-#include "net/base/net_util.h" |
-#include "remoting/base/common_resources.h" |
-#include "remoting/base/resources.h" |
-#include "remoting/base/string_resources.h" |
-#include "remoting/host/setup/host_starter.h" |
-#include "remoting/host/setup/oauth_helper.h" |
-#include "remoting/host/setup/pin_validator.h" |
-#include "remoting/host/url_request_context.h" |
-#include "ui/base/gtk/gtk_signal.h" |
-#include "ui/base/gtk/scoped_gobject.h" |
-#include "ui/base/l10n/l10n_util.h" |
-#include "ui/base/resource/resource_bundle.h" |
-#include "ui/base/ui_base_paths.h" |
- |
-namespace remoting { |
- |
-class LinuxHostSetupWizard { |
- public: |
- enum Pages { |
- kAuthPage = 0, |
- kPinPage = 1, |
- kProgressPage = 2, |
- kStartedPage = 3, |
- kErrorPage = 4, |
- kStoppedPage = 5, |
- }; |
- |
- LinuxHostSetupWizard(); |
- ~LinuxHostSetupWizard(); |
- |
- void Init(); |
- void Run(); |
- |
- private: |
- CHROMEGTK_CALLBACK_1(LinuxHostSetupWizard, gboolean, OnDelete, GdkEvent*); |
- CHROMEGTK_CALLBACK_1(LinuxHostSetupWizard, void, OnAuthUriChanged, |
- GParamSpec*); |
- CHROMEGTK_CALLBACK_0(LinuxHostSetupWizard, void, OnPinOkClicked); |
- |
- GtkWidget* AddPage(int expected_index); |
- GtkWidget* AddTextFieldWithLabel(GtkContainer* container, |
- const std::string& message); |
- void AddButtonsBox(GtkContainer* container, GCallback ok_callback); |
- |
- void ShowAuthenticationPrompt(); |
- void ShowProgressMessage(const std::string& message); |
- void ShowErrorMessage(const std::string& message); |
- |
- void ShowMessageBox(const std::string& message); |
- |
- void OnHostStarted(HostStarter::Result result); |
- |
- MessageLoopForUI main_message_loop_; |
- base::RunLoop run_loop_; |
- |
- scoped_ptr<base::Thread> io_thread_; |
- |
- scoped_refptr<URLRequestContextGetter> url_context_getter_; |
- |
- GtkWidget* main_window_; |
- GtkWidget* notebook_; |
- |
- // TODO(sergeyu): Replace auth code with authentication. |
- GtkWidget* auth_web_view_; |
- GtkWidget* pin_entry_; |
- GtkWidget* pin_repeat_entry_; |
- GtkWidget* progress_message_; |
- GtkWidget* error_message_; |
- |
- std::string auth_code_; |
- |
- scoped_ptr<HostStarter> starter_; |
- |
- DISALLOW_COPY_AND_ASSIGN(LinuxHostSetupWizard); |
-}; |
- |
-LinuxHostSetupWizard::LinuxHostSetupWizard() { |
-} |
- |
-LinuxHostSetupWizard::~LinuxHostSetupWizard() { |
- gtk_widget_destroy(main_window_); |
-} |
- |
-void LinuxHostSetupWizard::Init() { |
- io_thread_.reset(new base::Thread("IOThread")); |
- io_thread_->StartWithOptions( |
- base::Thread::Options(MessageLoop::TYPE_IO, 0)); |
- |
- url_context_getter_ = new URLRequestContextGetter( |
- main_message_loop_.message_loop_proxy(), |
- io_thread_->message_loop_proxy()); |
- |
- main_window_ = gtk_window_new(GTK_WINDOW_TOPLEVEL); |
- g_signal_connect(main_window_, "delete-event", |
- G_CALLBACK(OnDeleteThunk), this); |
- gtk_window_set_title( |
- GTK_WINDOW(main_window_), |
- l10n_util::GetStringUTF8(IDR_PRODUCT_NAME).c_str()); |
- gtk_window_set_resizable(GTK_WINDOW(main_window_), FALSE); |
- |
- gfx::Image logo = ui::ResourceBundle::GetSharedInstance().GetImageNamed( |
- IDR_PRODUCT_LOGO_32); |
- ui::ScopedGObject<GdkPixbuf>::Type pixbuf(logo.ToGdkPixbuf()); |
- gtk_window_set_icon(GTK_WINDOW(main_window_), pixbuf.get()); |
- |
- notebook_ = gtk_notebook_new(); |
- gtk_container_add(GTK_CONTAINER(main_window_), notebook_); |
- gtk_notebook_set_show_tabs(GTK_NOTEBOOK(notebook_), FALSE); |
- gtk_notebook_set_show_border(GTK_NOTEBOOK(notebook_), FALSE); |
- |
- GtkWidget* auth_page = AddPage(kAuthPage); |
- auth_web_view_ = webkit_web_view_new(); |
- gtk_container_add(GTK_CONTAINER(auth_page), auth_web_view_); |
- g_signal_connect(auth_web_view_, "notify::uri", |
- G_CALLBACK(OnAuthUriChangedThunk), this); |
- |
- GtkWidget* pin_page = AddPage(kPinPage); |
- pin_entry_ = AddTextFieldWithLabel( |
- GTK_CONTAINER(pin_page), |
- l10n_util::GetStringUTF8(IDR_ASK_PIN_DIALOG_LABEL)); |
- pin_repeat_entry_ = AddTextFieldWithLabel( |
- GTK_CONTAINER(pin_page), |
- l10n_util::GetStringUTF8(IDR_ASK_PIN_DIALOG_CONFIRM_LABEL)); |
- AddButtonsBox(GTK_CONTAINER(pin_page), G_CALLBACK(OnPinOkClickedThunk)); |
- |
- GtkWidget* progress_page = AddPage(kProgressPage); |
- progress_message_ = gtk_label_new(""); |
- gtk_container_add(GTK_CONTAINER(progress_page), progress_message_); |
- |
- GtkWidget* started_page = AddPage(kStartedPage); |
- GtkWidget* started_message = gtk_label_new( |
- l10n_util::GetStringUTF8(IDR_HOST_SETUP_STARTED).c_str()); |
- gtk_container_add(GTK_CONTAINER(started_page), started_message); |
- |
- GtkWidget* error_page = AddPage(kErrorPage); |
- error_message_ = gtk_label_new(""); |
- gtk_container_add(GTK_CONTAINER(error_page), error_message_); |
- |
- GtkWidget* stopped_page = AddPage(kStoppedPage); |
- GtkWidget* stopped_message = gtk_label_new( |
- l10n_util::GetStringUTF8(IDR_HOST_NOT_STARTED).c_str()); |
- gtk_container_add(GTK_CONTAINER(stopped_page), stopped_message); |
- |
- gtk_widget_show_all(main_window_); |
- |
- ShowAuthenticationPrompt(); |
-} |
- |
-void LinuxHostSetupWizard::Run() { |
- gtk_widget_show_all(main_window_); |
- run_loop_.Run(); |
-} |
- |
-GtkWidget* LinuxHostSetupWizard::AddPage(int expected_index) { |
- GtkWidget* page = gtk_vbox_new(FALSE, 8); |
- |
- int page_index = |
- gtk_notebook_append_page(GTK_NOTEBOOK(notebook_), page, NULL); |
- DCHECK_EQ(page_index, expected_index); |
- |
- return page; |
-} |
- |
-GtkWidget* LinuxHostSetupWizard::AddTextFieldWithLabel( |
- GtkContainer* container, |
- const std::string& message) { |
- GtkWidget* box = gtk_hbox_new(FALSE, 8); |
- gtk_container_add(container, box); |
- |
- GtkWidget* label = gtk_label_new(message.c_str()); |
- gtk_container_add(GTK_CONTAINER(box), label); |
- |
- GtkWidget* entry = gtk_entry_new(); |
- gtk_container_add(GTK_CONTAINER(box), entry); |
- |
- return entry; |
-} |
- |
-void LinuxHostSetupWizard::AddButtonsBox(GtkContainer* container, |
- GCallback ok_callback) { |
- GtkWidget* box = gtk_hbox_new(FALSE, 8); |
- gtk_container_add(container, box); |
- |
- GtkWidget* button = |
- gtk_button_new_with_label(l10n_util::GetStringUTF8(IDR_OK).c_str()); |
- gtk_container_add(GTK_CONTAINER(box), button); |
- g_signal_connect(button, "clicked", ok_callback, this); |
-} |
- |
-void LinuxHostSetupWizard::ShowAuthenticationPrompt() { |
- std::string url = GetOauthStartUrl(GetDefaultOauthRedirectUrl()); |
- webkit_web_view_load_uri(WEBKIT_WEB_VIEW(auth_web_view_), url.c_str()); |
- gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook_), kAuthPage); |
-} |
- |
-void LinuxHostSetupWizard::ShowProgressMessage(const std::string& message) { |
- gtk_label_set_text(GTK_LABEL(progress_message_), message.c_str()); |
- gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook_), kProgressPage); |
-} |
- |
-void LinuxHostSetupWizard::ShowErrorMessage(const std::string& message) { |
- gtk_label_set_text(GTK_LABEL(error_message_), message.c_str()); |
- gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook_), kErrorPage); |
-} |
- |
-void LinuxHostSetupWizard::ShowMessageBox(const std::string& message) { |
- GtkWidget* dialog = gtk_message_dialog_new( |
- GTK_WINDOW(main_window_), static_cast<GtkDialogFlags>( |
- GTK_DIALOG_MODAL | GTK_DIALOG_DESTROY_WITH_PARENT), |
- GTK_MESSAGE_ERROR, GTK_BUTTONS_OK, "%s", message.c_str()); |
- g_signal_connect(dialog, "response", G_CALLBACK(gtk_widget_destroy), NULL); |
- gtk_widget_show_all(dialog); |
-} |
- |
-gboolean LinuxHostSetupWizard::OnDelete(GtkWidget* window, GdkEvent* event) { |
- run_loop_.Quit(); |
- return TRUE; |
-} |
- |
-void LinuxHostSetupWizard::OnAuthUriChanged(GtkWidget* web_view, |
- GParamSpec* param_spec) { |
- std::string url(webkit_web_view_get_uri(WEBKIT_WEB_VIEW(auth_web_view_))); |
- std::string auth_code = GetOauthCodeInUrl(url, GetDefaultOauthRedirectUrl()); |
- if (!auth_code.empty()) { |
- auth_code_ = auth_code; |
- gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook_), kPinPage); |
- } |
-} |
- |
-void LinuxHostSetupWizard::OnPinOkClicked(GtkWidget* button) { |
- std::string host_name = net::GetHostName(); |
- std::string pin = gtk_entry_get_text(GTK_ENTRY(pin_entry_)); |
- std::string pin_repeat = gtk_entry_get_text(GTK_ENTRY(pin_repeat_entry_)); |
- |
- if (!IsPinValid(pin)) { |
- ShowMessageBox(l10n_util::GetStringUTF8(IDR_INVALID_PIN)); |
- return; |
- } |
- |
- if (pin != pin_repeat) { |
- ShowMessageBox(l10n_util::GetStringUTF8(IDR_PINS_NOT_EQUAL)); |
- return; |
- } |
- |
- starter_ = HostStarter::Create(url_context_getter_.get()); |
- |
- starter_->StartHost(host_name, pin, false, auth_code_, |
- GetDefaultOauthRedirectUrl(), |
- base::Bind(&LinuxHostSetupWizard::OnHostStarted, |
- base::Unretained(this))); |
- ShowProgressMessage(l10n_util::GetStringUTF8(IDR_HOST_SETUP_STARTING)); |
-} |
- |
-void LinuxHostSetupWizard::OnHostStarted(HostStarter::Result result) { |
- switch (result) { |
- case HostStarter::START_COMPLETE: |
- gtk_notebook_set_current_page(GTK_NOTEBOOK(notebook_), kStartedPage); |
- break; |
- |
- case HostStarter::NETWORK_ERROR: |
- case HostStarter::OAUTH_ERROR: |
- ShowErrorMessage(l10n_util::GetStringUTF8( |
- IDR_HOST_SETUP_REGISTRATION_FAILED)); |
- break; |
- |
- case HostStarter::START_ERROR: |
- ShowErrorMessage(l10n_util::GetStringUTF8(IDR_HOST_SETUP_HOST_FAILED)); |
- break; |
- } |
-} |
- |
-} // namespace remoting |
- |
-int main(int argc, char** argv) { |
- CommandLine::Init(argc, argv); |
- base::AtExitManager at_exit_manager; |
- ui::RegisterPathProvider(); |
- |
- remoting::LoadResources(std::string()); |
- |
- InitLogging(NULL, |
- logging::LOG_ONLY_TO_SYSTEM_DEBUG_LOG, |
- logging::DONT_LOCK_LOG_FILE, |
- logging::APPEND_TO_OLD_LOG_FILE, |
- logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS); |
- |
- gtk_init(&argc, &argv); |
- |
- remoting::LinuxHostSetupWizard setup_ui; |
- setup_ui.Init(); |
- setup_ui.Run(); |
- |
- return 0; |
-} |