| Index: ash/system/cast/tray_cast.cc
|
| diff --git a/ash/system/cast/tray_cast.cc b/ash/system/cast/tray_cast.cc
|
| index 33ff8f191127472045eb2586a09c9960f7550c3f..59140c021eb287864941a772e0a1b34b38f6e14a 100644
|
| --- a/ash/system/cast/tray_cast.cc
|
| +++ b/ash/system/cast/tray_cast.cc
|
| @@ -16,17 +16,13 @@
|
| #include "ash/system/tray/system_tray_notifier.h"
|
| #include "ash/system/tray/throbber_view.h"
|
| #include "ash/system/tray/tray_constants.h"
|
| -#include "ash/system/tray/tray_details_view.h"
|
| -#include "ash/system/tray/tray_item_more.h"
|
| #include "ash/system/tray/tray_item_view.h"
|
| -#include "ash/system/tray/tray_popup_label_button.h"
|
| #include "base/bind.h"
|
| #include "grit/ash_resources.h"
|
| #include "grit/ash_strings.h"
|
| #include "ui/base/l10n/l10n_util.h"
|
| #include "ui/base/resource/resource_bundle.h"
|
| #include "ui/gfx/image/image.h"
|
| -#include "ui/views/controls/button/button.h"
|
| #include "ui/views/controls/image_view.h"
|
| #include "ui/views/controls/label.h"
|
| #include "ui/views/layout/box_layout.h"
|
| @@ -40,30 +36,6 @@ const int kStopButtonRightPadding = 18;
|
|
|
| namespace tray {
|
|
|
| -// This view is displayed in the system tray when the cast extension is active.
|
| -// It asks the user if they want to cast the desktop. If they click on the
|
| -// chevron, then a detail view will replace this view where the user will
|
| -// actually pick the cast receiver.
|
| -class CastSelectDefaultView : public TrayItemMore {
|
| - public:
|
| - CastSelectDefaultView(SystemTrayItem* owner,
|
| - CastConfigDelegate* cast_config_delegate,
|
| - bool show_more);
|
| - ~CastSelectDefaultView() override;
|
| -
|
| - // Updates the label based on the current set of receivers (if there are or
|
| - // are not any available receivers).
|
| - void UpdateLabel();
|
| -
|
| - private:
|
| - void UpdateLabelCallback(
|
| - const CastConfigDelegate::ReceiversAndActivites& receivers_activities);
|
| -
|
| - CastConfigDelegate* cast_config_delegate_;
|
| - base::WeakPtrFactory<CastSelectDefaultView> weak_ptr_factory_;
|
| - DISALLOW_COPY_AND_ASSIGN(CastSelectDefaultView);
|
| -};
|
| -
|
| CastSelectDefaultView::CastSelectDefaultView(
|
| SystemTrayItem* owner,
|
| CastConfigDelegate* cast_config_delegate,
|
| @@ -106,38 +78,6 @@ void CastSelectDefaultView::UpdateLabel() {
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| -// This view is displayed when the screen is actively being casted; it allows
|
| -// the user to easily stop casting. It fully replaces the
|
| -// |CastSelectDefaultView| view inside of the |CastDuplexView|.
|
| -class CastCastView : public views::View, public views::ButtonListener {
|
| - public:
|
| - explicit CastCastView(CastConfigDelegate* cast_config_delegate);
|
| - ~CastCastView() override;
|
| -
|
| - // Updates the label for the stop view to include information about the
|
| - // current device that is being casted.
|
| - void UpdateLabel();
|
| -
|
| - private:
|
| - void UpdateLabelCallback(
|
| - const CastConfigDelegate::ReceiversAndActivites& receivers_activities);
|
| -
|
| - // Overridden from views::View.
|
| - int GetHeightForWidth(int width) const override;
|
| - void Layout() override;
|
| -
|
| - // Overridden from views::ButtonListener.
|
| - void ButtonPressed(views::Button* sender, const ui::Event& event) override;
|
| -
|
| - CastConfigDelegate* cast_config_delegate_;
|
| - views::ImageView* icon_;
|
| - views::Label* label_;
|
| - TrayPopupLabelButton* stop_button_;
|
| - base::WeakPtrFactory<CastCastView> weak_ptr_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(CastCastView);
|
| -};
|
| -
|
| CastCastView::CastCastView(CastConfigDelegate* cast_config_delegate)
|
| : cast_config_delegate_(cast_config_delegate), weak_ptr_factory_(this) {
|
| // We will initialize the primary tray view which shows a stop button here.
|
| @@ -206,6 +146,12 @@ void CastCastView::Layout() {
|
| }
|
| }
|
|
|
| +void CastCastView::StopCasting() {
|
| + cast_config_delegate_->StopCasting();
|
| + Shell::GetInstance()->metrics()->RecordUserMetricsAction(
|
| + ash::UMA_STATUS_AREA_CAST_STOP_CAST);
|
| +}
|
| +
|
| void CastCastView::UpdateLabel() {
|
| if (cast_config_delegate_ == nullptr ||
|
| cast_config_delegate_->HasCastExtension() == false)
|
| @@ -245,43 +191,9 @@ void CastCastView::UpdateLabelCallback(
|
| void CastCastView::ButtonPressed(views::Button* sender,
|
| const ui::Event& event) {
|
| DCHECK(sender == stop_button_);
|
| - cast_config_delegate_->StopCasting();
|
| - Shell::GetInstance()->metrics()->RecordUserMetricsAction(
|
| - ash::UMA_STATUS_AREA_CAST_STOP_CAST);
|
| + StopCasting();
|
| }
|
|
|
| -// This view by itself does very little. It acts as a front-end for managing
|
| -// which of the two child views (|CastSelectDefaultView| and |CastCastView|)
|
| -// is active.
|
| -class CastDuplexView : public views::View {
|
| - public:
|
| - CastDuplexView(SystemTrayItem* owner,
|
| - CastConfigDelegate* config_delegate,
|
| - bool show_more);
|
| - ~CastDuplexView() override;
|
| -
|
| - // Activate either the casting or select view.
|
| - void ActivateCastView();
|
| - void ActivateSelectView();
|
| -
|
| - CastSelectDefaultView* select_view() { return select_view_; }
|
| - CastCastView* cast_view() { return cast_view_; }
|
| -
|
| - private:
|
| - // Overridden from views::View.
|
| - void ChildPreferredSizeChanged(views::View* child) override;
|
| - void Layout() override;
|
| -
|
| - // Only one of |select_view_| or |cast_view_| will be displayed at any given
|
| - // time. This will return the view is being displayed.
|
| - views::View* ActiveChildView();
|
| -
|
| - CastSelectDefaultView* select_view_;
|
| - CastCastView* cast_view_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(CastDuplexView);
|
| -};
|
| -
|
| CastDuplexView::CastDuplexView(SystemTrayItem* owner,
|
| CastConfigDelegate* config_delegate,
|
| bool show_more) {
|
| @@ -378,44 +290,6 @@ void CastTrayView::UpdateAlignment(ShelfAlignment alignment) {
|
| Layout();
|
| }
|
|
|
| -// This view displays a list of cast receivers that can be clicked on and casted
|
| -// to. It is activated by clicking on the chevron inside of
|
| -// |CastSelectDefaultView|.
|
| -class CastDetailedView : public TrayDetailsView, public ViewClickListener {
|
| - public:
|
| - CastDetailedView(SystemTrayItem* owner,
|
| - CastConfigDelegate* cast_config_delegate,
|
| - user::LoginStatus login);
|
| - ~CastDetailedView() override;
|
| -
|
| - private:
|
| - void CreateItems();
|
| -
|
| - void UpdateReceiverList();
|
| - void UpdateReceiverListCallback(
|
| - const CastConfigDelegate::ReceiversAndActivites&
|
| - new_receivers_and_activities);
|
| - void UpdateReceiverListFromCachedData();
|
| - views::View* AddToReceiverList(
|
| - const CastConfigDelegate::ReceiverAndActivity& receiverActivity);
|
| -
|
| - void AppendSettingsEntries();
|
| - void AppendHeaderEntry();
|
| -
|
| - // Overridden from ViewClickListener.
|
| - void OnViewClicked(views::View* sender) override;
|
| -
|
| - CastConfigDelegate* cast_config_delegate_;
|
| - user::LoginStatus login_;
|
| - views::View* options_ = nullptr;
|
| - CastConfigDelegate::ReceiversAndActivites receivers_and_activities_;
|
| - // A mapping from the view pointer to the associated activity id
|
| - std::map<views::View*, std::string> receiver_activity_map_;
|
| - base::WeakPtrFactory<CastDetailedView> weak_ptr_factory_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(CastDetailedView);
|
| -};
|
| -
|
| CastDetailedView::CastDetailedView(SystemTrayItem* owner,
|
| CastConfigDelegate* cast_config_delegate,
|
| user::LoginStatus login)
|
| @@ -430,6 +304,16 @@ CastDetailedView::CastDetailedView(SystemTrayItem* owner,
|
| CastDetailedView::~CastDetailedView() {
|
| }
|
|
|
| +void CastDetailedView::SimulateViewClickedForTest(
|
| + const std::string& receiver_id) {
|
| + for (auto& it : receiver_activity_map_) {
|
| + if (it.second == receiver_id) {
|
| + OnViewClicked(it.first);
|
| + break;
|
| + }
|
| + }
|
| +}
|
| +
|
| void CastDetailedView::CreateItems() {
|
| CreateScrollableList();
|
| AppendSettingsEntries();
|
|
|