| 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 |