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

Unified Diff: components/memory_coordinator/child/child_memory_coordinator_impl_unittest.cc

Issue 2149413002: Re-reland: Add MemoryCoordinator (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Always pass MemoryCoordinatorHandlePtr 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
Index: components/memory_coordinator/child/child_memory_coordinator_impl_unittest.cc
diff --git a/components/memory_coordinator/child/child_memory_coordinator_impl_unittest.cc b/components/memory_coordinator/child/child_memory_coordinator_impl_unittest.cc
index 3b7db4037d659d2e5ba8a0a230244ee5f46a772d..445aeb0877b3be5b2346a6fd99bf729f77520679 100644
--- a/components/memory_coordinator/child/child_memory_coordinator_impl_unittest.cc
+++ b/components/memory_coordinator/child/child_memory_coordinator_impl_unittest.cc
@@ -13,25 +13,53 @@
namespace memory_coordinator {
-namespace {
+class MockMemoryCoordinatorHandle : public mojom::MemoryCoordinatorHandle {
+ public:
+ MockMemoryCoordinatorHandle() : binding_(this) {}
+
+ void AddChild(mojom::ChildMemoryCoordinatorPtr child) override {
+ child_ = std::move(child);
+ }
+
+ mojom::MemoryCoordinatorHandlePtr Bind() {
+ DCHECK(!binding_.is_bound());
+ return binding_.CreateInterfacePtrAndBind();
+ }
+
+ mojom::ChildMemoryCoordinatorPtr& child() { return child_; }
+
+ private:
+ mojo::Binding<mojom::MemoryCoordinatorHandle> binding_;
+ mojom::ChildMemoryCoordinatorPtr child_ = nullptr;
+};
class ChildMemoryCoordinatorImplTest : public testing::Test {
public:
ChildMemoryCoordinatorImplTest()
- : clients_(new ChildMemoryCoordinatorImpl::ClientList),
- message_loop_(new base::MessageLoop),
- coordinator_impl_(mojo::GetProxy(&coordinator_), clients_) {}
+ : message_loop_(new base::MessageLoop) {
+ auto parent = coordinator_handle_.Bind();
+ coordinator_impl_.reset(new ChildMemoryCoordinatorImpl(std::move(parent)));
+ // Needs to run loop to initalize mojo pointers including |child_| in
+ // MockMemoryCoordinatorHandle.
+ base::RunLoop loop;
+ loop.RunUntilIdle();
+ }
void RegisterClient(MemoryCoordinatorClient* client) {
- clients_->AddObserver(client);
+ coordinator_impl_->RegisterClient(client);
}
void UnregisterClient(MemoryCoordinatorClient* client) {
- clients_->RemoveObserver(client);
+ coordinator_impl_->UnregisterClient(client);
}
- mojom::ChildMemoryCoordinatorPtr& coordinator() { return coordinator_; }
- ChildMemoryCoordinatorImpl& coordinator_impl() { return coordinator_impl_; }
+ mojom::ChildMemoryCoordinatorPtr& coordinator() {
+ return coordinator_handle_.child();
+ }
+
+ ChildMemoryCoordinatorImpl& coordinator_impl() {
+ return *coordinator_impl_.get();
+ }
void ChangeState(mojom::MemoryState state) {
base::RunLoop loop;
@@ -39,17 +67,16 @@ class ChildMemoryCoordinatorImplTest : public testing::Test {
loop.RunUntilIdle();
}
- protected:
- scoped_refptr<ChildMemoryCoordinatorImpl::ClientList> clients_;
-
private:
std::unique_ptr<base::MessageLoop> message_loop_;
- mojom::ChildMemoryCoordinatorPtr coordinator_ = nullptr;
- ChildMemoryCoordinatorImpl coordinator_impl_;
+ MockMemoryCoordinatorHandle coordinator_handle_;
+ std::unique_ptr<ChildMemoryCoordinatorImpl> coordinator_impl_;
DISALLOW_COPY_AND_ASSIGN(ChildMemoryCoordinatorImplTest);
};
+namespace {
+
class MockMemoryCoordinatorClient final : public MemoryCoordinatorClient {
public:
void OnMemoryStateChange(mojom::MemoryState state) override {
@@ -67,12 +94,12 @@ class MemoryCoordinatorTestThread : public base::Thread,
public:
MemoryCoordinatorTestThread(
const std::string& name,
- scoped_refptr<ChildMemoryCoordinatorImpl::ClientList> clients)
- : Thread(name), clients_(clients) {}
+ ChildMemoryCoordinatorImpl& coordinator)
+ : Thread(name), coordinator_(coordinator) {}
~MemoryCoordinatorTestThread() override { Stop(); }
void Init() override {
- clients_->AddObserver(this);
+ coordinator_.RegisterClient(this);
}
void OnMemoryStateChange(mojom::MemoryState state) override {
@@ -94,7 +121,7 @@ class MemoryCoordinatorTestThread : public base::Thread,
EXPECT_EQ(state, last_state_);
}
- scoped_refptr<ChildMemoryCoordinatorImpl::ClientList> clients_;
+ ChildMemoryCoordinatorImpl& coordinator_;
mojom::MemoryState last_state_ = mojom::MemoryState::UNKNOWN;
};
@@ -114,8 +141,8 @@ TEST_F(ChildMemoryCoordinatorImplTest, SingleClient) {
}
TEST_F(ChildMemoryCoordinatorImplTest, MultipleClients) {
- MemoryCoordinatorTestThread t1("thread 1", clients_);
- MemoryCoordinatorTestThread t2("thread 2", clients_);
+ MemoryCoordinatorTestThread t1("thread 1", coordinator_impl());
+ MemoryCoordinatorTestThread t2("thread 2", coordinator_impl());
t1.StartAndWaitForTesting();
t2.StartAndWaitForTesting();
« no previous file with comments | « components/memory_coordinator/child/child_memory_coordinator_impl.cc ('k') | components/memory_coordinator/common/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698