Commit 5874be3c authored by Toni Barzic's avatar Toni Barzic Committed by Chromium LUCI CQ

Reset holding space model before calling detach observers

Resets current holding space model before calling holding space
detached, so HoldingSpaceController::Get()->model() can be used
test whether a model is currently attached from the observer method.

Also, updates HoldingSpaceTray to cancel previews update when previews
icon gets hidden.

BUG=1164145

Change-Id: I1f0b50cc52c5b348b0e034e65751b9a0047bd096
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2618093Reviewed-by: default avatarDavid Black <dmblack@google.com>
Commit-Queue: Toni Baržić <tbarzic@chromium.org>
Cr-Commit-Position: refs/heads/master@{#841691}
parent b1892d69
...@@ -83,8 +83,10 @@ void HoldingSpaceController::SetClient(HoldingSpaceClient* client) { ...@@ -83,8 +83,10 @@ void HoldingSpaceController::SetClient(HoldingSpaceClient* client) {
void HoldingSpaceController::SetModel(HoldingSpaceModel* model) { void HoldingSpaceController::SetModel(HoldingSpaceModel* model) {
if (model_) { if (model_) {
HoldingSpaceModel* const old_model = model_;
model_ = nullptr;
for (auto& observer : observers_) for (auto& observer : observers_)
observer.OnHoldingSpaceModelDetached(model_); observer.OnHoldingSpaceModelDetached(old_model);
} }
model_ = model; model_ = model;
......
...@@ -195,12 +195,16 @@ void HoldingSpaceTray::SetVisiblePreferred(bool preferred_visibility) { ...@@ -195,12 +195,16 @@ void HoldingSpaceTray::SetVisiblePreferred(bool preferred_visibility) {
} }
} }
void HoldingSpaceTray::FirePreviewsUpdateTimerIfRunningForTesting() {
if (previews_update_.IsRunning())
previews_update_.FireNow();
}
void HoldingSpaceTray::UpdateVisibility() { void HoldingSpaceTray::UpdateVisibility() {
HoldingSpaceModel* model = HoldingSpaceController::Get()->model(); HoldingSpaceModel* model = HoldingSpaceController::Get()->model();
LoginStatus login_status = shelf()->GetStatusAreaWidget()->login_status(); LoginStatus login_status = shelf()->GetStatusAreaWidget()->login_status();
const bool in_active_session = login_status != LoginStatus::NOT_LOGGED_IN && const bool in_active_session = login_status != LoginStatus::NOT_LOGGED_IN &&
login_status != LoginStatus::LOCKED; login_status != LoginStatus::LOCKED;
if (!model || !in_active_session) { if (!model || !in_active_session) {
SetVisiblePreferred(false); SetVisiblePreferred(false);
return; return;
...@@ -378,6 +382,9 @@ void HoldingSpaceTray::UpdatePreviewsVisibility() { ...@@ -378,6 +382,9 @@ void HoldingSpaceTray::UpdatePreviewsVisibility() {
DCHECK(previews_tray_icon_); DCHECK(previews_tray_icon_);
previews_tray_icon_->SetVisible(show_previews); previews_tray_icon_->SetVisible(show_previews);
if (!show_previews)
previews_update_.Stop();
} }
void HoldingSpaceTray::SchedulePreviewsIconUpdate() { void HoldingSpaceTray::SchedulePreviewsIconUpdate() {
......
...@@ -72,6 +72,8 @@ class ASH_EXPORT HoldingSpaceTray : public TrayBackgroundView, ...@@ -72,6 +72,8 @@ class ASH_EXPORT HoldingSpaceTray : public TrayBackgroundView,
use_zero_previews_update_delay_ = zero_delay; use_zero_previews_update_delay_ = zero_delay;
} }
void FirePreviewsUpdateTimerIfRunningForTesting();
private: private:
void UpdateVisibility(); void UpdateVisibility();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment