Commit 4cfd129e authored by Varun Mohan's avatar Varun Mohan Committed by Commit Bot

Adjust last_visibility_change_time implementation

In this CL, last_visibility_change_time is set to NowTicks() in the constructor. In addition, it is updated prior to notifying observers. This is done so that in proactive tab discarding, when a LifecycleUnit becomes HIDDEN, TabManager knows when it became HIDDEN (now), not the last time it became VISIBLE.

Bug: 77564
Change-Id: Ie909b4a884a7d70b5f542be7588e9fa03eb2fec7
Reviewed-on: https://chromium-review.googlesource.com/1020444
Commit-Queue: Varun Mohan <varunmohan@google.com>
Reviewed-by: default avatarFrançois Doray <fdoray@chromium.org>
Cr-Commit-Position: refs/heads/master@{#552409}
parent 179e92c3
......@@ -9,7 +9,8 @@
namespace resource_coordinator {
LifecycleUnitBase::LifecycleUnitBase() = default;
LifecycleUnitBase::LifecycleUnitBase()
: last_visibility_change_time_(NowTicks()) {}
LifecycleUnitBase::~LifecycleUnitBase() = default;
......@@ -43,9 +44,9 @@ void LifecycleUnitBase::SetState(State state) {
void LifecycleUnitBase::OnLifecycleUnitVisibilityChanged(
content::Visibility visibility) {
last_visibility_change_time_ = NowTicks();
for (auto& observer : observers_)
observer.OnLifecycleUnitVisibilityChanged(this, visibility);
last_visibility_change_time_ = NowTicks();
}
void LifecycleUnitBase::OnLifecycleUnitDestroyed() {
......
......@@ -126,6 +126,7 @@ TEST(LifecycleUnitBaseTest, VisibilityChangeNotifiesObserversAndUpdatesTime) {
EXPECT_EQ(NowTicks(), lifecycle_unit->GetLastVisibilityChangeTime());
}));
test_clock_.Advance(base::TimeDelta::FromMinutes(1));
lifecycle_unit.OnLifecycleUnitVisibilityChanged(content::Visibility::HIDDEN);
testing::Mock::VerifyAndClear(&observer);
......@@ -136,6 +137,7 @@ TEST(LifecycleUnitBaseTest, VisibilityChangeNotifiesObserversAndUpdatesTime) {
EXPECT_EQ(NowTicks(), lifecycle_unit->GetLastVisibilityChangeTime());
}));
test_clock_.Advance(base::TimeDelta::FromMinutes(1));
lifecycle_unit.OnLifecycleUnitVisibilityChanged(
content::Visibility::OCCLUDED);
testing::Mock::VerifyAndClear(&observer);
......@@ -147,6 +149,7 @@ TEST(LifecycleUnitBaseTest, VisibilityChangeNotifiesObserversAndUpdatesTime) {
EXPECT_EQ(NowTicks(), lifecycle_unit->GetLastVisibilityChangeTime());
}));
test_clock_.Advance(base::TimeDelta::FromMinutes(1));
lifecycle_unit.OnLifecycleUnitVisibilityChanged(content::Visibility::VISIBLE);
testing::Mock::VerifyAndClear(&observer);
......
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