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 |
deleted file mode 100644 |
index d6b8bd116d7a7ffbea5fb738e2fe0d22399ad4ca..0000000000000000000000000000000000000000 |
--- a/components/memory_coordinator/child/child_memory_coordinator_impl_unittest.cc |
+++ /dev/null |
@@ -1,188 +0,0 @@ |
-// Copyright 2016 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "components/memory_coordinator/child/child_memory_coordinator_impl.h" |
- |
-#if defined(OS_ANDROID) |
-#include "components/memory_coordinator/child/child_memory_coordinator_impl_android.h" |
-#endif // defined(OS_ANDROID) |
- |
-#include <memory> |
- |
-#include "base/memory/memory_coordinator_client_registry.h" |
-#include "base/message_loop/message_loop.h" |
-#include "base/run_loop.h" |
-#include "base/threading/thread.h" |
-#include "testing/gtest/include/gtest/gtest.h" |
- |
-namespace memory_coordinator { |
- |
-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 ChildMemoryCoordinatorDelegate { |
- public: |
- ChildMemoryCoordinatorImplTest() |
- : message_loop_(new base::MessageLoop) { |
- auto parent = coordinator_handle_.Bind(); |
- coordinator_impl_ = CreateChildMemoryCoordinator(std::move(parent), this); |
- // Needs to run loop to initalize mojo pointers including |child_| in |
- // MockMemoryCoordinatorHandle. |
- base::RunLoop loop; |
- loop.RunUntilIdle(); |
- } |
- |
- void RegisterClient(base::MemoryCoordinatorClient* client) { |
- base::MemoryCoordinatorClientRegistry::GetInstance()->Register(client); |
- } |
- |
- void UnregisterClient(base::MemoryCoordinatorClient* client) { |
- base::MemoryCoordinatorClientRegistry::GetInstance()->Unregister(client); |
- } |
- |
- mojom::ChildMemoryCoordinatorPtr& coordinator() { |
- return coordinator_handle_.child(); |
- } |
- |
- ChildMemoryCoordinatorImpl& coordinator_impl() { |
- return *coordinator_impl_.get(); |
- } |
- |
- void ChangeState(mojom::MemoryState state) { |
- base::RunLoop loop; |
- coordinator()->OnStateChange(state); |
- loop.RunUntilIdle(); |
- } |
- |
- // ChildMemoryCoordinatorDelegate implementation: |
- void OnTrimMemoryImmediately() override { |
- on_trim_memory_called_ = true; |
- } |
- |
- protected: |
- bool on_trim_memory_called_ = false; |
- |
- private: |
- std::unique_ptr<base::MessageLoop> message_loop_; |
- MockMemoryCoordinatorHandle coordinator_handle_; |
- std::unique_ptr<ChildMemoryCoordinatorImpl> coordinator_impl_; |
- |
- DISALLOW_COPY_AND_ASSIGN(ChildMemoryCoordinatorImplTest); |
-}; |
- |
-namespace { |
- |
-class MockMemoryCoordinatorClient final : public base::MemoryCoordinatorClient { |
-public: |
- void OnMemoryStateChange(base::MemoryState state) override { |
- last_state_ = state; |
- } |
- |
- base::MemoryState last_state() const { return last_state_; } |
- |
- private: |
- base::MemoryState last_state_ = base::MemoryState::UNKNOWN; |
-}; |
- |
-class MemoryCoordinatorTestThread : public base::Thread, |
- public base::MemoryCoordinatorClient { |
- public: |
- MemoryCoordinatorTestThread( |
- const std::string& name) |
- : Thread(name) {} |
- ~MemoryCoordinatorTestThread() override { Stop(); } |
- |
- void Init() override { |
- base::MemoryCoordinatorClientRegistry::GetInstance()->Register(this); |
- } |
- |
- void OnMemoryStateChange(base::MemoryState state) override { |
- EXPECT_EQ(message_loop(), base::MessageLoop::current()); |
- last_state_ = state; |
- } |
- |
- void CheckLastState(base::MemoryState state) { |
- task_runner()->PostTask( |
- FROM_HERE, |
- base::Bind(&MemoryCoordinatorTestThread::CheckLastStateInternal, |
- base::Unretained(this), state)); |
- } |
- |
- private: |
- void CheckLastStateInternal(base::MemoryState state) { |
- base::RunLoop loop; |
- loop.RunUntilIdle(); |
- EXPECT_EQ(state, last_state_); |
- } |
- |
- base::MemoryState last_state_ = base::MemoryState::UNKNOWN; |
-}; |
- |
-TEST_F(ChildMemoryCoordinatorImplTest, SingleClient) { |
- MockMemoryCoordinatorClient client; |
- RegisterClient(&client); |
- |
- ChangeState(mojom::MemoryState::THROTTLED); |
- EXPECT_EQ(base::MemoryState::THROTTLED, client.last_state()); |
- |
- ChangeState(mojom::MemoryState::NORMAL); |
- EXPECT_EQ(base::MemoryState::NORMAL, client.last_state()); |
- |
- UnregisterClient(&client); |
- ChangeState(mojom::MemoryState::THROTTLED); |
- EXPECT_TRUE(base::MemoryState::THROTTLED != client.last_state()); |
-} |
- |
-TEST_F(ChildMemoryCoordinatorImplTest, MultipleClients) { |
- MemoryCoordinatorTestThread t1("thread 1"); |
- MemoryCoordinatorTestThread t2("thread 2"); |
- |
- t1.StartAndWaitForTesting(); |
- t2.StartAndWaitForTesting(); |
- |
- ChangeState(mojom::MemoryState::THROTTLED); |
- t1.CheckLastState(base::MemoryState::THROTTLED); |
- t2.CheckLastState(base::MemoryState::THROTTLED); |
- |
- ChangeState(mojom::MemoryState::NORMAL); |
- t1.CheckLastState(base::MemoryState::NORMAL); |
- t2.CheckLastState(base::MemoryState::NORMAL); |
- |
- t1.Stop(); |
- t2.Stop(); |
-} |
- |
-#if defined(OS_ANDROID) |
-TEST_F(ChildMemoryCoordinatorImplTest, OnTrimMemoryImmediately) { |
- // TRIM_MEMORY_COMPLETE defined in ComponentCallbacks2. |
- static const int kTrimMemoryComplete = 80; |
- |
- ChildMemoryCoordinatorImplAndroid& coordinator_android = |
- static_cast<ChildMemoryCoordinatorImplAndroid&>(coordinator_impl()); |
- coordinator_android.OnTrimMemory(kTrimMemoryComplete); |
- EXPECT_EQ(true, on_trim_memory_called_); |
-} |
-#endif // defined(OS_ANDROID) |
- |
-} // namespace |
- |
-} // namespace memory_coordinator |