1 // Copyright 2013 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 CHROME_BROWSER_MEDIA_DESKTOP_MEDIA_PICKER_H_ 6 #define CHROME_BROWSER_MEDIA_DESKTOP_MEDIA_PICKER_H_ 7 8 #include "base/basictypes.h" 9 #include "base/callback_forward.h" 10 #include "base/memory/scoped_ptr.h" 11 #include "base/strings/string16.h" 12 #include "content/public/browser/desktop_media_id.h" 13 #include "ui/gfx/native_widget_types.h" 14 15 class DesktopMediaList; 16 17 // Abstract interface for desktop media picker UI. It's used by Desktop Media 18 // API to let user choose a desktop media source. 19 class DesktopMediaPicker { 20 public: 21 typedef base::Callback<void(content::DesktopMediaID)> DoneCallback; 22 23 // Creates default implementation of DesktopMediaPicker for the current 24 // platform. 25 static scoped_ptr<DesktopMediaPicker> Create(); 26 27 DesktopMediaPicker() {} 28 virtual ~DesktopMediaPicker() {} 29 30 // Shows dialog with list of desktop media sources (screens, windows, tabs) 31 // provided by |list| and calls |done_callback| when user chooses one of the 32 // sources or closes the dialog. 33 virtual void Show(gfx::NativeWindow context, 34 gfx::NativeWindow parent, 35 const base::string16& app_name, 36 scoped_ptr<DesktopMediaList> list, 37 const DoneCallback& done_callback) = 0; 38 39 private: 40 DISALLOW_COPY_AND_ASSIGN(DesktopMediaPicker); 41 }; 42 43 #endif // CHROME_BROWSER_MEDIA_DESKTOP_MEDIA_PICKER_H_ 44