Commit 4f1a7671 authored by Francois Doray's avatar Francois Doray Committed by Commit Bot

Add resource_coordinator::LifecycleUnit::GetID().

This method returns a unique id representing the LifecycleUnit. It
is required to support the chrome://discards/ page.

Bug: 775644
Change-Id: I5975e625337708cc57beca0a5d551e6352c51b6a
Reviewed-on: https://chromium-review.googlesource.com/789250
Commit-Queue: François Doray <fdoray@chromium.org>
Reviewed-by: default avatarChris Hamilton <chrisha@chromium.org>
Cr-Commit-Position: refs/heads/master@{#521363}
parent f56d89a3
...@@ -19,4 +19,13 @@ bool LifecycleUnit::SortKey::operator>(const SortKey& other) const { ...@@ -19,4 +19,13 @@ bool LifecycleUnit::SortKey::operator>(const SortKey& other) const {
return last_focused_time > other.last_focused_time; return last_focused_time > other.last_focused_time;
} }
LifecycleUnit::LifecycleUnit() = default;
LifecycleUnit::~LifecycleUnit() = default;
uint32_t LifecycleUnit::GetID() const {
return id_;
}
uint32_t LifecycleUnit::next_id_ = 0;
} // namespace resource_coordinator } // namespace resource_coordinator
...@@ -5,9 +5,11 @@ ...@@ -5,9 +5,11 @@
#ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_LIFECYCLE_UNIT_H_ #ifndef CHROME_BROWSER_RESOURCE_COORDINATOR_LIFECYCLE_UNIT_H_
#define CHROME_BROWSER_RESOURCE_COORDINATOR_LIFECYCLE_UNIT_H_ #define CHROME_BROWSER_RESOURCE_COORDINATOR_LIFECYCLE_UNIT_H_
#include <stdint.h>
#include <string> #include <string>
#include "base/containers/flat_set.h" #include "base/containers/flat_set.h"
#include "base/macros.h"
#include "base/strings/string16.h" #include "base/strings/string16.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "chrome/browser/resource_coordinator/discard_reason.h" #include "chrome/browser/resource_coordinator/discard_reason.h"
...@@ -41,7 +43,11 @@ class LifecycleUnit { ...@@ -41,7 +43,11 @@ class LifecycleUnit {
base::TimeTicks last_focused_time; base::TimeTicks last_focused_time;
}; };
virtual ~LifecycleUnit() = default; LifecycleUnit();
virtual ~LifecycleUnit();
// Returns a unique id representing this LifecycleUnit.
uint32_t GetID() const;
// Returns a title describing this LifecycleUnit, or an empty string if no // Returns a title describing this LifecycleUnit, or an empty string if no
// title is available. // title is available.
...@@ -84,6 +90,14 @@ class LifecycleUnit { ...@@ -84,6 +90,14 @@ class LifecycleUnit {
// in the same process(es) than if we discard individual LifecycleUnits. // in the same process(es) than if we discard individual LifecycleUnits.
// https://crbug.com/775644 // https://crbug.com/775644
virtual bool Discard(DiscardReason discard_reason) = 0; virtual bool Discard(DiscardReason discard_reason) = 0;
private:
static uint32_t next_id_;
// A unique id representing this LifecycleUnit.
const uint32_t id_ = ++next_id_;
DISALLOW_COPY_AND_ASSIGN(LifecycleUnit);
}; };
using LifecycleUnitSet = base::flat_set<LifecycleUnit*>; using LifecycleUnitSet = base::flat_set<LifecycleUnit*>;
......
...@@ -4,11 +4,33 @@ ...@@ -4,11 +4,33 @@
#include "chrome/browser/resource_coordinator/lifecycle_unit.h" #include "chrome/browser/resource_coordinator/lifecycle_unit.h"
#include "base/macros.h"
#include "base/time/time.h" #include "base/time/time.h"
#include "testing/gtest/include/gtest/gtest.h" #include "testing/gtest/include/gtest/gtest.h"
namespace resource_coordinator { namespace resource_coordinator {
namespace {
class DummyLifecycleUnit : public LifecycleUnit {
public:
DummyLifecycleUnit() = default;
// LifecycleUnit:
base::string16 GetTitle() const override { return base::string16(); }
std::string GetIconURL() const override { return std::string(); }
SortKey GetSortKey() const override { return SortKey(); }
State GetState() const override { return State::LOADED; }
int GetEstimatedMemoryFreedOnDiscardKB() const override { return 0; }
bool CanDiscard(DiscardReason reason) const override { return false; }
bool Discard(DiscardReason discard_reason) override { return false; }
private:
DISALLOW_COPY_AND_ASSIGN(DummyLifecycleUnit);
};
} // namespace
TEST(LifecycleUnitTest, SortKeyComparison) { TEST(LifecycleUnitTest, SortKeyComparison) {
constexpr base::TimeTicks kBaseTime; constexpr base::TimeTicks kBaseTime;
LifecycleUnit::SortKey a(kBaseTime); LifecycleUnit::SortKey a(kBaseTime);
...@@ -40,4 +62,20 @@ TEST(LifecycleUnitTest, SortKeyComparison) { ...@@ -40,4 +62,20 @@ TEST(LifecycleUnitTest, SortKeyComparison) {
EXPECT_FALSE(c > c); EXPECT_FALSE(c > c);
} }
// Verify that GetID() returns different ids for different LifecycleUnits, but
// always the same id for the same LifecycleUnit.
TEST(LifecycleUnitTest, GetID) {
DummyLifecycleUnit a;
DummyLifecycleUnit b;
DummyLifecycleUnit c;
EXPECT_NE(a.GetID(), b.GetID());
EXPECT_NE(a.GetID(), c.GetID());
EXPECT_NE(b.GetID(), c.GetID());
EXPECT_EQ(a.GetID(), a.GetID());
EXPECT_EQ(b.GetID(), b.GetID());
EXPECT_EQ(c.GetID(), c.GetID());
}
} // namespace resource_coordinator } // namespace resource_coordinator
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