Home | History | Annotate | Download | only in host
      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
      3 // found in the LICENSE file.
      4 
      5 #ifndef REMOTING_HOST_DESKTOP_ENVIRONMENT_H_
      6 #define REMOTING_HOST_DESKTOP_ENVIRONMENT_H_
      7 
      8 #include <string>
      9 
     10 #include "base/basictypes.h"
     11 #include "base/callback_forward.h"
     12 #include "base/memory/ref_counted.h"
     13 #include "base/memory/scoped_ptr.h"
     14 #include "base/memory/weak_ptr.h"
     15 
     16 namespace base {
     17 class SingleThreadTaskRunner;
     18 }  // namespace base
     19 
     20 namespace webrtc {
     21 class ScreenCapturer;
     22 }  // namespace webrtc
     23 
     24 namespace remoting {
     25 
     26 class AudioCapturer;
     27 class ClientSessionControl;
     28 class InputInjector;
     29 class ScreenControls;
     30 
     31 // Provides factory methods for creation of audio/video capturers and event
     32 // executor for a given desktop environment.
     33 class DesktopEnvironment {
     34  public:
     35   virtual ~DesktopEnvironment() {}
     36 
     37   // Factory methods used to create audio/video capturers, event executor, and
     38   // screen controls object for a particular desktop environment.
     39   virtual scoped_ptr<AudioCapturer> CreateAudioCapturer() = 0;
     40   virtual scoped_ptr<InputInjector> CreateInputInjector() = 0;
     41   virtual scoped_ptr<ScreenControls> CreateScreenControls() = 0;
     42   virtual scoped_ptr<webrtc::ScreenCapturer> CreateVideoCapturer() = 0;
     43 
     44   // Returns the set of all capabilities supported by |this|.
     45   virtual std::string GetCapabilities() const = 0;
     46 
     47   // Passes the final set of capabilities negotiated between the client and host
     48   // to |this|.
     49   virtual void SetCapabilities(const std::string& capabilities) = 0;
     50 };
     51 
     52 // Used to create |DesktopEnvironment| instances.
     53 class DesktopEnvironmentFactory {
     54  public:
     55   virtual ~DesktopEnvironmentFactory() {}
     56 
     57   // Creates an instance of |DesktopEnvironment|. Returns a NULL pointer if
     58   // the desktop environment could not be created for any reason (if the curtain
     59   // failed to active for instance). |client_session_control| must outlive
     60   // the created desktop environment.
     61   virtual scoped_ptr<DesktopEnvironment> Create(
     62       base::WeakPtr<ClientSessionControl> client_session_control) = 0;
     63 
     64   // Enables or disables the curtain mode.
     65   virtual void SetEnableCurtaining(bool enable) {}
     66 
     67   // Returns |true| if created |DesktopEnvironment| instances support audio
     68   // capture.
     69   virtual bool SupportsAudioCapture() const = 0;
     70 };
     71 
     72 }  // namespace remoting
     73 
     74 #endif  // REMOTING_HOST_DESKTOP_ENVIRONMENT_H_
     75