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

Unified Diff: chrome/browser/chromeos/login/ui/login_display_host_impl.cc

Issue 2891223002: cros: Move wallpaper after login screen is gone (Closed)
Patch Set: fix nits Created 3 years, 7 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
Index: chrome/browser/chromeos/login/ui/login_display_host_impl.cc
diff --git a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
index a498e861c9d909c276d7263028ab47c2232d2eb3..8b36df361eea4f40add4fdf463961168b84b59ca 100644
--- a/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
+++ b/chrome/browser/chromeos/login/ui/login_display_host_impl.cc
@@ -291,6 +291,16 @@ void ResetKeyboardOverscrollOverride() {
keyboard::KEYBOARD_OVERSCROLL_OVERRIDE_NONE);
}
+void ScheduleCompletionCallbacks(std::vector<base::OnceClosure>&& callbacks) {
+ for (auto& callback : callbacks) {
+ if (callback.is_null())
+ continue;
+
+ base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
+ std::move(callback));
+ }
+}
+
} // namespace
namespace chromeos {
@@ -503,6 +513,8 @@ LoginDisplayHostImpl::~LoginDisplayHostImpl() {
views::FocusManager::set_arrow_key_traversal_enabled(false);
ResetLoginWindowAndView();
+ ScheduleCompletionCallbacks(std::move(completion_callbacks_));
+
keep_alive_.reset();
default_host_ = nullptr;
@@ -536,9 +548,11 @@ void LoginDisplayHostImpl::BeforeSessionStart() {
session_starting_ = true;
}
-void LoginDisplayHostImpl::Finalize() {
+void LoginDisplayHostImpl::Finalize(base::OnceClosure completion_callback) {
DVLOG(1) << "Finalizing LoginDisplayHost. User session starting";
+ completion_callbacks_.push_back(std::move(completion_callback));
+
switch (finalize_animation_type_) {
case ANIMATION_NONE:
ShutdownDisplayHost(false);
@@ -621,11 +635,11 @@ AppLaunchController* LoginDisplayHostImpl::GetAppLaunchController() {
}
void LoginDisplayHostImpl::StartUserAdding(
- const base::Closure& completion_callback) {
+ base::OnceClosure completion_callback) {
DisableKeyboardOverscroll();
restore_path_ = RESTORE_ADD_USER_INTO_SESSION;
- completion_callback_ = completion_callback;
+ completion_callbacks_.push_back(std::move(completion_callback));
// Animation is not supported in Mash
if (!ash_util::IsRunningInMash())
finalize_animation_type_ = ANIMATION_ADD_USER;
@@ -677,7 +691,7 @@ void LoginDisplayHostImpl::CancelUserAdding() {
// canceled. Changing to ANIMATION_NONE so that Finalize() shuts down the host
// immediately.
finalize_animation_type_ = ANIMATION_NONE;
- Finalize();
+ Finalize(base::OnceClosure());
}
void LoginDisplayHostImpl::StartSignInScreen(
@@ -1031,11 +1045,6 @@ void LoginDisplayHostImpl::ShutdownDisplayHost(bool post_quit_task) {
base::ThreadTaskRunnerHandle::Get()->DeleteSoon(FROM_HERE, this);
if (post_quit_task)
base::MessageLoop::current()->QuitWhenIdle();
-
- if (!completion_callback_.is_null()) {
- base::ThreadTaskRunnerHandle::Get()->PostTask(FROM_HERE,
- completion_callback_);
- }
}
void LoginDisplayHostImpl::ScheduleWorkspaceAnimation() {
@@ -1043,18 +1052,11 @@ void LoginDisplayHostImpl::ScheduleWorkspaceAnimation() {
NOTIMPLEMENTED();
return;
}
- if (ash::Shell::GetContainer(ash::Shell::GetPrimaryRootWindow(),
- ash::kShellWindowId_WallpaperContainer)
- ->children()
- .empty()) {
- // If there is no wallpaper window, don't perform any animation on the
- // default and wallpaper layer because there is nothing behind it.
- return;
- }
if (!base::CommandLine::ForCurrentProcess()->HasSwitch(
- switches::kDisableLoginAnimations))
+ switches::kDisableLoginAnimations)) {
ash::Shell::Get()->DoInitialWorkspaceAnimation();
+ }
}
void LoginDisplayHostImpl::ScheduleFadeOutAnimation(int animation_speed_ms) {
@@ -1122,7 +1124,7 @@ void LoginDisplayHostImpl::StartPostponedWebUI() {
StartSignInScreen(LoginScreenContext());
break;
case RESTORE_ADD_USER_INTO_SESSION:
- StartUserAdding(completion_callback_);
+ StartUserAdding(base::OnceClosure());
break;
default:
NOTREACHED();
« no previous file with comments | « chrome/browser/chromeos/login/ui/login_display_host_impl.h ('k') | chrome/browser/chromeos/login/ui/mock_login_display_host.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698