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

Side by Side Diff: content/browser/memory/memory_coordinator_impl_unittest.cc

Issue 2434353003: Introduce MemoryCoordinatorProxy in base (Closed)
Patch Set: Address on reviews Created 4 years, 1 month 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 unified diff | Download patch
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/browser/memory/memory_coordinator_impl.h" 5 #include "content/browser/memory/memory_coordinator_impl.h"
6 6
7 #include "base/memory/memory_coordinator_proxy.h"
7 #include "base/run_loop.h" 8 #include "base/run_loop.h"
8 #include "content/browser/memory/memory_monitor.h" 9 #include "content/browser/memory/memory_monitor.h"
9 #include "testing/gtest/include/gtest/gtest.h" 10 #include "testing/gtest/include/gtest/gtest.h"
10 11
11 namespace content { 12 namespace content {
12 13
13 namespace { 14 namespace {
14 15
15 class MockMemoryCoordinatorClient : public base::MemoryCoordinatorClient { 16 class MockMemoryCoordinatorClient : public base::MemoryCoordinatorClient {
16 public: 17 public:
(...skipping 26 matching lines...) Expand all
43 44
44 private: 45 private:
45 int free_memory_ = 0; 46 int free_memory_ = 0;
46 47
47 DISALLOW_COPY_AND_ASSIGN(MockMemoryMonitor); 48 DISALLOW_COPY_AND_ASSIGN(MockMemoryMonitor);
48 }; 49 };
49 50
50 class MemoryCoordinatorImplTest : public testing::Test { 51 class MemoryCoordinatorImplTest : public testing::Test {
51 public: 52 public:
52 void SetUp() override { 53 void SetUp() override {
54 MemoryCoordinator::EnableFeaturesForTesting();
55
53 coordinator_.reset(new MemoryCoordinatorImpl( 56 coordinator_.reset(new MemoryCoordinatorImpl(
54 message_loop_.task_runner(), base::WrapUnique(new MockMemoryMonitor))); 57 message_loop_.task_runner(), base::WrapUnique(new MockMemoryMonitor)));
58
59 base::MemoryCoordinatorProxy::GetInstance()->
60 SetGetCurrentMemoryStateCallback(base::Bind(
61 &MemoryCoordinator::GetCurrentMemoryState,
62 base::Unretained(coordinator_.get())));
55 } 63 }
56 64
57 MockMemoryMonitor* GetMockMemoryMonitor() { 65 MockMemoryMonitor* GetMockMemoryMonitor() {
58 return static_cast<MockMemoryMonitor*>(coordinator_->memory_monitor()); 66 return static_cast<MockMemoryMonitor*>(coordinator_->memory_monitor());
59 } 67 }
60 68
61 protected: 69 protected:
62 std::unique_ptr<MemoryCoordinatorImpl> coordinator_; 70 std::unique_ptr<MemoryCoordinatorImpl> coordinator_;
63 base::MessageLoop message_loop_; 71 base::MessageLoop message_loop_;
64 }; 72 };
65 73
66 TEST_F(MemoryCoordinatorImplTest, CalculateNextState) { 74 TEST_F(MemoryCoordinatorImplTest, CalculateNextState) {
67 coordinator_->expected_renderer_size_ = 10; 75 coordinator_->expected_renderer_size_ = 10;
68 coordinator_->new_renderers_until_throttled_ = 4; 76 coordinator_->new_renderers_until_throttled_ = 4;
69 coordinator_->new_renderers_until_suspended_ = 2; 77 coordinator_->new_renderers_until_suspended_ = 2;
70 coordinator_->new_renderers_back_to_normal_ = 5; 78 coordinator_->new_renderers_back_to_normal_ = 5;
71 coordinator_->new_renderers_back_to_throttled_ = 3; 79 coordinator_->new_renderers_back_to_throttled_ = 3;
72 DCHECK(coordinator_->ValidateParameters()); 80 DCHECK(coordinator_->ValidateParameters());
73 81
74 // The default state is NORMAL. 82 // The default state is NORMAL.
75 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->GetCurrentMemoryState()); 83 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->GetCurrentMemoryState());
84 EXPECT_EQ(base::MemoryState::NORMAL,
85 base::MemoryCoordinatorProxy::GetInstance()->
86 GetCurrentMemoryState());
76 87
77 // Transitions from NORMAL 88 // Transitions from NORMAL
78 coordinator_->current_state_ = base::MemoryState::NORMAL; 89 coordinator_->current_state_ = base::MemoryState::NORMAL;
79 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->GetCurrentMemoryState()); 90 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->GetCurrentMemoryState());
91 EXPECT_EQ(base::MemoryState::NORMAL,
92 base::MemoryCoordinatorProxy::GetInstance()->
93 GetCurrentMemoryState());
94
80 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(50); 95 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(50);
81 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->CalculateNextState()); 96 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->CalculateNextState());
82 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(40); 97 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(40);
83 EXPECT_EQ(base::MemoryState::THROTTLED, coordinator_->CalculateNextState()); 98 EXPECT_EQ(base::MemoryState::THROTTLED, coordinator_->CalculateNextState());
84 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(20); 99 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(20);
85 EXPECT_EQ(base::MemoryState::SUSPENDED, coordinator_->CalculateNextState()); 100 EXPECT_EQ(base::MemoryState::SUSPENDED, coordinator_->CalculateNextState());
86 101
87 // Transitions from THROTTLED 102 // Transitions from THROTTLED
88 coordinator_->current_state_ = base::MemoryState::THROTTLED; 103 coordinator_->current_state_ = base::MemoryState::THROTTLED;
89 EXPECT_EQ(base::MemoryState::THROTTLED, 104 EXPECT_EQ(base::MemoryState::THROTTLED,
90 coordinator_->GetCurrentMemoryState()); 105 coordinator_->GetCurrentMemoryState());
106 EXPECT_EQ(base::MemoryState::THROTTLED,
107 base::MemoryCoordinatorProxy::GetInstance()->
108 GetCurrentMemoryState());
109
91 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(40); 110 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(40);
92 EXPECT_EQ(base::MemoryState::THROTTLED, coordinator_->CalculateNextState()); 111 EXPECT_EQ(base::MemoryState::THROTTLED, coordinator_->CalculateNextState());
93 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(50); 112 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(50);
94 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->CalculateNextState()); 113 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->CalculateNextState());
95 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(20); 114 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(20);
96 EXPECT_EQ(base::MemoryState::SUSPENDED, coordinator_->CalculateNextState()); 115 EXPECT_EQ(base::MemoryState::SUSPENDED, coordinator_->CalculateNextState());
97 116
98 // Transitions from SUSPENDED 117 // Transitions from SUSPENDED
99 coordinator_->current_state_ = base::MemoryState::SUSPENDED; 118 coordinator_->current_state_ = base::MemoryState::SUSPENDED;
100 EXPECT_EQ(base::MemoryState::SUSPENDED, 119 EXPECT_EQ(base::MemoryState::SUSPENDED,
101 coordinator_->GetCurrentMemoryState()); 120 coordinator_->GetCurrentMemoryState());
121 EXPECT_EQ(base::MemoryState::SUSPENDED,
122 base::MemoryCoordinatorProxy::GetInstance()->
123 GetCurrentMemoryState());
124
102 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(20); 125 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(20);
103 EXPECT_EQ(base::MemoryState::SUSPENDED, coordinator_->CalculateNextState()); 126 EXPECT_EQ(base::MemoryState::SUSPENDED, coordinator_->CalculateNextState());
104 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(30); 127 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(30);
105 EXPECT_EQ(base::MemoryState::THROTTLED, coordinator_->CalculateNextState()); 128 EXPECT_EQ(base::MemoryState::THROTTLED, coordinator_->CalculateNextState());
106 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(50); 129 GetMockMemoryMonitor()->SetFreeMemoryUntilCriticalMB(50);
107 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->CalculateNextState()); 130 EXPECT_EQ(base::MemoryState::NORMAL, coordinator_->CalculateNextState());
108 } 131 }
109 132
110 TEST_F(MemoryCoordinatorImplTest, UpdateState) { 133 TEST_F(MemoryCoordinatorImplTest, UpdateState) {
111 coordinator_->expected_renderer_size_ = 10; 134 coordinator_->expected_renderer_size_ = 10;
(...skipping 26 matching lines...) Expand all
138 coordinator_->UpdateState(); 161 coordinator_->UpdateState();
139 base::RunLoop loop; 162 base::RunLoop loop;
140 loop.RunUntilIdle(); 163 loop.RunUntilIdle();
141 EXPECT_FALSE(client.is_called()); 164 EXPECT_FALSE(client.is_called());
142 EXPECT_EQ(base::MemoryState::NORMAL, client.state()); 165 EXPECT_EQ(base::MemoryState::NORMAL, client.state());
143 base::MemoryCoordinatorClientRegistry::GetInstance()->Unregister(&client); 166 base::MemoryCoordinatorClientRegistry::GetInstance()->Unregister(&client);
144 } 167 }
145 } 168 }
146 169
147 } // namespace content 170 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698