12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- // Copyright (c) 2012 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.
- #ifndef REMOTING_HOST_DESKTOP_SESSION_CONNECTOR_H_
- #define REMOTING_HOST_DESKTOP_SESSION_CONNECTOR_H_
- #include "base/process/process.h"
- #include "build/build_config.h"
- #include "mojo/public/cpp/bindings/scoped_interface_endpoint_handle.h"
- #include "mojo/public/cpp/system/message_pipe.h"
- #include "remoting/host/mojom/remoting_host.mojom.h"
- namespace remoting {
- class DesktopSessionProxy;
- class ScreenResolution;
- // Provides a way to connect a terminal (i.e. a remote client) with a desktop
- // session (i.e. the screen, keyboard, and the rest).
- class DesktopSessionConnector : public mojom::DesktopSessionConnectionEvents {
- public:
- DesktopSessionConnector() = default;
- DesktopSessionConnector(const DesktopSessionConnector&) = delete;
- DesktopSessionConnector& operator=(const DesktopSessionConnector&) = delete;
- ~DesktopSessionConnector() override = default;
- // Requests the daemon process to create a desktop session and associates
- // |desktop_session_proxy| with it. |desktop_session_proxy| must be
- // disconnected from the desktop session (see DisconnectTerminal()) before it
- // can be deleted.
- virtual void ConnectTerminal(
- DesktopSessionProxy* desktop_session_proxy,
- const ScreenResolution& resolution,
- bool virtual_terminal) = 0;
- // Requests the daemon process disconnect |desktop_session_proxy| from
- // the associated desktop session.
- virtual void DisconnectTerminal(
- DesktopSessionProxy* desktop_session_proxy) = 0;
- // Changes the screen resolution of the desktop session.
- virtual void SetScreenResolution(
- DesktopSessionProxy* desktop_session_proxy,
- const ScreenResolution& resolution) = 0;
- // Binds a receiver to allow the DesktopSessionConnector instance to receive
- // events related to changes in the desktop session. Returns True if |handle|
- // was successfully bound, otherwise false.
- virtual bool BindConnectionEventsReceiver(
- mojo::ScopedInterfaceEndpointHandle handle) = 0;
- #if !BUILDFLAG(IS_WIN)
- // Notifies the network process that |terminal_id| is now attached to
- // a desktop integration process. |session_id| is the id of the desktop
- // session being attached. |desktop_pipe| is the client end of the pipe opened
- // by the desktop process.
- virtual void OnDesktopSessionAgentAttached(
- int terminal_id,
- int session_id,
- mojo::ScopedMessagePipeHandle desktop_pipe) = 0;
- // Notifies the network process that the daemon has disconnected the desktop
- // session from the associated desktop environment.
- virtual void OnTerminalDisconnected(int terminal_id) = 0;
- #endif
- };
- } // namespace remoting
- #endif // REMOTING_HOST_DESKTOP_SESSION_CONNECTOR_H_
|