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

Unified Diff: ash/common/system/toast/toast_overlay.cc

Issue 2139183003: mash: Migrate //ash/system/toast to WM common types (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: move test back Created 4 years, 5 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ash/common/system/toast/toast_overlay.h ('k') | ash/shell.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/common/system/toast/toast_overlay.cc
diff --git a/ash/system/toast/toast_overlay.cc b/ash/common/system/toast/toast_overlay.cc
similarity index 89%
rename from ash/system/toast/toast_overlay.cc
rename to ash/common/system/toast/toast_overlay.cc
index 97e3cb741e80f1819237319f7fa78ba669d6e231..87d49c687e703ab71e236c569190dc65a394d786 100644
--- a/ash/system/toast/toast_overlay.cc
+++ b/ash/common/system/toast/toast_overlay.cc
@@ -2,16 +2,14 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include "ash/system/toast/toast_overlay.h"
+#include "ash/common/system/toast/toast_overlay.h"
#include "ash/common/shelf/wm_shelf.h"
#include "ash/common/shell_window_ids.h"
+#include "ash/common/wm_lookup.h"
#include "ash/common/wm_root_window_controller.h"
#include "ash/common/wm_shell.h"
#include "ash/common/wm_window.h"
-#include "ash/screen_util.h"
-#include "ash/shell.h"
-#include "ash/wm/window_animations.h"
#include "base/strings/string_util.h"
#include "base/strings/utf_string_conversions.h"
#include "base/threading/thread_task_runner_handle.h"
@@ -28,6 +26,7 @@
#include "ui/views/view.h"
#include "ui/views/widget/widget.h"
#include "ui/views/widget/widget_delegate.h"
+#include "ui/wm/core/window_animations.h"
namespace ash {
@@ -53,12 +52,14 @@ const int kToastVerticalSpacing = 16;
const int kToastMaximumWidth = 568;
const int kToastMinimumWidth = 288;
-// Returns the shelf for the primary display.
-WmShelf* GetPrimaryShelf() {
+// Returns the work area bounds for the root window where new windows are added
+// (including new toasts).
+gfx::Rect GetUserWorkAreaBounds() {
return WmShell::Get()
- ->GetPrimaryRootWindow()
+ ->GetRootWindowForNewWindows()
->GetRootWindowController()
- ->GetShelf();
+ ->GetShelf()
+ ->GetUserWorkAreaBounds();
}
} // anonymous namespace
@@ -194,7 +195,7 @@ gfx::Size ToastOverlayView::GetMinimumSize() const {
}
gfx::Size ToastOverlayView::GetMaximumSize() const {
- gfx::Rect work_area_bounds = GetPrimaryShelf()->GetUserWorkAreaBounds();
+ gfx::Rect work_area_bounds = GetUserWorkAreaBounds();
return gfx::Size(kToastMaximumWidth, work_area_bounds.height() - kOffset * 2);
}
@@ -211,10 +212,12 @@ ToastOverlay::ToastOverlay(Delegate* delegate,
: delegate_(delegate),
text_(text),
dismiss_text_(dismiss_text),
+ overlay_widget_(new views::Widget),
overlay_view_(new ToastOverlayView(this, text, dismiss_text)),
widget_size_(overlay_view_->GetPreferredSize()) {
views::Widget::InitParams params;
params.type = views::Widget::InitParams::TYPE_POPUP;
+ params.name = "ToastOverlay";
params.opacity = views::Widget::InitParams::TRANSLUCENT_WINDOW;
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
params.accept_events = true;
@@ -222,22 +225,21 @@ ToastOverlay::ToastOverlay(Delegate* delegate,
params.remove_standard_frame = true;
params.bounds = CalculateOverlayBounds();
// Show toasts above the app list and below the lock screen.
- // TODO(jamescook): Either this should be the primary root window, or the
- // work area bounds computation should be for the target root window.
- params.parent = Shell::GetContainer(Shell::GetTargetRootWindow(),
- kShellWindowId_SystemModalContainer);
- overlay_widget_.reset(new views::Widget);
+ WmShell::Get()
+ ->GetRootWindowForNewWindows()
+ ->GetRootWindowController()
+ ->ConfigureWidgetInitParamsForContainer(
+ overlay_widget_.get(), kShellWindowId_SystemModalContainer, &params);
overlay_widget_->Init(params);
overlay_widget_->SetVisibilityChangedAnimationsEnabled(true);
overlay_widget_->SetContentsView(overlay_view_.get());
overlay_widget_->SetBounds(CalculateOverlayBounds());
- overlay_widget_->GetNativeView()->SetName("ToastOverlay");
- gfx::NativeWindow native_view = overlay_widget_->GetNativeView();
- ::wm::SetWindowVisibilityAnimationType(
- native_view, ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_VERTICAL);
- ::wm::SetWindowVisibilityAnimationDuration(
- native_view,
+ WmWindow* overlay_window =
+ WmLookup::Get()->GetWindowForWidget(overlay_widget_.get());
+ overlay_window->SetVisibilityAnimationType(
+ ::wm::WINDOW_VISIBILITY_ANIMATION_TYPE_VERTICAL);
+ overlay_window->SetVisibilityAnimationDuration(
base::TimeDelta::FromMilliseconds(kSlideAnimationDurationMs));
}
@@ -271,7 +273,7 @@ void ToastOverlay::Show(bool visible) {
}
gfx::Rect ToastOverlay::CalculateOverlayBounds() {
- gfx::Rect bounds = GetPrimaryShelf()->GetUserWorkAreaBounds();
+ gfx::Rect bounds = GetUserWorkAreaBounds();
int target_y = bounds.bottom() - widget_size_.height() - kOffset;
bounds.ClampToCenteredSize(widget_size_);
bounds.set_y(target_y);
« no previous file with comments | « ash/common/system/toast/toast_overlay.h ('k') | ash/shell.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698