// Copyright 2016 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 "remoting/client/chromoting_client_runtime.h" #include "base/bind.h" #include "base/logging.h" #include "base/message_loop/message_loop.h" #include "remoting/base/url_request_context_getter.h" namespace remoting { scoped_ptr ChromotingClientRuntime::Create( base::MessageLoopForUI* ui_loop) { DCHECK(ui_loop); // |ui_loop_| runs on the main thread, so |ui_task_runner_| will run on the // main thread. We can not kill the main thread when the message loop becomes // idle so the callback function does nothing (as opposed to the typical // base::MessageLoop::QuitClosure()) scoped_refptr ui_task_runner = new AutoThreadTaskRunner( ui_loop->task_runner(), base::Bind(&base::DoNothing)); scoped_refptr display_task_runner = AutoThread::Create("native_disp", ui_task_runner); scoped_refptr network_task_runner = AutoThread::CreateWithType("native_net", ui_task_runner, base::MessageLoop::TYPE_IO); scoped_refptr file_task_runner = AutoThread::CreateWithType("native_file", ui_task_runner, base::MessageLoop::TYPE_IO); scoped_refptr url_requester = new URLRequestContextGetter(network_task_runner, file_task_runner); return make_scoped_ptr( new ChromotingClientRuntime(display_task_runner, network_task_runner, file_task_runner, url_requester)); } ChromotingClientRuntime::ChromotingClientRuntime( scoped_refptr display_task_runner, scoped_refptr network_task_runner, scoped_refptr file_task_runner, scoped_refptr url_requester) : display_task_runner_(display_task_runner), network_task_runner_(network_task_runner), file_task_runner_(file_task_runner), url_requester_(url_requester) {} ChromotingClientRuntime::~ChromotingClientRuntime() {} } // namespace remoting