OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 "base/memory/discardable_memory_provider.h" | 5 #include "base/memory/discardable_memory_provider.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/discardable_memory.h" | 8 #include "base/memory/discardable_memory.h" |
9 #include "base/run_loop.h" | 9 #include "base/run_loop.h" |
10 #include "base/synchronization/waitable_event.h" | 10 #include "base/synchronization/waitable_event.h" |
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
55 | 55 |
56 private: | 56 private: |
57 internal::DiscardableMemoryProvider* provider_; | 57 internal::DiscardableMemoryProvider* provider_; |
58 scoped_ptr<uint8, FreeDeleter> memory_; | 58 scoped_ptr<uint8, FreeDeleter> memory_; |
59 bool is_locked_; | 59 bool is_locked_; |
60 | 60 |
61 DISALLOW_COPY_AND_ASSIGN(TestDiscardableMemory); | 61 DISALLOW_COPY_AND_ASSIGN(TestDiscardableMemory); |
62 }; | 62 }; |
63 | 63 |
64 DiscardableMemoryProviderTestBase() | 64 DiscardableMemoryProviderTestBase() |
65 : message_loop_(MessageLoop::TYPE_IO), | 65 : provider_(new internal::DiscardableMemoryProvider) { |
66 provider_(new internal::DiscardableMemoryProvider) { | |
67 provider_->RegisterMemoryPressureListener(); | 66 provider_->RegisterMemoryPressureListener(); |
68 } | 67 } |
69 | 68 |
70 protected: | 69 protected: |
71 bool IsRegistered(const DiscardableMemory* discardable) { | 70 bool IsRegistered(const DiscardableMemory* discardable) { |
72 return provider_->IsRegisteredForTest(discardable); | 71 return provider_->IsRegisteredForTest(discardable); |
73 } | 72 } |
74 | 73 |
75 bool CanBePurged(const DiscardableMemory* discardable) { | 74 bool CanBePurged(const DiscardableMemory* discardable) { |
76 return provider_->CanBePurgedForTest(discardable); | 75 return provider_->CanBePurgedForTest(discardable); |
(...skipping 17 matching lines...) Expand all Loading... |
94 | 93 |
95 scoped_ptr<DiscardableMemory> CreateLockedMemory(size_t size) { | 94 scoped_ptr<DiscardableMemory> CreateLockedMemory(size_t size) { |
96 scoped_ptr<TestDiscardableMemory> memory( | 95 scoped_ptr<TestDiscardableMemory> memory( |
97 new TestDiscardableMemory(provider_.get(), size)); | 96 new TestDiscardableMemory(provider_.get(), size)); |
98 if (memory->Lock() != DISCARDABLE_MEMORY_LOCK_STATUS_PURGED) | 97 if (memory->Lock() != DISCARDABLE_MEMORY_LOCK_STATUS_PURGED) |
99 return scoped_ptr<DiscardableMemory>(); | 98 return scoped_ptr<DiscardableMemory>(); |
100 return memory.PassAs<DiscardableMemory>(); | 99 return memory.PassAs<DiscardableMemory>(); |
101 } | 100 } |
102 | 101 |
103 private: | 102 private: |
104 MessageLoop message_loop_; | 103 MessageLoopForIO message_loop_; |
105 scoped_ptr<internal::DiscardableMemoryProvider> provider_; | 104 scoped_ptr<internal::DiscardableMemoryProvider> provider_; |
106 }; | 105 }; |
107 | 106 |
108 class DiscardableMemoryProviderTest | 107 class DiscardableMemoryProviderTest |
109 : public DiscardableMemoryProviderTestBase, | 108 : public DiscardableMemoryProviderTestBase, |
110 public testing::Test { | 109 public testing::Test { |
111 public: | 110 public: |
112 DiscardableMemoryProviderTest() {} | 111 DiscardableMemoryProviderTest() {} |
113 }; | 112 }; |
114 | 113 |
(...skipping 285 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
400 Bind(&ThreadedDiscardableMemoryProviderTest::UseMemoryHelper, | 399 Bind(&ThreadedDiscardableMemoryProviderTest::UseMemoryHelper, |
401 Unretained(this))); | 400 Unretained(this))); |
402 memory_usage_thread_.message_loop()->PostTask( | 401 memory_usage_thread_.message_loop()->PostTask( |
403 FROM_HERE, | 402 FROM_HERE, |
404 Bind(&ThreadedDiscardableMemoryProviderTest::SignalHelper, | 403 Bind(&ThreadedDiscardableMemoryProviderTest::SignalHelper, |
405 Unretained(this))); | 404 Unretained(this))); |
406 thread_sync_.Wait(); | 405 thread_sync_.Wait(); |
407 } | 406 } |
408 | 407 |
409 } // namespace base | 408 } // namespace base |
OLD | NEW |