| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/web_notification/web_notification_tray.h" | 5 #include "ash/system/web_notification/web_notification_tray.h" |
| 6 | 6 |
| 7 #include "ash/public/cpp/shell_window_ids.h" | 7 #include "ash/public/cpp/shell_window_ids.h" |
| 8 #include "ash/resources/vector_icons/vector_icons.h" | 8 #include "ash/resources/vector_icons/vector_icons.h" |
| 9 #include "ash/root_window_controller.h" | 9 #include "ash/root_window_controller.h" |
| 10 #include "ash/session/session_controller.h" | 10 #include "ash/session/session_controller.h" |
| (...skipping 256 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 267 DISALLOW_COPY_AND_ASSIGN(WebNotificationLabel); | 267 DISALLOW_COPY_AND_ASSIGN(WebNotificationLabel); |
| 268 }; | 268 }; |
| 269 | 269 |
| 270 WebNotificationTray::WebNotificationTray(WmShelf* shelf, | 270 WebNotificationTray::WebNotificationTray(WmShelf* shelf, |
| 271 WmWindow* status_area_window, | 271 WmWindow* status_area_window, |
| 272 SystemTray* system_tray) | 272 SystemTray* system_tray) |
| 273 : TrayBackgroundView(shelf), | 273 : TrayBackgroundView(shelf), |
| 274 status_area_window_(status_area_window), | 274 status_area_window_(status_area_window), |
| 275 system_tray_(system_tray), | 275 system_tray_(system_tray), |
| 276 show_message_center_on_unlock_(false), | 276 show_message_center_on_unlock_(false), |
| 277 should_update_tray_content_(false), | 277 should_update_tray_content_(false) { |
| 278 should_block_shelf_auto_hide_(false) { | |
| 279 DCHECK(shelf); | 278 DCHECK(shelf); |
| 280 DCHECK(status_area_window_); | 279 DCHECK(status_area_window_); |
| 281 DCHECK(system_tray_); | 280 DCHECK(system_tray_); |
| 282 | 281 |
| 283 SetInkDropMode(InkDropMode::ON); | 282 SetInkDropMode(InkDropMode::ON); |
| 284 gfx::ImageSkia bell_image = | 283 gfx::ImageSkia bell_image = |
| 285 CreateVectorIcon(kShelfNotificationsIcon, kShelfIconColor); | 284 CreateVectorIcon(kShelfNotificationsIcon, kShelfIconColor); |
| 286 bell_icon_.reset( | 285 bell_icon_.reset( |
| 287 new WebNotificationImage(bell_image, animation_container_.get(), this)); | 286 new WebNotificationImage(bell_image, animation_container_.get(), this)); |
| 288 tray_container()->AddChildView(bell_icon_.get()); | 287 tray_container()->AddChildView(bell_icon_.get()); |
| (...skipping 27 matching lines...) Expand all Loading... |
| 316 void WebNotificationTray::DisableAnimationsForTest(bool disable) { | 315 void WebNotificationTray::DisableAnimationsForTest(bool disable) { |
| 317 disable_animations_for_test = disable; | 316 disable_animations_for_test = disable; |
| 318 } | 317 } |
| 319 | 318 |
| 320 // Public methods. | 319 // Public methods. |
| 321 | 320 |
| 322 bool WebNotificationTray::ShowMessageCenterInternal(bool show_settings) { | 321 bool WebNotificationTray::ShowMessageCenterInternal(bool show_settings) { |
| 323 if (!ShouldShowMessageCenter()) | 322 if (!ShouldShowMessageCenter()) |
| 324 return false; | 323 return false; |
| 325 | 324 |
| 326 should_block_shelf_auto_hide_ = true; | |
| 327 message_center::MessageCenterBubble* message_center_bubble = | 325 message_center::MessageCenterBubble* message_center_bubble = |
| 328 new message_center::MessageCenterBubble(message_center(), | 326 new message_center::MessageCenterBubble(message_center(), |
| 329 message_center_tray_.get()); | 327 message_center_tray_.get()); |
| 330 | 328 |
| 331 // In the horizontal case, message center starts from the top of the shelf. | 329 // In the horizontal case, message center starts from the top of the shelf. |
| 332 // In the vertical case, it starts from the bottom of WebNotificationTray. | 330 // In the vertical case, it starts from the bottom of WebNotificationTray. |
| 333 const int max_height = shelf()->IsHorizontalAlignment() | 331 const int max_height = shelf()->IsHorizontalAlignment() |
| 334 ? shelf()->GetIdealBounds().y() | 332 ? shelf()->GetIdealBounds().y() |
| 335 : GetBoundsInScreen().bottom(); | 333 : GetBoundsInScreen().bottom(); |
| 336 message_center_bubble->SetMaxHeight(max_height); | 334 message_center_bubble->SetMaxHeight(max_height); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 357 | 355 |
| 358 bool WebNotificationTray::ShowMessageCenter() { | 356 bool WebNotificationTray::ShowMessageCenter() { |
| 359 return ShowMessageCenterInternal(false /* show_settings */); | 357 return ShowMessageCenterInternal(false /* show_settings */); |
| 360 } | 358 } |
| 361 | 359 |
| 362 void WebNotificationTray::HideMessageCenter() { | 360 void WebNotificationTray::HideMessageCenter() { |
| 363 if (!message_center_bubble()) | 361 if (!message_center_bubble()) |
| 364 return; | 362 return; |
| 365 SetIsActive(false); | 363 SetIsActive(false); |
| 366 message_center_bubble_.reset(); | 364 message_center_bubble_.reset(); |
| 367 should_block_shelf_auto_hide_ = false; | |
| 368 show_message_center_on_unlock_ = false; | 365 show_message_center_on_unlock_ = false; |
| 369 shelf()->UpdateAutoHideState(); | 366 shelf()->UpdateAutoHideState(); |
| 370 } | 367 } |
| 371 | 368 |
| 372 void WebNotificationTray::SetTrayBubbleHeight(int height) { | 369 void WebNotificationTray::SetTrayBubbleHeight(int height) { |
| 373 popup_alignment_delegate_->SetTrayBubbleHeight(height); | 370 popup_alignment_delegate_->SetTrayBubbleHeight(height); |
| 374 } | 371 } |
| 375 | 372 |
| 376 int WebNotificationTray::tray_bubble_height_for_test() const { | 373 int WebNotificationTray::tray_bubble_height_for_test() const { |
| 377 return popup_alignment_delegate_->tray_bubble_height_for_test(); | 374 return popup_alignment_delegate_->tray_bubble_height_for_test(); |
| (...skipping 12 matching lines...) Expand all Loading... |
| 390 popup_collection_->MarkAllPopupsShown(); | 387 popup_collection_->MarkAllPopupsShown(); |
| 391 } | 388 } |
| 392 | 389 |
| 393 // Private methods. | 390 // Private methods. |
| 394 | 391 |
| 395 bool WebNotificationTray::ShouldShowMessageCenter() const { | 392 bool WebNotificationTray::ShouldShowMessageCenter() const { |
| 396 // Hidden at login screen, during supervised user creation, etc. | 393 // Hidden at login screen, during supervised user creation, etc. |
| 397 return Shell::Get()->session_controller()->ShouldShowNotificationTray(); | 394 return Shell::Get()->session_controller()->ShouldShowNotificationTray(); |
| 398 } | 395 } |
| 399 | 396 |
| 400 bool WebNotificationTray::ShouldBlockShelfAutoHide() const { | |
| 401 return should_block_shelf_auto_hide_; | |
| 402 } | |
| 403 | |
| 404 bool WebNotificationTray::IsMessageCenterBubbleVisible() const { | 397 bool WebNotificationTray::IsMessageCenterBubbleVisible() const { |
| 405 return (message_center_bubble() && | 398 return (message_center_bubble() && |
| 406 message_center_bubble()->bubble()->IsVisible()); | 399 message_center_bubble()->bubble()->IsVisible()); |
| 407 } | 400 } |
| 408 | 401 |
| 409 void WebNotificationTray::ShowMessageCenterBubble() { | 402 void WebNotificationTray::ShowMessageCenterBubble() { |
| 410 if (!IsMessageCenterBubbleVisible()) | 403 if (!IsMessageCenterBubbleVisible()) |
| 411 message_center_tray_->ShowMessageCenterBubble(); | 404 message_center_tray_->ShowMessageCenterBubble(); |
| 412 } | 405 } |
| 413 | 406 |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 616 | 609 |
| 617 message_center::MessageCenterBubble* | 610 message_center::MessageCenterBubble* |
| 618 WebNotificationTray::GetMessageCenterBubbleForTest() { | 611 WebNotificationTray::GetMessageCenterBubbleForTest() { |
| 619 if (!message_center_bubble()) | 612 if (!message_center_bubble()) |
| 620 return nullptr; | 613 return nullptr; |
| 621 return static_cast<message_center::MessageCenterBubble*>( | 614 return static_cast<message_center::MessageCenterBubble*>( |
| 622 message_center_bubble()->bubble()); | 615 message_center_bubble()->bubble()); |
| 623 } | 616 } |
| 624 | 617 |
| 625 } // namespace ash | 618 } // namespace ash |
| OLD | NEW |