New issue
Advanced search Search tips

Issue 892434 link

Starred by 1 user

Issue metadata

Status: Fixed
Owner:
Closed: Nov 21
Components:
EstimatedDays: ----
NextAction: ----
OS: Windows
Pri: 1
Type: Bug



Sign in to add a comment

[Windows Host] Ctrl+Alt+Del does not work reliably

Project Member Reported by joedow@chromium.org, Oct 4

Issue description

We have ongoing reports of this issue and I suspect it is related to stuck keys on the keyboard.

Instead of using individual keypresses, it might be better for the client to send a single 'execute' message which invokes the platform API for the action instead of injecting each individual key down/up event and using that to trigger the action.
 
Project Member

Comment 1 by bugdroid1@chromium.org, Oct 17

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/505ae0d04dedb760c944e6a4bd1364e99a914db7

commit 505ae0d04dedb760c944e6a4bd1364e99a914db7
Author: Joe Downing <joedow@chromium.org>
Date: Wed Oct 17 17:47:30 2018

Allow CRD clients to send a single mesage for keyboard combos

In order to invoke common platform tasks (send attention sequence
and lock workstation), CRD currently relies on injecting key events
on the client and picking them up on the host.  There is a listener
which tracks the current key events and then calls the platform API
once it sees the trigger.

The problem with this approach is if there is a stuck key (i.e. we
fail to send a key up event) then this functionality is broken.
While we should fix bugs which cause lost key events, we should also
look for ways to prevent issues like that from affecting other
features.

My change allows the client to send a single message to invoke an
action like LockWorkstation() or SendSAS() which will then be
executed in the user's session.  The change is targeted at the
Windows multi-process architecture but I've used interfaces to
allow for other platforms to use it (similar to how InputInjection
and the other event protos are used) if we decide to implement
it in the future.

This CL sets up the plumbing to get the request from the network
process to the desktop process on Windows.  There will be a
follow-up CL which adds the WebRTC data channel and ClientSession
integration.

Bug:  892434 

Change-Id: Iedfe8c4778fbaacacc68754c6d24e7fd485b0407
Reviewed-on: https://chromium-review.googlesource.com/c/1266100
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Jamie Walch <jamiewalch@chromium.org>
Commit-Queue: Joe Downing <joedow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#600463}
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/BUILD.gn
[add] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/action_executor.cc
[add] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/action_executor.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/basic_desktop_environment.cc
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/basic_desktop_environment.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/chromoting_messages.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/chromoting_param_traits.cc
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/chromoting_param_traits.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/desktop_environment.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/desktop_session_agent.cc
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/desktop_session_agent.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/desktop_session_proxy.cc
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/desktop_session_proxy.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/fake_desktop_environment.cc
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/fake_desktop_environment.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/host_mock_objects.cc
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/host_mock_objects.h
[add] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/ipc_action_executor.cc
[add] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/ipc_action_executor.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/ipc_desktop_environment.cc
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/ipc_desktop_environment.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/me2me_desktop_environment.cc
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/me2me_desktop_environment.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/win/BUILD.gn
[add] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/win/session_action_executor.cc
[add] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/win/session_action_executor.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/win/session_desktop_environment.cc
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/host/win/session_desktop_environment.h
[modify] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/proto/BUILD.gn
[add] https://crrev.com/505ae0d04dedb760c944e6a4bd1364e99a914db7/remoting/proto/action.proto

Project Member

Comment 2 by bugdroid1@chromium.org, Nov 16

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/b511e4a9f8c6976affd959c0c8d310986f6e2df1

commit b511e4a9f8c6976affd959c0c8d310986f6e2df1
Author: Joe Downing <joedow@chromium.org>
Date: Fri Nov 16 21:10:13 2018

Adding a DataChannelHandler for Action messages

This change adds a DataChannelHandler for Action messages and ties it
into ClientSession.  When a new handler is created, it will receive an
ActionExecutor (added in a previous CL) which is used to invoke the
requested action.

BUG:  892434 
Change-Id: I56b60fdc56b89900297943eafe78f50982b7681f
Reviewed-on: https://chromium-review.googlesource.com/c/1294715
Reviewed-by: Jamie Walch <jamiewalch@chromium.org>
Commit-Queue: Joe Downing <joedow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608941}
[modify] https://crrev.com/b511e4a9f8c6976affd959c0c8d310986f6e2df1/remoting/host/BUILD.gn
[add] https://crrev.com/b511e4a9f8c6976affd959c0c8d310986f6e2df1/remoting/host/action_message_handler.cc
[add] https://crrev.com/b511e4a9f8c6976affd959c0c8d310986f6e2df1/remoting/host/action_message_handler.h
[modify] https://crrev.com/b511e4a9f8c6976affd959c0c8d310986f6e2df1/remoting/host/client_session.cc
[modify] https://crrev.com/b511e4a9f8c6976affd959c0c8d310986f6e2df1/remoting/host/client_session.h
[modify] https://crrev.com/b511e4a9f8c6976affd959c0c8d310986f6e2df1/remoting/host/me2me_desktop_environment.cc
[modify] https://crrev.com/b511e4a9f8c6976affd959c0c8d310986f6e2df1/remoting/host/win/session_action_executor.cc
[modify] https://crrev.com/b511e4a9f8c6976affd959c0c8d310986f6e2df1/remoting/proto/action.proto
[modify] https://crrev.com/b511e4a9f8c6976affd959c0c8d310986f6e2df1/remoting/protocol/capability_names.h

Labels: -M-71 M-72
Status: Fixed (was: Assigned)

Sign in to add a comment