| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ash/system/cast/tray_cast.h" | 5 #include "ash/system/cast/tray_cast.h" |
| 6 | 6 |
| 7 #include "ash/common/shelf/shelf_types.h" | 7 #include "ash/common/shelf/shelf_types.h" |
| 8 #include "ash/common/shelf/wm_shelf_util.h" | 8 #include "ash/common/shelf/wm_shelf_util.h" |
| 9 #include "ash/session/session_state_delegate.h" | 9 #include "ash/session/session_state_delegate.h" |
| 10 #include "ash/shelf/shelf_util.h" | 10 #include "ash/shelf/shelf_util.h" |
| (...skipping 354 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 365 SetLayoutManager(new views::BoxLayout(layout, 0, 0, 0)); | 365 SetLayoutManager(new views::BoxLayout(layout, 0, 0, 0)); |
| 366 Layout(); | 366 Layout(); |
| 367 } | 367 } |
| 368 | 368 |
| 369 // This view displays a list of cast receivers that can be clicked on and casted | 369 // This view displays a list of cast receivers that can be clicked on and casted |
| 370 // to. It is activated by clicking on the chevron inside of | 370 // to. It is activated by clicking on the chevron inside of |
| 371 // |CastSelectDefaultView|. | 371 // |CastSelectDefaultView|. |
| 372 class CastDetailedView : public TrayDetailsView, public ViewClickListener { | 372 class CastDetailedView : public TrayDetailsView, public ViewClickListener { |
| 373 public: | 373 public: |
| 374 CastDetailedView(SystemTrayItem* owner, | 374 CastDetailedView(SystemTrayItem* owner, |
| 375 user::LoginStatus login, | 375 LoginStatus login, |
| 376 const CastConfigDelegate::ReceiversAndActivities& | 376 const CastConfigDelegate::ReceiversAndActivities& |
| 377 receivers_and_activities); | 377 receivers_and_activities); |
| 378 ~CastDetailedView() override; | 378 ~CastDetailedView() override; |
| 379 | 379 |
| 380 // Makes the detail view think the view associated with the given receiver_id | 380 // Makes the detail view think the view associated with the given receiver_id |
| 381 // was clicked. This will start a cast. | 381 // was clicked. This will start a cast. |
| 382 void SimulateViewClickedForTest(const std::string& receiver_id); | 382 void SimulateViewClickedForTest(const std::string& receiver_id); |
| 383 | 383 |
| 384 // Updates the list of available receivers. | 384 // Updates the list of available receivers. |
| 385 void UpdateReceiverList(const CastConfigDelegate::ReceiversAndActivities& | 385 void UpdateReceiverList(const CastConfigDelegate::ReceiversAndActivities& |
| 386 new_receivers_and_activities); | 386 new_receivers_and_activities); |
| 387 | 387 |
| 388 private: | 388 private: |
| 389 void CreateItems(); | 389 void CreateItems(); |
| 390 | 390 |
| 391 void UpdateReceiverListFromCachedData(); | 391 void UpdateReceiverListFromCachedData(); |
| 392 views::View* AddToReceiverList( | 392 views::View* AddToReceiverList( |
| 393 const CastConfigDelegate::ReceiverAndActivity& receiverActivity); | 393 const CastConfigDelegate::ReceiverAndActivity& receiverActivity); |
| 394 | 394 |
| 395 void AppendSettingsEntries(); | 395 void AppendSettingsEntries(); |
| 396 void AppendHeaderEntry(); | 396 void AppendHeaderEntry(); |
| 397 | 397 |
| 398 // Overridden from ViewClickListener. | 398 // Overridden from ViewClickListener. |
| 399 void OnViewClicked(views::View* sender) override; | 399 void OnViewClicked(views::View* sender) override; |
| 400 | 400 |
| 401 user::LoginStatus login_; | 401 LoginStatus login_; |
| 402 views::View* options_ = nullptr; | 402 views::View* options_ = nullptr; |
| 403 // A mapping from the receiver id to the receiver/activity data. | 403 // A mapping from the receiver id to the receiver/activity data. |
| 404 std::map<std::string, CastConfigDelegate::ReceiverAndActivity> | 404 std::map<std::string, CastConfigDelegate::ReceiverAndActivity> |
| 405 receivers_and_activities_; | 405 receivers_and_activities_; |
| 406 // A mapping from the view pointer to the associated activity id. | 406 // A mapping from the view pointer to the associated activity id. |
| 407 std::map<views::View*, std::string> receiver_activity_map_; | 407 std::map<views::View*, std::string> receiver_activity_map_; |
| 408 | 408 |
| 409 DISALLOW_COPY_AND_ASSIGN(CastDetailedView); | 409 DISALLOW_COPY_AND_ASSIGN(CastDetailedView); |
| 410 }; | 410 }; |
| 411 | 411 |
| 412 CastDetailedView::CastDetailedView( | 412 CastDetailedView::CastDetailedView( |
| 413 SystemTrayItem* owner, | 413 SystemTrayItem* owner, |
| 414 user::LoginStatus login, | 414 LoginStatus login, |
| 415 const CastConfigDelegate::ReceiversAndActivities& receivers_and_activities) | 415 const CastConfigDelegate::ReceiversAndActivities& receivers_and_activities) |
| 416 : TrayDetailsView(owner), login_(login) { | 416 : TrayDetailsView(owner), login_(login) { |
| 417 CreateItems(); | 417 CreateItems(); |
| 418 UpdateReceiverList(receivers_and_activities); | 418 UpdateReceiverList(receivers_and_activities); |
| 419 } | 419 } |
| 420 | 420 |
| 421 CastDetailedView::~CastDetailedView() { | 421 CastDetailedView::~CastDetailedView() { |
| 422 } | 422 } |
| 423 | 423 |
| 424 void CastDetailedView::SimulateViewClickedForTest( | 424 void CastDetailedView::SimulateViewClickedForTest( |
| (...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 499 scroll_content()->AddChildView(container); | 499 scroll_content()->AddChildView(container); |
| 500 return container; | 500 return container; |
| 501 } | 501 } |
| 502 | 502 |
| 503 void CastDetailedView::AppendSettingsEntries() { | 503 void CastDetailedView::AppendSettingsEntries() { |
| 504 // Settings requires a browser window, hide it for non logged in user. | 504 // Settings requires a browser window, hide it for non logged in user. |
| 505 const bool userAddingRunning = Shell::GetInstance() | 505 const bool userAddingRunning = Shell::GetInstance() |
| 506 ->session_state_delegate() | 506 ->session_state_delegate() |
| 507 ->IsInSecondaryLoginScreen(); | 507 ->IsInSecondaryLoginScreen(); |
| 508 | 508 |
| 509 if (login_ == user::LOGGED_IN_NONE || login_ == user::LOGGED_IN_LOCKED || | 509 if (login_ == LoginStatus::NOT_LOGGED_IN || login_ == LoginStatus::LOCKED || |
| 510 userAddingRunning) | 510 userAddingRunning) |
| 511 return; | 511 return; |
| 512 | 512 |
| 513 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 513 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| 514 HoverHighlightView* container = new HoverHighlightView(this); | 514 HoverHighlightView* container = new HoverHighlightView(this); |
| 515 container->AddLabel(rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_CAST_OPTIONS), | 515 container->AddLabel(rb.GetLocalizedString(IDS_ASH_STATUS_TRAY_CAST_OPTIONS), |
| 516 gfx::ALIGN_LEFT, false /* highlight */); | 516 gfx::ALIGN_LEFT, false /* highlight */); |
| 517 | 517 |
| 518 AddChildView(container); | 518 AddChildView(container); |
| 519 options_ = container; | 519 options_ = container; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 563 } | 563 } |
| 564 | 564 |
| 565 const std::string& TrayCast::GetDisplayedCastId() { | 565 const std::string& TrayCast::GetDisplayedCastId() { |
| 566 return default_->cast_view()->displayed_activity_id(); | 566 return default_->cast_view()->displayed_activity_id(); |
| 567 } | 567 } |
| 568 | 568 |
| 569 const views::View* TrayCast::GetDefaultView() const { | 569 const views::View* TrayCast::GetDefaultView() const { |
| 570 return default_; | 570 return default_; |
| 571 } | 571 } |
| 572 | 572 |
| 573 views::View* TrayCast::CreateTrayView(user::LoginStatus status) { | 573 views::View* TrayCast::CreateTrayView(LoginStatus status) { |
| 574 CHECK(tray_ == nullptr); | 574 CHECK(tray_ == nullptr); |
| 575 tray_ = new tray::CastTrayView(this); | 575 tray_ = new tray::CastTrayView(this); |
| 576 tray_->SetVisible(is_casting_); | 576 tray_->SetVisible(is_casting_); |
| 577 return tray_; | 577 return tray_; |
| 578 } | 578 } |
| 579 | 579 |
| 580 views::View* TrayCast::CreateDefaultView(user::LoginStatus status) { | 580 views::View* TrayCast::CreateDefaultView(LoginStatus status) { |
| 581 CHECK(default_ == nullptr); | 581 CHECK(default_ == nullptr); |
| 582 | 582 |
| 583 if (HasCastExtension()) { | 583 if (HasCastExtension()) { |
| 584 ash::CastConfigDelegate* cast_config_delegate = GetCastConfigDelegate(); | 584 ash::CastConfigDelegate* cast_config_delegate = GetCastConfigDelegate(); |
| 585 | 585 |
| 586 // Add the cast observer here instead of the ctor for two reasons: | 586 // Add the cast observer here instead of the ctor for two reasons: |
| 587 // - The ctor gets called too early in the initialization cycle (at least | 587 // - The ctor gets called too early in the initialization cycle (at least |
| 588 // for the tests); the correct profile hasn't been setup yet. | 588 // for the tests); the correct profile hasn't been setup yet. |
| 589 // - If we're using the cast extension backend (media router is disabled), | 589 // - If we're using the cast extension backend (media router is disabled), |
| 590 // then the user can install the extension at any point in time. The | 590 // then the user can install the extension at any point in time. The |
| 591 // return value of HasCastExtension() can change, so only checking it in | 591 // return value of HasCastExtension() can change, so only checking it in |
| 592 // the ctor isn't enough. | 592 // the ctor isn't enough. |
| 593 if (!added_observer_) { | 593 if (!added_observer_) { |
| 594 cast_config_delegate->AddObserver(this); | 594 cast_config_delegate->AddObserver(this); |
| 595 added_observer_ = true; | 595 added_observer_ = true; |
| 596 } | 596 } |
| 597 | 597 |
| 598 // The extension updates its view model whenever the popup is opened, so we | 598 // The extension updates its view model whenever the popup is opened, so we |
| 599 // probably should as well. | 599 // probably should as well. |
| 600 cast_config_delegate->RequestDeviceRefresh(); | 600 cast_config_delegate->RequestDeviceRefresh(); |
| 601 } | 601 } |
| 602 | 602 |
| 603 default_ = new tray::CastDuplexView(this, status != user::LOGGED_IN_LOCKED, | 603 default_ = new tray::CastDuplexView(this, status != LoginStatus::LOCKED, |
| 604 receivers_and_activities_); | 604 receivers_and_activities_); |
| 605 default_->set_id(TRAY_VIEW); | 605 default_->set_id(TRAY_VIEW); |
| 606 default_->select_view()->set_id(SELECT_VIEW); | 606 default_->select_view()->set_id(SELECT_VIEW); |
| 607 default_->cast_view()->set_id(CAST_VIEW); | 607 default_->cast_view()->set_id(CAST_VIEW); |
| 608 | 608 |
| 609 UpdatePrimaryView(); | 609 UpdatePrimaryView(); |
| 610 return default_; | 610 return default_; |
| 611 } | 611 } |
| 612 | 612 |
| 613 views::View* TrayCast::CreateDetailedView(user::LoginStatus status) { | 613 views::View* TrayCast::CreateDetailedView(LoginStatus status) { |
| 614 Shell::GetInstance()->metrics()->RecordUserMetricsAction( | 614 Shell::GetInstance()->metrics()->RecordUserMetricsAction( |
| 615 ash::UMA_STATUS_AREA_DETAILED_CAST_VIEW); | 615 ash::UMA_STATUS_AREA_DETAILED_CAST_VIEW); |
| 616 CHECK(detailed_ == nullptr); | 616 CHECK(detailed_ == nullptr); |
| 617 detailed_ = | 617 detailed_ = |
| 618 new tray::CastDetailedView(this, status, receivers_and_activities_); | 618 new tray::CastDetailedView(this, status, receivers_and_activities_); |
| 619 return detailed_; | 619 return detailed_; |
| 620 } | 620 } |
| 621 | 621 |
| 622 void TrayCast::DestroyTrayView() { | 622 void TrayCast::DestroyTrayView() { |
| 623 tray_ = nullptr; | 623 tray_ = nullptr; |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 673 is_casting_ = started; | 673 is_casting_ = started; |
| 674 UpdatePrimaryView(); | 674 UpdatePrimaryView(); |
| 675 } | 675 } |
| 676 | 676 |
| 677 void TrayCast::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) { | 677 void TrayCast::UpdateAfterShelfAlignmentChange(ShelfAlignment alignment) { |
| 678 if (tray_) | 678 if (tray_) |
| 679 tray_->UpdateAlignment(alignment); | 679 tray_->UpdateAlignment(alignment); |
| 680 } | 680 } |
| 681 | 681 |
| 682 } // namespace ash | 682 } // namespace ash |
| OLD | NEW |