| OLD | NEW |
| 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 "components/memory_pressure/memory_pressure_monitor.h" | 5 #include "components/memory_pressure/memory_pressure_monitor.h" |
| 6 | 6 |
| 7 #include <memory> | 7 #include <memory> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/test/simple_test_tick_clock.h" | 10 #include "base/test/simple_test_tick_clock.h" |
| (...skipping 16 matching lines...) Expand all Loading... |
| 27 MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL; | 27 MemoryPressureListener::MEMORY_PRESSURE_LEVEL_CRITICAL; |
| 28 | 28 |
| 29 using testing::_; | 29 using testing::_; |
| 30 | 30 |
| 31 } // namespace | 31 } // namespace |
| 32 | 32 |
| 33 // A mock task runner. This isn't directly a TaskRunner as the reference | 33 // A mock task runner. This isn't directly a TaskRunner as the reference |
| 34 // counting confuses gmock. | 34 // counting confuses gmock. |
| 35 class LenientMockTaskRunner { | 35 class LenientMockTaskRunner { |
| 36 public: | 36 public: |
| 37 MOCK_METHOD3(PostDelayedTask, | 37 MOCK_METHOD1(PostDelayedTask, bool(base::TimeDelta)); |
| 38 bool(const tracked_objects::Location&, | |
| 39 const base::Closure&, | |
| 40 base::TimeDelta)); | |
| 41 }; | 38 }; |
| 42 using MockTaskRunner = testing::StrictMock<LenientMockTaskRunner>; | 39 using MockTaskRunner = testing::StrictMock<LenientMockTaskRunner>; |
| 43 | 40 |
| 44 // A TaskRunner implementation that wraps a MockTaskRunner. | 41 // A TaskRunner implementation that wraps a MockTaskRunner. |
| 45 class TaskRunnerProxy : public base::TaskRunner { | 42 class TaskRunnerProxy : public base::TaskRunner { |
| 46 public: | 43 public: |
| 47 // The provided |mock| must outlive this object. | 44 // The provided |mock| must outlive this object. |
| 48 explicit TaskRunnerProxy(MockTaskRunner* mock) : mock_(mock) {} | 45 explicit TaskRunnerProxy(MockTaskRunner* mock) : mock_(mock) {} |
| 49 bool RunsTasksOnCurrentThread() const override { return true; } | 46 bool RunsTasksOnCurrentThread() const override { return true; } |
| 50 bool PostDelayedTask(const tracked_objects::Location& location, | 47 bool PostDelayedTask(const tracked_objects::Location& location, |
| 51 const base::Closure& closure, | 48 base::OnceClosure closure, |
| 52 base::TimeDelta delta) override { | 49 base::TimeDelta delta) override { |
| 53 return mock_->PostDelayedTask(location, closure, delta); | 50 return mock_->PostDelayedTask(delta); |
| 54 } | 51 } |
| 55 | 52 |
| 56 private: | 53 private: |
| 57 MockTaskRunner* mock_; | 54 MockTaskRunner* mock_; |
| 58 ~TaskRunnerProxy() override {} | 55 ~TaskRunnerProxy() override {} |
| 59 }; | 56 }; |
| 60 | 57 |
| 61 class TestMemoryPressureMonitor : public MemoryPressureMonitor { | 58 class TestMemoryPressureMonitor : public MemoryPressureMonitor { |
| 62 public: | 59 public: |
| 63 // Expose the callback that is used for scheduled checks. | 60 // Expose the callback that is used for scheduled checks. |
| (...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 161 #endif // !MEMORY_PRESSURE_IS_POLLING | 158 #endif // !MEMORY_PRESSURE_IS_POLLING |
| 162 | 159 |
| 163 // Advances the tick clock by the given number of milliseconds. | 160 // Advances the tick clock by the given number of milliseconds. |
| 164 void Tick(int ms) { | 161 void Tick(int ms) { |
| 165 tick_clock_.Advance(base::TimeDelta::FromMilliseconds(ms)); | 162 tick_clock_.Advance(base::TimeDelta::FromMilliseconds(ms)); |
| 166 } | 163 } |
| 167 | 164 |
| 168 // Sets expectations for tasks scheduled via |mock_task_runner_|. | 165 // Sets expectations for tasks scheduled via |mock_task_runner_|. |
| 169 void ExpectTaskPosted(int delay_ms) { | 166 void ExpectTaskPosted(int delay_ms) { |
| 170 base::TimeDelta delay = base::TimeDelta::FromMilliseconds(delay_ms); | 167 base::TimeDelta delay = base::TimeDelta::FromMilliseconds(delay_ms); |
| 171 EXPECT_CALL(mock_task_runner_, PostDelayedTask(_, _, delay)) | 168 EXPECT_CALL(mock_task_runner_, PostDelayedTask(delay)) |
| 172 .WillOnce(testing::Return(true)); | 169 .WillOnce(testing::Return(true)); |
| 173 } | 170 } |
| 174 | 171 |
| 175 // Sets up expectations for calls to |mock_dispatch_|. | 172 // Sets up expectations for calls to |mock_dispatch_|. |
| 176 void ExpectDispatch(MemoryPressureLevel level) { | 173 void ExpectDispatch(MemoryPressureLevel level) { |
| 177 EXPECT_CALL(mock_dispatch_, Dispatch(level)); | 174 EXPECT_CALL(mock_dispatch_, Dispatch(level)); |
| 178 } | 175 } |
| 179 void ExpectDispatchModerate() { | 176 void ExpectDispatchModerate() { |
| 180 EXPECT_CALL(mock_dispatch_, Dispatch(MEMORY_PRESSURE_LEVEL_MODERATE)); | 177 EXPECT_CALL(mock_dispatch_, Dispatch(MEMORY_PRESSURE_LEVEL_MODERATE)); |
| 181 } | 178 } |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 380 ExpectDispatchCritical(); | 377 ExpectDispatchCritical(); |
| 381 monitor_->OnMemoryPressureChanged(MEMORY_PRESSURE_LEVEL_CRITICAL); | 378 monitor_->OnMemoryPressureChanged(MEMORY_PRESSURE_LEVEL_CRITICAL); |
| 382 VerifyAndClearExpectations(); | 379 VerifyAndClearExpectations(); |
| 383 ExpectCritical(); | 380 ExpectCritical(); |
| 384 EXPECT_EQ(2u, monitor_->scheduled_checks().size()); | 381 EXPECT_EQ(2u, monitor_->scheduled_checks().size()); |
| 385 } | 382 } |
| 386 | 383 |
| 387 #endif // !MEMORY_PRESSURE_IS_POLLING | 384 #endif // !MEMORY_PRESSURE_IS_POLLING |
| 388 | 385 |
| 389 } // namespace memory_pressure | 386 } // namespace memory_pressure |
| OLD | NEW |