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

Unified Diff: remoting/host/it2me/it2me_native_messaging_host.cc

Issue 639233002: Remote assistance on Chrome OS Part IV - It2MeHost (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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/it2me/it2me_native_messaging_host.cc
diff --git a/remoting/host/it2me/it2me_native_messaging_host.cc b/remoting/host/it2me/it2me_native_messaging_host.cc
index 24ddc1b8dc38c72475555f4c0dbc00ea915aa62d..b69a4ee979c6d5d33fecbad8a4ef768c351e63a8 100644
--- a/remoting/host/it2me/it2me_native_messaging_host.cc
+++ b/remoting/host/it2me/it2me_native_messaging_host.cc
@@ -11,6 +11,7 @@
#include "base/callback.h"
#include "base/json/json_reader.h"
#include "base/json/json_writer.h"
+#include "base/message_loop/message_loop.h"
#include "base/strings/string_number_conversions.h"
#include "base/strings/stringize_macros.h"
#include "base/threading/thread.h"
@@ -39,19 +40,35 @@ const remoting::protocol::NameMapElement<It2MeHostState> kIt2MeHostStates[] = {
} // namespace
+// static
+scoped_ptr<extensions::NativeMessageHost> It2MeNativeMessagingHost::Create() {
+ scoped_ptr<It2MeHostFactory> factory(new remoting::It2MeHostFactory());
+ scoped_refptr<ChromotingHostContext> context =
+ ChromotingHostContext::Create(new AutoThreadTaskRunner(
+ base::MessageLoopProxy::current(), base::Bind(&base::DoNothing)));
+ scoped_ptr<extensions::NativeMessageHost> host(new It2MeNativeMessagingHost(
+ // Remoting uses AutoThread as its threading primitive, which will
+ // exit itself (by posting a Quit message) when there are no more references
+ // to the task runner.
+ // On ChromeOS, the It2MeNativeMessagingHost is created on the UI
+ // thread of the browser process. Since we do not want to quit the browser
+ // UI thread just because there are no more tasks in the task_runner,
+ // base::DoNothing is passed in as the quit closure.
Wez 2014/10/17 17:57:59 This comment is in the wrong place, and misses the
kelvinp 2014/10/20 00:21:15 I can update the comment. Yes, I agree that this
+ context,
+ factory.Pass()));
+ return host.Pass();
+}
+
It2MeNativeMessagingHost::It2MeNativeMessagingHost(
- scoped_refptr<AutoThreadTaskRunner> task_runner,
+ scoped_refptr<ChromotingHostContext> context,
scoped_ptr<It2MeHostFactory> factory)
: client_(NULL),
factory_(factory.Pass()),
weak_factory_(this) {
weak_ptr_ = weak_factory_.GetWeakPtr();
- // Initialize the host context to manage the threads for the it2me host.
- // The native messaging host, rather than the It2MeHost object, owns and
- // maintains the lifetime of the host context.
-
- host_context_.reset(ChromotingHostContext::Create(task_runner).release());
+ host_context_ = context;
+ task_runner_ = host_context_->ui_task_runner();
const ServiceUrls* service_urls = ServiceUrls::GetInstance();
const bool xmpp_server_valid =
@@ -203,7 +220,7 @@ void It2MeNativeMessagingHost::ProcessConnect(
#endif // !defined(NDEBUG)
// Create the It2Me host and start connecting.
- it2me_host_ = factory_->CreateIt2MeHost(host_context_.get(),
+ it2me_host_ = factory_->CreateIt2MeHost(host_context_,
host_context_->ui_task_runner(),
weak_ptr_,
xmpp_config,

Powered by Google App Engine
This is Rietveld 408576698