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

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

Issue 799233004: Add touch events to the protocol, the stub layer, and to the client plugin. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: changes from review Created 5 years, 10 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
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 <string> 7 #include <string>
8 #include <vector> 8 #include <vector>
9 9
10 #if defined(OS_NACL) 10 #if defined(OS_NACL)
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 180
181 const char ChromotingInstance::kRequestedCapabilities[] = ""; 181 const char ChromotingInstance::kRequestedCapabilities[] = "";
182 const char ChromotingInstance::kSupportedCapabilities[] = "desktopShape"; 182 const char ChromotingInstance::kSupportedCapabilities[] = "desktopShape";
183 183
184 ChromotingInstance::ChromotingInstance(PP_Instance pp_instance) 184 ChromotingInstance::ChromotingInstance(PP_Instance pp_instance)
185 : pp::Instance(pp_instance), 185 : pp::Instance(pp_instance),
186 initialized_(false), 186 initialized_(false),
187 plugin_task_runner_(new PluginThreadTaskRunner(&plugin_thread_delegate_)), 187 plugin_task_runner_(new PluginThreadTaskRunner(&plugin_thread_delegate_)),
188 context_(plugin_task_runner_.get()), 188 context_(plugin_task_runner_.get()),
189 input_tracker_(&mouse_input_filter_), 189 input_tracker_(&mouse_input_filter_),
190 key_mapper_(&input_tracker_), 190 touch_input_scaler_(&input_tracker_),
191 key_mapper_(&touch_input_scaler_),
191 cursor_setter_(this), 192 cursor_setter_(this),
192 empty_cursor_filter_(&cursor_setter_), 193 empty_cursor_filter_(&cursor_setter_),
193 text_input_controller_(this), 194 text_input_controller_(this),
194 use_async_pin_dialog_(false), 195 use_async_pin_dialog_(false),
195 weak_factory_(this) { 196 weak_factory_(this) {
196 #if defined(OS_NACL) 197 #if defined(OS_NACL)
197 // In NaCl global resources need to be initialized differently because they 198 // In NaCl global resources need to be initialized differently because they
198 // are not shared with Chrome. 199 // are not shared with Chrome.
199 thread_task_runner_handle_.reset( 200 thread_task_runner_handle_.reset(
200 new base::ThreadTaskRunnerHandle(plugin_task_runner_)); 201 new base::ThreadTaskRunnerHandle(plugin_task_runner_));
(...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 } else if (method == "requestPairing") { 344 } else if (method == "requestPairing") {
344 HandleRequestPairing(*data); 345 HandleRequestPairing(*data);
345 } else if (method == "extensionMessage") { 346 } else if (method == "extensionMessage") {
346 HandleExtensionMessage(*data); 347 HandleExtensionMessage(*data);
347 } else if (method == "allowMouseLock") { 348 } else if (method == "allowMouseLock") {
348 HandleAllowMouseLockMessage(); 349 HandleAllowMouseLockMessage();
349 } else if (method == "sendMouseInputWhenUnfocused") { 350 } else if (method == "sendMouseInputWhenUnfocused") {
350 HandleSendMouseInputWhenUnfocused(); 351 HandleSendMouseInputWhenUnfocused();
351 } else if (method == "delegateLargeCursors") { 352 } else if (method == "delegateLargeCursors") {
352 HandleDelegateLargeCursors(); 353 HandleDelegateLargeCursors();
354 } else if (method == "enableTouchEvents") {
355 HandleEnableTouchEvents();
353 } 356 }
354 } 357 }
355 358
356 void ChromotingInstance::DidChangeFocus(bool has_focus) { 359 void ChromotingInstance::DidChangeFocus(bool has_focus) {
357 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); 360 DCHECK(plugin_task_runner_->BelongsToCurrentThread());
358 361
359 if (!IsConnected()) 362 if (!IsConnected())
360 return; 363 return;
361 364
362 input_handler_.DidChangeFocus(has_focus); 365 input_handler_.DidChangeFocus(has_focus);
363 if (mouse_locker_) 366 if (mouse_locker_)
364 mouse_locker_->DidChangeFocus(has_focus); 367 mouse_locker_->DidChangeFocus(has_focus);
365 } 368 }
366 369
367 void ChromotingInstance::DidChangeView(const pp::View& view) { 370 void ChromotingInstance::DidChangeView(const pp::View& view) {
368 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); 371 DCHECK(plugin_task_runner_->BelongsToCurrentThread());
369 372
370 plugin_view_ = view; 373 plugin_view_ = view;
371 mouse_input_filter_.set_input_size( 374 webrtc::DesktopSize size(
372 webrtc::DesktopSize(view.GetRect().width(), view.GetRect().height())); 375 webrtc::DesktopSize(view.GetRect().width(), view.GetRect().height()));
376 mouse_input_filter_.set_input_size(size);
377 touch_input_scaler_.set_input_size(size);
373 378
374 if (video_renderer_) 379 if (video_renderer_)
375 video_renderer_->OnViewChanged(view); 380 video_renderer_->OnViewChanged(view);
376 } 381 }
377 382
378 bool ChromotingInstance::HandleInputEvent(const pp::InputEvent& event) { 383 bool ChromotingInstance::HandleInputEvent(const pp::InputEvent& event) {
379 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); 384 DCHECK(plugin_task_runner_->BelongsToCurrentThread());
380 385
381 if (!IsConnected()) 386 if (!IsConnected())
382 return false; 387 return false;
(...skipping 11 matching lines...) Expand all
394 OnConnectionState(protocol::ConnectionToHost::FAILED, 399 OnConnectionState(protocol::ConnectionToHost::FAILED,
395 protocol::INCOMPATIBLE_PROTOCOL); 400 protocol::INCOMPATIBLE_PROTOCOL);
396 } 401 }
397 402
398 void ChromotingInstance::OnVideoFirstFrameReceived() { 403 void ChromotingInstance::OnVideoFirstFrameReceived() {
399 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 404 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue());
400 PostLegacyJsonMessage("onFirstFrameReceived", data.Pass()); 405 PostLegacyJsonMessage("onFirstFrameReceived", data.Pass());
401 } 406 }
402 407
403 void ChromotingInstance::OnVideoSize(const webrtc::DesktopSize& size, 408 void ChromotingInstance::OnVideoSize(const webrtc::DesktopSize& size,
404 const webrtc::DesktopVector& dpi) { 409 const webrtc::DesktopVector& dpi) {
405 mouse_input_filter_.set_output_size(size); 410 mouse_input_filter_.set_output_size(size);
411 touch_input_scaler_.set_output_size(size);
406 412
407 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue()); 413 scoped_ptr<base::DictionaryValue> data(new base::DictionaryValue());
408 data->SetInteger("width", size.width()); 414 data->SetInteger("width", size.width());
409 data->SetInteger("height", size.height()); 415 data->SetInteger("height", size.height());
410 if (dpi.x()) 416 if (dpi.x())
411 data->SetInteger("x_dpi", dpi.x()); 417 data->SetInteger("x_dpi", dpi.x());
412 if (dpi.y()) 418 if (dpi.y())
413 data->SetInteger("y_dpi", dpi.y()); 419 data->SetInteger("y_dpi", dpi.y());
414 PostLegacyJsonMessage("onDesktopSize", data.Pass()); 420 PostLegacyJsonMessage("onDesktopSize", data.Pass());
415 } 421 }
(...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after
657 663
658 if (!plugin_view_.is_null()) 664 if (!plugin_view_.is_null())
659 video_renderer_->OnViewChanged(plugin_view_); 665 video_renderer_->OnViewChanged(plugin_view_);
660 666
661 scoped_ptr<AudioPlayer> audio_player(new PepperAudioPlayer(this)); 667 scoped_ptr<AudioPlayer> audio_player(new PepperAudioPlayer(this));
662 client_.reset(new ChromotingClient(&context_, this, video_renderer_.get(), 668 client_.reset(new ChromotingClient(&context_, this, video_renderer_.get(),
663 audio_player.Pass())); 669 audio_player.Pass()));
664 670
665 // Connect the input pipeline to the protocol stub & initialize components. 671 // Connect the input pipeline to the protocol stub & initialize components.
666 mouse_input_filter_.set_input_stub(client_->input_stub()); 672 mouse_input_filter_.set_input_stub(client_->input_stub());
673 touch_input_scaler_.set_input_stub(client_->input_stub());
667 if (!plugin_view_.is_null()) { 674 if (!plugin_view_.is_null()) {
668 mouse_input_filter_.set_input_size(webrtc::DesktopSize( 675 webrtc::DesktopSize size(plugin_view_.GetRect().width(),
669 plugin_view_.GetRect().width(), plugin_view_.GetRect().height())); 676 plugin_view_.GetRect().height());
677 mouse_input_filter_.set_input_size(size);
678 touch_input_scaler_.set_input_size(size);
670 } 679 }
671 680
672 // Setup the signal strategy. 681 // Setup the signal strategy.
673 signal_strategy_.reset(new DelegatingSignalStrategy( 682 signal_strategy_.reset(new DelegatingSignalStrategy(
674 local_jid, base::Bind(&ChromotingInstance::SendOutgoingIq, 683 local_jid, base::Bind(&ChromotingInstance::SendOutgoingIq,
675 weak_factory_.GetWeakPtr()))); 684 weak_factory_.GetWeakPtr())));
676 685
677 // Create TransportFactory. 686 // Create TransportFactory.
678 scoped_ptr<protocol::TransportFactory> transport_factory( 687 scoped_ptr<protocol::TransportFactory> transport_factory(
679 new protocol::LibjingleTransportFactory( 688 new protocol::LibjingleTransportFactory(
(...skipping 257 matching lines...) Expand 10 before | Expand all | Expand 10 after
937 } 946 }
938 947
939 void ChromotingInstance::HandleSendMouseInputWhenUnfocused() { 948 void ChromotingInstance::HandleSendMouseInputWhenUnfocused() {
940 input_handler_.set_send_mouse_input_when_unfocused(true); 949 input_handler_.set_send_mouse_input_when_unfocused(true);
941 } 950 }
942 951
943 void ChromotingInstance::HandleDelegateLargeCursors() { 952 void ChromotingInstance::HandleDelegateLargeCursors() {
944 cursor_setter_.set_delegate_stub(this); 953 cursor_setter_.set_delegate_stub(this);
945 } 954 }
946 955
956 void ChromotingInstance::HandleEnableTouchEvents() {
957 RequestInputEvents(PP_INPUTEVENT_CLASS_TOUCH);
958 }
959
947 void ChromotingInstance::Disconnect() { 960 void ChromotingInstance::Disconnect() {
948 DCHECK(plugin_task_runner_->BelongsToCurrentThread()); 961 DCHECK(plugin_task_runner_->BelongsToCurrentThread());
949 962
950 VLOG(0) << "Disconnecting from host."; 963 VLOG(0) << "Disconnecting from host.";
951 964
952 // Disconnect the input pipeline and teardown the connection. 965 // Disconnect the input pipeline and teardown the connection.
953 mouse_input_filter_.set_input_stub(nullptr); 966 mouse_input_filter_.set_input_stub(nullptr);
954 client_.reset(); 967 client_.reset();
955 video_renderer_.reset(); 968 video_renderer_.reset();
956 } 969 }
(...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after
1127 url_components.scheme.len); 1140 url_components.scheme.len);
1128 return url_scheme == kChromeExtensionUrlScheme; 1141 return url_scheme == kChromeExtensionUrlScheme;
1129 } 1142 }
1130 1143
1131 bool ChromotingInstance::IsConnected() { 1144 bool ChromotingInstance::IsConnected() {
1132 return client_ && 1145 return client_ &&
1133 (client_->connection_state() == protocol::ConnectionToHost::CONNECTED); 1146 (client_->connection_state() == protocol::ConnectionToHost::CONNECTED);
1134 } 1147 }
1135 1148
1136 } // namespace remoting 1149 } // namespace remoting
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698