Upstream version 9.38.198.0
[platform/framework/web/crosswalk.git] / src / chrome / browser / extensions / api / desktop_capture / desktop_capture_api.h
index 2621d07..475edf9 100644 (file)
@@ -9,26 +9,28 @@
 
 #include "base/memory/singleton.h"
 #include "chrome/browser/extensions/chrome_extension_function.h"
+#include "chrome/browser/media/desktop_media_list.h"
 #include "chrome/browser/media/desktop_media_picker.h"
-#include "chrome/browser/media/desktop_media_picker_model.h"
+#include "chrome/browser/media/native_desktop_media_list.h"
 #include "chrome/common/extensions/api/desktop_capture.h"
+#include "content/public/browser/web_contents_observer.h"
 #include "url/gurl.h"
 
 namespace extensions {
 
 class DesktopCaptureChooseDesktopMediaFunction
-    : public ChromeAsyncExtensionFunction {
+    : public ChromeAsyncExtensionFunction,
+      public content::WebContentsObserver {
  public:
   DECLARE_EXTENSION_FUNCTION("desktopCapture.chooseDesktopMedia",
                              DESKTOPCAPTURE_CHOOSEDESKTOPMEDIA)
 
-  // Factory creating DesktopMediaPickerModel and DesktopMediaPicker instances.
+  // Factory creating DesktopMediaList and DesktopMediaPicker instances.
   // Used for tests to supply fake picker.
   class PickerFactory {
    public:
-    virtual scoped_ptr<DesktopMediaPickerModel> CreateModel(
-        scoped_ptr<webrtc::ScreenCapturer> screen_capturer,
-        scoped_ptr<webrtc::WindowCapturer> window_capturer) = 0;
+    virtual scoped_ptr<DesktopMediaList> CreateModel(bool show_screens,
+                                                     bool show_windows) = 0;
     virtual scoped_ptr<DesktopMediaPicker> CreatePicker() = 0;
    protected:
     virtual ~PickerFactory() {}
@@ -47,15 +49,16 @@ class DesktopCaptureChooseDesktopMediaFunction
   virtual ~DesktopCaptureChooseDesktopMediaFunction();
 
   // ExtensionFunction overrides.
-  virtual bool RunImpl() OVERRIDE;
+  virtual bool RunAsync() OVERRIDE;
+
+  // content::WebContentsObserver overrides.
+  virtual void WebContentsDestroyed() OVERRIDE;
 
   void OnPickerDialogResults(content::DesktopMediaID source);
 
   int request_id_;
 
-  // Parameters of the tab the stream is requested for.
-  int render_process_id_;
-  int render_view_id_;
+  // URL of page that desktop capture was requested for.
   GURL origin_;
 
   scoped_ptr<DesktopMediaPicker> picker_;
@@ -73,7 +76,7 @@ class DesktopCaptureCancelChooseDesktopMediaFunction
   virtual ~DesktopCaptureCancelChooseDesktopMediaFunction();
 
   // ExtensionFunction overrides.
-  virtual bool RunImpl() OVERRIDE;
+  virtual bool RunSync() OVERRIDE;
 };
 
 class DesktopCaptureRequestsRegistry {