Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1039)

Unified Diff: remoting/host/remoting_me2me_host.cc

Issue 10384127: Chromoting: the Me2me host now presents a notification on the console allowing a user to disconnect… (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: remoting/host/remoting_me2me_host.cc
diff --git a/remoting/host/remoting_me2me_host.cc b/remoting/host/remoting_me2me_host.cc
index cf732e3faaf3f8eb82219ca72b0d124afdfe817d..eaa12453d9edac174f6cc4278eb79b56b90a35d0 100644
--- a/remoting/host/remoting_me2me_host.cc
+++ b/remoting/host/remoting_me2me_host.cc
@@ -4,10 +4,6 @@
//
// This file implements a standalone host process for Me2Me.
-#if defined(OS_WIN)
-#include <windows.h>
-#endif
-
#include <string>
#include "base/at_exit.h"
@@ -36,6 +32,7 @@
#include "remoting/host/heartbeat_sender.h"
#include "remoting/host/host_config.h"
#include "remoting/host/host_event_logger.h"
+#include "remoting/host/host_user_interface.h"
#include "remoting/host/json_host_config.h"
#include "remoting/host/log_to_server.h"
#include "remoting/host/policy_hack/nat_policy.h"
@@ -46,6 +43,10 @@
#if defined(OS_MACOSX)
#include "remoting/host/sighup_listener_mac.h"
#endif
+// N.B. OS_WIN is defined by including src/base headers.
+#if defined(OS_WIN)
+#include <commctrl.h>
+#endif
#if defined(TOOLKIT_GTK)
#include "ui/gfx/gtk_util.h"
#endif
@@ -198,6 +199,10 @@ class HostProcess
return kInvalidHostConfigurationExitCode;
}
+#if defined(OS_WIN)
+ host_user_interface_.reset(new HostUserInterface(context_.get()));
+#endif
+
StartWatchingNatPolicy();
#if defined(OS_MACOSX) || defined(OS_WIN)
@@ -208,6 +213,10 @@ class HostProcess
#endif
message_loop_.Run();
+#if defined(OS_WIN)
+ host_user_interface_.reset();
+#endif
+
base::WaitableEvent done_event(true, false);
nat_policy_->StopWatching(&done_event);
done_event.Wait();
@@ -381,6 +390,12 @@ class HostProcess
new LogToServer(host_, ServerLogEntry::ME2ME, signal_strategy_.get()));
host_event_logger_ = HostEventLogger::Create(host_, kApplicationName);
+#if defined(OS_WIN)
+ host_user_interface_->Start(
+ host_,
+ base::Bind(&HostProcess::OnRestartHostRequest, base::Unretained(this)));
+#endif
+
host_->Start();
CreateAuthenticatorFactory();
@@ -390,6 +405,16 @@ class HostProcess
Shutdown(kInvalidOauthCredentialsExitCode);
}
+ // Invoked from when the user uses the Disconnect windows to terminate
+ // the sessions.
+ void OnRestartHostRequest() {
+ DCHECK(message_loop_.message_loop_proxy()->BelongsToCurrentThread());
+
+ context_->network_message_loop()->PostTask(
+ FROM_HERE,
+ base::Bind(&HostProcess::RestartHost, base::Unretained(this)));
+ }
+
void RestartHost() {
DCHECK(context_->network_message_loop()->BelongsToCurrentThread());
@@ -473,6 +498,11 @@ class HostProcess
scoped_ptr<HeartbeatSender> heartbeat_sender_;
scoped_ptr<LogToServer> log_to_server_;
scoped_ptr<HostEventLogger> host_event_logger_;
+
+#if defined(OS_WIN)
+ scoped_ptr<HostUserInterface> host_user_interface_;
+#endif
+
scoped_refptr<ChromotingHost> host_;
int exit_code_;
@@ -517,11 +547,20 @@ int main(int argc, char** argv) {
}
#if defined(OS_WIN)
+HMODULE g_hModule = NULL;
int CALLBACK WinMain(HINSTANCE instance,
HINSTANCE previous_instance,
LPSTR command_line,
int show_command) {
+ g_hModule = instance;
+
+ // Register and initialize common controls.
+ INITCOMMONCONTROLSEX info;
+ info.dwSize = sizeof(info);
+ info.dwICC = ICC_STANDARD_CLASSES;
+ InitCommonControlsEx(&info);
+
// CommandLine::Init() ignores the passed |argc| and |argv| on Windows getting
// the command line from GetCommandLineW(), so we can safely pass NULL here.
return main(0, NULL);

Powered by Google App Engine
This is Rietveld 408576698