| Index: webrtc/modules/desktop_capture/desktop_capturer.h
 | 
| diff --git a/webrtc/modules/desktop_capture/desktop_capturer.h b/webrtc/modules/desktop_capture/desktop_capturer.h
 | 
| index d758946b843d1451189f053b8bf642e2adc5867f..6b9c820ce9df5ea3b739917db8e82671af0a0e86 100644
 | 
| --- a/webrtc/modules/desktop_capture/desktop_capturer.h
 | 
| +++ b/webrtc/modules/desktop_capture/desktop_capturer.h
 | 
| @@ -12,8 +12,11 @@
 | 
|  #define WEBRTC_MODULES_DESKTOP_CAPTURE_DESKTOP_CAPTURER_H_
 | 
|  
 | 
|  #include <stddef.h>
 | 
| +#include <stdint.h>
 | 
|  
 | 
|  #include <memory>
 | 
| +#include <string>
 | 
| +#include <vector>
 | 
|  
 | 
|  #include "webrtc/modules/desktop_capture/desktop_frame.h"
 | 
|  #include "webrtc/modules/desktop_capture/desktop_capture_types.h"
 | 
| @@ -21,6 +24,7 @@
 | 
|  
 | 
|  namespace webrtc {
 | 
|  
 | 
| +class DesktopCaptureOptions;
 | 
|  class DesktopFrame;
 | 
|  
 | 
|  // Abstract interface for screen and window capturers.
 | 
| @@ -53,7 +57,20 @@ class DesktopCapturer {
 | 
|      virtual ~Callback() {}
 | 
|    };
 | 
|  
 | 
| -  virtual ~DesktopCapturer() {}
 | 
| +  typedef intptr_t SourceId;
 | 
| +
 | 
| +  struct Source {
 | 
| +    // The unique id to represent a Source of current DesktopCapturer.
 | 
| +    SourceId id;
 | 
| +
 | 
| +    // Title of the window or screen in UTF-8 encoding, maybe empty. This field
 | 
| +    // should not be used to identify a source.
 | 
| +    std::string title;
 | 
| +  };
 | 
| +
 | 
| +  typedef std::vector<Source> SourceList;
 | 
| +
 | 
| +  virtual ~DesktopCapturer();
 | 
|  
 | 
|    // Called at the beginning of a capturing session. |callback| must remain
 | 
|    // valid until capturer is destroyed.
 | 
| @@ -65,7 +82,7 @@ class DesktopCapturer {
 | 
|    // Shared memory is currently supported only by some DesktopCapturer
 | 
|    // implementations.
 | 
|    virtual void SetSharedMemoryFactory(
 | 
| -      std::unique_ptr<SharedMemoryFactory> shared_memory_factory) {}
 | 
| +      std::unique_ptr<SharedMemoryFactory> shared_memory_factory);
 | 
|  
 | 
|    // Captures next frame, and involve callback provided by Start() function.
 | 
|    // Pending capture requests are canceled when DesktopCapturer is deleted.
 | 
| @@ -74,7 +91,25 @@ class DesktopCapturer {
 | 
|    // Sets the window to be excluded from the captured image in the future
 | 
|    // Capture calls. Used to exclude the screenshare notification window for
 | 
|    // screen capturing.
 | 
| -  virtual void SetExcludedWindow(WindowId window) {}
 | 
| +  virtual void SetExcludedWindow(WindowId window);
 | 
| +
 | 
| +  // TODO(zijiehe): Following functions should be pure virtual. The default
 | 
| +  // implementations are for backward compatibility only. Remove default
 | 
| +  // implementations once all DesktopCapturer implementations in Chromium have
 | 
| +  // implemented these functions.
 | 
| +
 | 
| +  // Gets a list of sources current capturer supports. Returns false in case of
 | 
| +  // a failure.
 | 
| +  virtual bool GetSourceList(SourceList* sources);
 | 
| +
 | 
| +  // Selects a source to be captured. Returns false in case of a failure (e.g.
 | 
| +  // if there is no source with the specified type and id.)
 | 
| +  virtual bool SelectSource(SourceId id);
 | 
| +
 | 
| +  // Brings the selected source to the front and sets the input focus on it.
 | 
| +  // Returns false in case of a failure or no source has been selected or the
 | 
| +  // implementation does not support this functionality.
 | 
| +  virtual bool FocusOnSelectedSource();
 | 
|  };
 | 
|  
 | 
|  }  // namespace webrtc
 | 
| 
 |