desktop_environment.h revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef REMOTING_HOST_DESKTOP_ENVIRONMENT_H_ 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define REMOTING_HOST_DESKTOP_ENVIRONMENT_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include <string> 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/basictypes.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/callback_forward.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/ref_counted.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "base/memory/weak_ptr.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace base { 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class SingleThreadTaskRunner; 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace base 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace media { 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ScreenCapturer; 222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace media 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace remoting { 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class AudioCapturer; 272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ClientSessionControl; 282a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class InputInjector; 292a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class ScreenControls; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Provides factory methods for creation of audio/video capturers and event 322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// executor for a given desktop environment. 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class DesktopEnvironment { 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~DesktopEnvironment() {} 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Factory methods used to create audio/video capturers, event executor, and 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // screen controls object for a particular desktop environment. 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual scoped_ptr<AudioCapturer> CreateAudioCapturer() = 0; 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual scoped_ptr<InputInjector> CreateInputInjector() = 0; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual scoped_ptr<ScreenControls> CreateScreenControls() = 0; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual scoped_ptr<media::ScreenCapturer> CreateVideoCapturer() = 0; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Used to create |DesktopEnvironment| instances. 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)class DesktopEnvironmentFactory { 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) public: 482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual ~DesktopEnvironmentFactory() {} 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Creates an instance of |DesktopEnvironment|. |client_session_control| must 512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // outlive |this|. 522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual scoped_ptr<DesktopEnvironment> Create( 532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) base::WeakPtr<ClientSessionControl> client_session_control) = 0; 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Returns |true| if created |DesktopEnvironment| instances support audio 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // capture. 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) virtual bool SupportsAudioCapture() const = 0; 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace remoting 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif // REMOTING_HOST_DESKTOP_ENVIRONMENT_H_ 63