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

Side by Side Diff: trunk/src/remoting/client/plugin/chromoting_instance.cc

Issue 254243002: Revert 267030 "Build remoting for PNaCl" (Closed) Base URL: svn://svn.chromium.org/chrome/
Patch Set: Created 6 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "remoting/client/plugin/chromoting_instance.h" 5 #include "remoting/client/plugin/chromoting_instance.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 #include <vector> 9 #include <vector>
10 10
11 #if defined(OS_NACL)
12 #include <sys/mount.h>
13 #include <nacl_io/nacl_io.h>
14 #endif
15
16 #include "base/bind.h" 11 #include "base/bind.h"
17 #include "base/callback.h" 12 #include "base/callback.h"
18 #include "base/json/json_reader.h" 13 #include "base/json/json_reader.h"
19 #include "base/json/json_writer.h" 14 #include "base/json/json_writer.h"
20 #include "base/lazy_instance.h" 15 #include "base/lazy_instance.h"
21 #include "base/logging.h" 16 #include "base/logging.h"
22 #include "base/strings/string_split.h" 17 #include "base/strings/string_split.h"
23 #include "base/strings/stringprintf.h" 18 #include "base/strings/stringprintf.h"
24 #include "base/synchronization/lock.h" 19 #include "base/synchronization/lock.h"
25 #include "base/threading/thread.h" 20 #include "base/threading/thread.h"
26 #include "base/values.h" 21 #include "base/values.h"
27 #include "crypto/random.h" 22 #include "crypto/random.h"
28 #include "jingle/glue/thread_wrapper.h" 23 #include "jingle/glue/thread_wrapper.h"
29 #include "media/base/yuv_convert.h" 24 #include "media/base/media.h"
30 #include "net/socket/ssl_server_socket.h" 25 #include "net/socket/ssl_server_socket.h"
31 #include "ppapi/cpp/completion_callback.h" 26 #include "ppapi/cpp/completion_callback.h"
32 #include "ppapi/cpp/dev/url_util_dev.h" 27 #include "ppapi/cpp/dev/url_util_dev.h"
33 #include "ppapi/cpp/image_data.h" 28 #include "ppapi/cpp/image_data.h"
34 #include "ppapi/cpp/input_event.h" 29 #include "ppapi/cpp/input_event.h"
35 #include "ppapi/cpp/rect.h" 30 #include "ppapi/cpp/rect.h"
36 #include "remoting/base/constants.h" 31 #include "remoting/base/constants.h"
37 #include "remoting/base/util.h" 32 #include "remoting/base/util.h"
38 #include "remoting/client/chromoting_client.h" 33 #include "remoting/client/chromoting_client.h"
39 #include "remoting/client/client_config.h" 34 #include "remoting/client/client_config.h"
(...skipping 166 matching lines...) Expand 10 before | Expand all | Expand 10 after
206 initialized_(false), 201 initialized_(false),
207 plugin_task_runner_(new PluginThreadTaskRunner(&plugin_thread_delegate_)), 202 plugin_task_runner_(new PluginThreadTaskRunner(&plugin_thread_delegate_)),
208 context_(plugin_task_runner_.get()), 203 context_(plugin_task_runner_.get()),
209 input_tracker_(&mouse_input_filter_), 204 input_tracker_(&mouse_input_filter_),
210 key_mapper_(&input_tracker_), 205 key_mapper_(&input_tracker_),
211 normalizing_input_filter_(CreateNormalizingInputFilter(&key_mapper_)), 206 normalizing_input_filter_(CreateNormalizingInputFilter(&key_mapper_)),
212 input_handler_(this, normalizing_input_filter_.get()), 207 input_handler_(this, normalizing_input_filter_.get()),
213 use_async_pin_dialog_(false), 208 use_async_pin_dialog_(false),
214 use_media_source_rendering_(false), 209 use_media_source_rendering_(false),
215 weak_factory_(this) { 210 weak_factory_(this) {
216 #if defined(OS_NACL)
217 // In NaCl global resources need to be initialized differently because they
218 // are not shared with Chrome.
219 thread_task_runner_handle_.reset(
220 new base::ThreadTaskRunnerHandle(plugin_task_runner_));
221 thread_wrapper_.reset(
222 new jingle_glue::JingleThreadWrapper(plugin_task_runner_));
223 media::InitializeCPUSpecificYUVConversions();
224 #else
225 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop();
226 #endif
227
228 #if defined(OS_NACL)
229 nacl_io_init_ppapi(pp_instance, pp::Module::Get()->get_browser_interface());
230 mount("", "/etc", "memfs", 0, "");
231 mount("", "/usr", "memfs", 0, "");
232 #endif
233
234 RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE | PP_INPUTEVENT_CLASS_WHEEL); 211 RequestInputEvents(PP_INPUTEVENT_CLASS_MOUSE | PP_INPUTEVENT_CLASS_WHEEL);
235 RequestFilteringInputEvents(PP_INPUTEVENT_CLASS_KEYBOARD); 212 RequestFilteringInputEvents(PP_INPUTEVENT_CLASS_KEYBOARD);
236 213
237 // Resister this instance to handle debug log messsages. 214 // Resister this instance to handle debug log messsages.
238 RegisterLoggingInstance(); 215 RegisterLoggingInstance();
239 216
240 #if defined(USE_OPENSSL) 217 #if defined(USE_OPENSSL)
241 // Initialize random seed for libjingle. It's necessary only with OpenSSL. 218 // Initialize random seed for libjingle. It's necessary only with OpenSSL.
242 char random_seed[kRandomSeedSize]; 219 char random_seed[kRandomSeedSize];
243 crypto::RandBytes(random_seed, sizeof(random_seed)); 220 crypto::RandBytes(random_seed, sizeof(random_seed));
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
278 } 255 }
279 256
280 bool ChromotingInstance::Init(uint32_t argc, 257 bool ChromotingInstance::Init(uint32_t argc,
281 const char* argn[], 258 const char* argn[],
282 const char* argv[]) { 259 const char* argv[]) {
283 CHECK(!initialized_); 260 CHECK(!initialized_);
284 initialized_ = true; 261 initialized_ = true;
285 262
286 VLOG(1) << "Started ChromotingInstance::Init"; 263 VLOG(1) << "Started ChromotingInstance::Init";
287 264
288 // Check that the calling content is part of an app or extension. This is only 265 // Check to make sure the media library is initialized.
289 // necessary for non-PNaCl version of the plugin. Also PPB_URLUtil_Dev doesn't 266 // http://crbug.com/91521.
290 // work in NaCl at the moment so the check fails in NaCl builds. 267 if (!media::IsMediaLibraryInitialized()) {
291 #if !defined(OS_NACL) 268 LOG(ERROR) << "Media library not initialized.";
269 return false;
270 }
271
272 // Check that the calling content is part of an app or extension.
292 if (!IsCallerAppOrExtension()) { 273 if (!IsCallerAppOrExtension()) {
293 LOG(ERROR) << "Not an app or extension"; 274 LOG(ERROR) << "Not an app or extension";
294 return false; 275 return false;
295 } 276 }
296 #endif
297 277
298 // Start all the threads. 278 // Start all the threads.
299 context_.Start(); 279 context_.Start();
300 280
301 return true; 281 return true;
302 } 282 }
303 283
304 void ChromotingInstance::HandleMessage(const pp::Var& message) { 284 void ChromotingInstance::HandleMessage(const pp::Var& message) {
305 if (!message.is_string()) { 285 if (!message.is_string()) {
306 LOG(ERROR) << "Received a message that is not a string."; 286 LOG(ERROR) << "Received a message that is not a string.";
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
356 } else if (method == "allowMouseLock") { 336 } else if (method == "allowMouseLock") {
357 HandleAllowMouseLockMessage(); 337 HandleAllowMouseLockMessage();
358 } else if (method == "enableMediaSourceRendering") { 338 } else if (method == "enableMediaSourceRendering") {
359 HandleEnableMediaSourceRendering(); 339 HandleEnableMediaSourceRendering();
360 } 340 }
361 } 341 }
362 342
363 void ChromotingInstance::DidChangeFocus(bool has_focus) { 343 void ChromotingInstance::DidChangeFocus(bool has_focus) {
364 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); 344 DCHECK(plugin_task_runner_->BelongsToCurrentThread());
365 345
366 if (!IsConnected())
367 return;
368
369 input_handler_.DidChangeFocus(has_focus); 346 input_handler_.DidChangeFocus(has_focus);
370 } 347 }
371 348
372 void ChromotingInstance::DidChangeView(const pp::View& view) { 349 void ChromotingInstance::DidChangeView(const pp::View& view) {
373 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); 350 DCHECK(plugin_task_runner_->BelongsToCurrentThread());
374 351
375 plugin_view_ = view; 352 plugin_view_ = view;
376 mouse_input_filter_.set_input_size( 353 mouse_input_filter_.set_input_size(
377 webrtc::DesktopSize(view.GetRect().width(), view.GetRect().height())); 354 webrtc::DesktopSize(view.GetRect().width(), view.GetRect().height()));
378 355
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after
641 } 618 }
642 } 619 }
643 620
644 ConnectWithConfig(config, local_jid); 621 ConnectWithConfig(config, local_jid);
645 } 622 }
646 623
647 void ChromotingInstance::ConnectWithConfig(const ClientConfig& config, 624 void ChromotingInstance::ConnectWithConfig(const ClientConfig& config,
648 const std::string& local_jid) { 625 const std::string& local_jid) {
649 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); 626 DCHECK(plugin_task_runner_->BelongsToCurrentThread());
650 627
628 jingle_glue::JingleThreadWrapper::EnsureForCurrentMessageLoop();
629
651 if (use_media_source_rendering_) { 630 if (use_media_source_rendering_) {
652 video_renderer_.reset(new MediaSourceVideoRenderer(this)); 631 video_renderer_.reset(new MediaSourceVideoRenderer(this));
653 } else { 632 } else {
654 view_.reset(new PepperView(this, &context_)); 633 view_.reset(new PepperView(this, &context_));
655 view_weak_factory_.reset( 634 view_weak_factory_.reset(
656 new base::WeakPtrFactory<FrameConsumer>(view_.get())); 635 new base::WeakPtrFactory<FrameConsumer>(view_.get()));
657 636
658 // SoftwareVideoRenderer runs on a separate thread so for now we wrap 637 // SoftwareVideoRenderer runs on a separate thread so for now we wrap
659 // PepperView with a ref-counted proxy object. 638 // PepperView with a ref-counted proxy object.
660 scoped_refptr<FrameConsumerProxy> consumer_proxy = 639 scoped_refptr<FrameConsumerProxy> consumer_proxy =
(...skipping 481 matching lines...) Expand 10 before | Expand all | Expand 10 after
1142 pp::VarArrayBuffer array_buffer(buffer_size); 1121 pp::VarArrayBuffer array_buffer(buffer_size);
1143 void* data_ptr = array_buffer.Map(); 1122 void* data_ptr = array_buffer.Map();
1144 memcpy(data_ptr, buffer, buffer_size); 1123 memcpy(data_ptr, buffer, buffer_size);
1145 array_buffer.Unmap(); 1124 array_buffer.Unmap();
1146 pp::VarDictionary data_dictionary; 1125 pp::VarDictionary data_dictionary;
1147 data_dictionary.Set(pp::Var("buffer"), array_buffer); 1126 data_dictionary.Set(pp::Var("buffer"), array_buffer);
1148 PostChromotingMessage("mediaSourceData", data_dictionary); 1127 PostChromotingMessage("mediaSourceData", data_dictionary);
1149 } 1128 }
1150 1129
1151 } // namespace remoting 1130 } // namespace remoting
OLDNEW
« no previous file with comments | « trunk/src/remoting/client/plugin/chromoting_instance.h ('k') | trunk/src/remoting/client/plugin/pepper_module.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698