Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(181)

Side by Side Diff: ui/arc/notification/arc_custom_notification_view.cc

Issue 2892893002: Initial implementation of new-style notification (Closed)
Patch Set: addressed comments Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "ui/arc/notification/arc_custom_notification_view.h" 5 #include "ui/arc/notification/arc_custom_notification_view.h"
6 6
7 #include "ash/wm/window_util.h" 7 #include "ash/wm/window_util.h"
8 #include "base/auto_reset.h" 8 #include "base/auto_reset.h"
9 #include "base/memory/ptr_util.h" 9 #include "base/memory/ptr_util.h"
10 #include "components/exo/notification_surface.h" 10 #include "components/exo/notification_surface.h"
11 #include "components/exo/surface.h" 11 #include "components/exo/surface.h"
12 #include "ui/accessibility/ax_action_data.h" 12 #include "ui/accessibility/ax_action_data.h"
13 #include "ui/accessibility/ax_node_data.h"
13 #include "ui/arc/notification/arc_notification_view.h" 14 #include "ui/arc/notification/arc_notification_view.h"
14 #include "ui/base/l10n/l10n_util.h" 15 #include "ui/base/l10n/l10n_util.h"
15 #include "ui/base/resource/resource_bundle.h" 16 #include "ui/base/resource/resource_bundle.h"
16 #include "ui/compositor/layer_animation_observer.h" 17 #include "ui/compositor/layer_animation_observer.h"
17 #include "ui/events/event_handler.h" 18 #include "ui/events/event_handler.h"
18 #include "ui/gfx/animation/linear_animation.h" 19 #include "ui/gfx/animation/linear_animation.h"
19 #include "ui/gfx/animation/tween.h" 20 #include "ui/gfx/animation/tween.h"
20 #include "ui/gfx/canvas.h" 21 #include "ui/gfx/canvas.h"
21 #include "ui/gfx/transform.h" 22 #include "ui/gfx/transform.h"
22 #include "ui/message_center/message_center_style.h" 23 #include "ui/message_center/message_center_style.h"
(...skipping 221 matching lines...) Expand 10 before | Expand all | Expand 10 after
244 surface_manager->AddObserver(this); 245 surface_manager->AddObserver(this);
245 exo::NotificationSurface* surface = 246 exo::NotificationSurface* surface =
246 surface_manager->GetSurface(notification_key_); 247 surface_manager->GetSurface(notification_key_);
247 if (surface) 248 if (surface)
248 OnNotificationSurfaceAdded(surface); 249 OnNotificationSurfaceAdded(surface);
249 } 250 }
250 251
251 // Create a layer as an anchor to insert surface copy during a slide. 252 // Create a layer as an anchor to insert surface copy during a slide.
252 SetPaintToLayer(); 253 SetPaintToLayer();
253 UpdatePreferredSize(); 254 UpdatePreferredSize();
255 UpdateAccessibleName();
254 } 256 }
255 257
256 ArcCustomNotificationView::~ArcCustomNotificationView() { 258 ArcCustomNotificationView::~ArcCustomNotificationView() {
257 SetSurface(nullptr); 259 SetSurface(nullptr);
258 260
259 auto* surface_manager = ArcNotificationSurfaceManager::Get(); 261 auto* surface_manager = ArcNotificationSurfaceManager::Get();
260 if (surface_manager) 262 if (surface_manager)
261 surface_manager->RemoveObserver(this); 263 surface_manager->RemoveObserver(this);
262 if (item_) { 264 if (item_) {
263 item_->RemoveObserver(this); 265 item_->RemoveObserver(this);
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
476 settings_button_->background()->get_color() != 478 settings_button_->background()->get_color() !=
477 GetControlButtonBackgroundColor(item_->GetShownContents())) 479 GetControlButtonBackgroundColor(item_->GetShownContents()))
478 return true; 480 return true;
479 if (close_button_ && 481 if (close_button_ &&
480 close_button_->background()->get_color() != 482 close_button_->background()->get_color() !=
481 GetControlButtonBackgroundColor(item_->GetShownContents())) 483 GetControlButtonBackgroundColor(item_->GetShownContents()))
482 return true; 484 return true;
483 return false; 485 return false;
484 } 486 }
485 487
488 void ArcCustomNotificationView::UpdateAccessibleName() {
489 // Don't update the accessible name when we are about to be destroyed.
490 if (!item_)
491 return;
492
493 accessible_name_ = item_->GetAccessibleName();
494 }
495
486 void ArcCustomNotificationView::ViewHierarchyChanged( 496 void ArcCustomNotificationView::ViewHierarchyChanged(
487 const views::View::ViewHierarchyChangedDetails& details) { 497 const views::View::ViewHierarchyChangedDetails& details) {
488 views::Widget* widget = GetWidget(); 498 views::Widget* widget = GetWidget();
489 499
490 if (!details.is_add) { 500 if (!details.is_add) {
491 // Resets slide helper when this view is removed from its parent. 501 // Resets slide helper when this view is removed from its parent.
492 slide_helper_.reset(); 502 slide_helper_.reset();
493 503
494 // Bail if this view is no longer attached to a widget or native_view() has 504 // Bail if this view is no longer attached to a widget or native_view() has
495 // attached to a different widget. 505 // attached to a different widget.
(...skipping 120 matching lines...) Expand 10 before | Expand all | Expand 10 after
616 626
617 bool ArcCustomNotificationView::HandleAccessibleAction( 627 bool ArcCustomNotificationView::HandleAccessibleAction(
618 const ui::AXActionData& action_data) { 628 const ui::AXActionData& action_data) {
619 if (item_ && action_data.action == ui::AX_ACTION_DO_DEFAULT) { 629 if (item_ && action_data.action == ui::AX_ACTION_DO_DEFAULT) {
620 item_->ToggleExpansion(); 630 item_->ToggleExpansion();
621 return true; 631 return true;
622 } 632 }
623 return false; 633 return false;
624 } 634 }
625 635
636 void ArcCustomNotificationView::GetAccessibleNodeData(
637 ui::AXNodeData* node_data) {
638 node_data->role = ui::AX_ROLE_BUTTON;
639 node_data->SetName(accessible_name_);
640 }
641
626 void ArcCustomNotificationView::ButtonPressed(views::Button* sender, 642 void ArcCustomNotificationView::ButtonPressed(views::Button* sender,
627 const ui::Event& event) { 643 const ui::Event& event) {
628 if (item_ && !item_->GetPinned() && sender == close_button_.get()) { 644 if (item_ && !item_->GetPinned() && sender == close_button_.get()) {
629 CHECK_EQ(ArcNotificationView::kViewClassName, parent()->GetClassName()); 645 CHECK_EQ(ArcNotificationView::kViewClassName, parent()->GetClassName());
630 static_cast<ArcNotificationView*>(parent())->OnCloseButtonPressed(); 646 static_cast<ArcNotificationView*>(parent())->OnCloseButtonPressed();
631 } 647 }
632 if (item_ && settings_button_ && sender == settings_button_) { 648 if (item_ && settings_button_ && sender == settings_button_) {
633 item_->OpenSettings(); 649 item_->OpenSettings();
634 } 650 }
635 } 651 }
(...skipping 16 matching lines...) Expand all
652 void ArcCustomNotificationView::OnItemDestroying() { 668 void ArcCustomNotificationView::OnItemDestroying() {
653 item_->RemoveObserver(this); 669 item_->RemoveObserver(this);
654 item_ = nullptr; 670 item_ = nullptr;
655 671
656 // Reset |surface_| with |item_| since no one is observing the |surface_| 672 // Reset |surface_| with |item_| since no one is observing the |surface_|
657 // after |item_| is gone and this view should be removed soon. 673 // after |item_| is gone and this view should be removed soon.
658 SetSurface(nullptr); 674 SetSurface(nullptr);
659 } 675 }
660 676
661 void ArcCustomNotificationView::OnItemUpdated() { 677 void ArcCustomNotificationView::OnItemUpdated() {
678 UpdateAccessibleName();
662 UpdatePinnedState(); 679 UpdatePinnedState();
663 UpdateSnapshot(); 680 UpdateSnapshot();
664 if (ShouldUpdateControlButtonsColor()) 681 if (ShouldUpdateControlButtonsColor())
665 StartControlButtonsColorAnimation(); 682 StartControlButtonsColorAnimation();
666 } 683 }
667 684
668 void ArcCustomNotificationView::OnNotificationSurfaceAdded( 685 void ArcCustomNotificationView::OnNotificationSurfaceAdded(
669 exo::NotificationSurface* surface) { 686 exo::NotificationSurface* surface) {
670 if (surface->notification_id() != notification_key_) 687 if (surface->notification_id() != notification_key_)
671 return; 688 return;
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
707 } 724 }
708 if (close_button_) { 725 if (close_button_) {
709 close_button_->set_background( 726 close_button_->set_background(
710 views::Background::CreateSolidBackground(current_color)); 727 views::Background::CreateSolidBackground(current_color));
711 close_button_->SchedulePaint(); 728 close_button_->SchedulePaint();
712 } 729 }
713 } 730 }
714 } 731 }
715 732
716 } // namespace arc 733 } // namespace arc
OLDNEW
« no previous file with comments | « ui/arc/notification/arc_custom_notification_view.h ('k') | ui/arc/notification/arc_notification_item.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698