Index: chrome/browser/ui/views/desktop_media_picker_views.cc |
diff --git a/chrome/browser/ui/views/desktop_media_picker_views.cc b/chrome/browser/ui/views/desktop_media_picker_views.cc |
index f8d0ab9ad6dd0d89589c7c9f21b24ddb5a8fa2b3..fb73e5a934c547f8994fa1efa1772040c4f92ee0 100644 |
--- a/chrome/browser/ui/views/desktop_media_picker_views.cc |
+++ b/chrome/browser/ui/views/desktop_media_picker_views.cc |
@@ -2,11 +2,10 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
-#include "chrome/browser/media/desktop_media_picker.h" |
+#include "chrome/browser/ui/views/desktop_media_picker_views.h" |
#include "base/callback.h" |
#include "chrome/browser/media/desktop_media_list.h" |
-#include "chrome/browser/media/desktop_media_list_observer.h" |
#include "chrome/browser/ui/ash/ash_util.h" |
#include "chrome/browser/ui/views/constrained_window_views.h" |
#include "components/web_modal/popup_manager.h" |
@@ -23,11 +22,9 @@ |
#include "ui/views/controls/image_view.h" |
#include "ui/views/controls/label.h" |
#include "ui/views/controls/scroll_view.h" |
-#include "ui/views/layout/box_layout.h" |
#include "ui/views/layout/layout_constants.h" |
#include "ui/views/widget/widget.h" |
#include "ui/views/window/dialog_client_view.h" |
-#include "ui/views/window/dialog_delegate.h" |
#include "ui/wm/core/shadow_types.h" |
using content::DesktopMediaID; |
@@ -49,12 +46,12 @@ const int kDesktopMediaSourceViewGroupId = 1; |
const char kDesktopMediaSourceViewClassName[] = |
"DesktopMediaPicker_DesktopMediaSourceView"; |
-content::DesktopMediaID::Id AcceleratedWidgetToDesktopMediaId( |
+DesktopMediaID::Id AcceleratedWidgetToDesktopMediaId( |
gfx::AcceleratedWidget accelerated_widget) { |
#if defined(OS_WIN) |
- return reinterpret_cast<content::DesktopMediaID::Id>(accelerated_widget); |
+ return reinterpret_cast<DesktopMediaID::Id>(accelerated_widget); |
#else |
- return static_cast<content::DesktopMediaID::Id>(accelerated_widget); |
+ return static_cast<DesktopMediaID::Id>(accelerated_widget); |
#endif |
} |
@@ -62,169 +59,7 @@ int GetMediaListViewHeightForRows(size_t rows) { |
return kListItemHeight * rows; |
} |
-class DesktopMediaListView; |
-class DesktopMediaPickerDialogView; |
-class DesktopMediaPickerViews; |
- |
-// View used for each item in DesktopMediaListView. Shows a single desktop media |
-// source as a thumbnail with the title under it. |
-class DesktopMediaSourceView : public views::View { |
- public: |
- DesktopMediaSourceView(DesktopMediaListView* parent, |
- DesktopMediaID source_id); |
- virtual ~DesktopMediaSourceView(); |
- |
- // Updates thumbnail and title from |source|. |
- void SetName(const base::string16& name); |
- void SetThumbnail(const gfx::ImageSkia& thumbnail); |
- |
- // Id for the source shown by this View. |
- const DesktopMediaID& source_id() const { |
- return source_id_; |
- } |
- |
- // Returns true if the source is selected. |
- bool is_selected() const { return selected_; } |
- |
- // Updates selection state of the element. If |selected| is true then also |
- // calls SetSelected(false) for the source view that was selected before that |
- // (if any). |
- void SetSelected(bool selected); |
- |
- // views::View interface. |
- virtual const char* GetClassName() const OVERRIDE; |
- virtual void Layout() OVERRIDE; |
- virtual views::View* GetSelectedViewForGroup(int group) OVERRIDE; |
- virtual bool IsGroupFocusTraversable() const OVERRIDE; |
- virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; |
- virtual void OnFocus() OVERRIDE; |
- virtual void OnBlur() OVERRIDE; |
- virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE; |
- virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE; |
- |
- private: |
- DesktopMediaListView* parent_; |
- DesktopMediaID source_id_; |
- |
- views::ImageView* image_view_; |
- views::Label* label_; |
- |
- bool selected_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DesktopMediaSourceView); |
-}; |
- |
-// View that shows list of desktop media sources available from |
-// DesktopMediaList. |
-class DesktopMediaListView : public views::View, |
- public DesktopMediaListObserver { |
- public: |
- DesktopMediaListView(DesktopMediaPickerDialogView* parent, |
- scoped_ptr<DesktopMediaList> media_list); |
- virtual ~DesktopMediaListView(); |
- |
- void StartUpdating(content::DesktopMediaID::Id dialog_window_id); |
- |
- // Called by DesktopMediaSourceView when selection has changed. |
- void OnSelectionChanged(); |
- |
- // Called by DesktopMediaSourceView when a source has been double-clicked. |
- void OnDoubleClick(); |
- |
- // Returns currently selected source. |
- DesktopMediaSourceView* GetSelection(); |
- |
- // views::View overrides. |
- virtual gfx::Size GetPreferredSize() const OVERRIDE; |
- virtual void Layout() OVERRIDE; |
- virtual bool OnKeyPressed(const ui::KeyEvent& event) OVERRIDE; |
- |
- private: |
- // DesktopMediaList::Observer interface |
- virtual void OnSourceAdded(int index) OVERRIDE; |
- virtual void OnSourceRemoved(int index) OVERRIDE; |
- virtual void OnSourceMoved(int old_index, int new_index) OVERRIDE; |
- virtual void OnSourceNameChanged(int index) OVERRIDE; |
- virtual void OnSourceThumbnailChanged(int index) OVERRIDE; |
- |
- DesktopMediaPickerDialogView* parent_; |
- scoped_ptr<DesktopMediaList> media_list_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DesktopMediaListView); |
-}; |
- |
-// Dialog view used for DesktopMediaPickerViews. |
-class DesktopMediaPickerDialogView : public views::DialogDelegateView { |
- public: |
- DesktopMediaPickerDialogView(content::WebContents* parent_web_contents, |
- gfx::NativeWindow context, |
- gfx::NativeWindow parent_window, |
- DesktopMediaPickerViews* parent, |
- const base::string16& app_name, |
- const base::string16& target_name, |
- scoped_ptr<DesktopMediaList> media_list); |
- virtual ~DesktopMediaPickerDialogView(); |
- |
- // Called by parent (DesktopMediaPickerViews) when it's destroyed. |
- void DetachParent(); |
- |
- // Called by DesktopMediaListView. |
- void OnSelectionChanged(); |
- void OnDoubleClick(); |
- |
- // views::View overrides. |
- virtual gfx::Size GetPreferredSize() const OVERRIDE; |
- virtual void Layout() OVERRIDE; |
- |
- // views::DialogDelegateView overrides. |
- virtual ui::ModalType GetModalType() const OVERRIDE; |
- virtual base::string16 GetWindowTitle() const OVERRIDE; |
- virtual bool IsDialogButtonEnabled(ui::DialogButton button) const OVERRIDE; |
- virtual base::string16 GetDialogButtonLabel( |
- ui::DialogButton button) const OVERRIDE; |
- virtual bool Accept() OVERRIDE; |
- virtual void DeleteDelegate() OVERRIDE; |
- |
- void OnMediaListRowsChanged(); |
- |
- private: |
- DesktopMediaPickerViews* parent_; |
- base::string16 app_name_; |
- |
- views::Label* label_; |
- views::ScrollView* scroll_view_; |
- DesktopMediaListView* list_view_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DesktopMediaPickerDialogView); |
-}; |
- |
-// Implementation of DesktopMediaPicker for Views. |
-class DesktopMediaPickerViews : public DesktopMediaPicker { |
- public: |
- DesktopMediaPickerViews(); |
- virtual ~DesktopMediaPickerViews(); |
- |
- void NotifyDialogResult(DesktopMediaID source); |
- |
- // DesktopMediaPicker overrides. |
- virtual void Show(content::WebContents* web_contents, |
- gfx::NativeWindow context, |
- gfx::NativeWindow parent, |
- const base::string16& app_name, |
- const base::string16& target_name, |
- scoped_ptr<DesktopMediaList> media_list, |
- const DoneCallback& done_callback) OVERRIDE; |
- |
- private: |
- DoneCallback callback_; |
- |
- // The |dialog_| is owned by the corresponding views::Widget instance. |
- // When DesktopMediaPickerViews is destroyed the |dialog_| is destroyed |
- // asynchronously by closing the widget. |
- DesktopMediaPickerDialogView* dialog_; |
- |
- DISALLOW_COPY_AND_ASSIGN(DesktopMediaPickerViews); |
-}; |
+} // namespace |
DesktopMediaSourceView::DesktopMediaSourceView( |
DesktopMediaListView* parent, |
@@ -370,8 +205,7 @@ DesktopMediaListView::DesktopMediaListView( |
DesktopMediaListView::~DesktopMediaListView() {} |
-void DesktopMediaListView::StartUpdating( |
- content::DesktopMediaID::Id dialog_window_id) { |
+void DesktopMediaListView::StartUpdating(DesktopMediaID::Id dialog_window_id) { |
media_list_->SetViewDialogWindowId(dialog_window_id); |
media_list_->StartUpdating(this); |
} |
@@ -564,7 +398,7 @@ DesktopMediaPickerDialogView::DesktopMediaPickerDialogView( |
// DesktopMediaList needs to know the ID of the picker window which |
// matches the ID it gets from the OS. Depending on the OS and configuration |
// we get this ID differently. |
- content::DesktopMediaID::Id dialog_window_id = 0; |
+ DesktopMediaID::Id dialog_window_id = 0; |
// If there is |parent_window| or |parent_web_contents|, the picker window |
// is embedded in the parent and does not have its own native window id, so we |
@@ -572,8 +406,8 @@ DesktopMediaPickerDialogView::DesktopMediaPickerDialogView( |
if (!parent_window && !parent_web_contents) { |
#if defined(USE_ASH) |
if (chrome::IsNativeWindowInAsh(widget->GetNativeWindow())) { |
- dialog_window_id = content::DesktopMediaID::RegisterAuraWindow( |
- widget->GetNativeWindow()).id; |
+ dialog_window_id = |
+ DesktopMediaID::RegisterAuraWindow(widget->GetNativeWindow()).id; |
DCHECK_NE(dialog_window_id, 0); |
} |
#endif |
@@ -694,6 +528,14 @@ void DesktopMediaPickerDialogView::OnMediaListRowsChanged() { |
GetWidget()->CenterWindow(gfx::Size(widget_bound.width(), new_height)); |
} |
+DesktopMediaSourceView* |
+DesktopMediaPickerDialogView::GetMediaSourceViewForTesting(int index) const { |
+ if (list_view_->child_count() <= index) |
+ return NULL; |
+ |
+ return reinterpret_cast<DesktopMediaSourceView*>(list_view_->child_at(index)); |
+} |
+ |
DesktopMediaPickerViews::DesktopMediaPickerViews() : dialog_(NULL) { |
} |
@@ -732,8 +574,6 @@ void DesktopMediaPickerViews::NotifyDialogResult(DesktopMediaID source) { |
callback_.Reset(); |
} |
-} // namespace |
- |
// static |
scoped_ptr<DesktopMediaPicker> DesktopMediaPicker::Create() { |
return scoped_ptr<DesktopMediaPicker>(new DesktopMediaPickerViews()); |