| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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/device_sensors/data_fetcher_shared_memory_base.h" | 5 #include "content/browser/device_sensors/data_fetcher_shared_memory_base.h" |
| 6 | 6 |
| 7 #include <stddef.h> | 7 #include <stddef.h> |
| 8 #include <string.h> | 8 #include <string.h> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 49 void RemoveConsumer(ConsumerType consumer_type); | 49 void RemoveConsumer(ConsumerType consumer_type); |
| 50 | 50 |
| 51 unsigned GetConsumersBitmask() const { return consumers_bitmask_; } | 51 unsigned GetConsumersBitmask() const { return consumers_bitmask_; } |
| 52 bool IsTimerRunning() const { return timer_ ? timer_->IsRunning() : false; } | 52 bool IsTimerRunning() const { return timer_ ? timer_->IsRunning() : false; } |
| 53 | 53 |
| 54 private: | 54 private: |
| 55 void DoPoll(); | 55 void DoPoll(); |
| 56 | 56 |
| 57 unsigned consumers_bitmask_; | 57 unsigned consumers_bitmask_; |
| 58 DataFetcherSharedMemoryBase* fetcher_; | 58 DataFetcherSharedMemoryBase* fetcher_; |
| 59 scoped_ptr<base::RepeatingTimer> timer_; | 59 std::unique_ptr<base::RepeatingTimer> timer_; |
| 60 | 60 |
| 61 DISALLOW_COPY_AND_ASSIGN(PollingThread); | 61 DISALLOW_COPY_AND_ASSIGN(PollingThread); |
| 62 }; | 62 }; |
| 63 | 63 |
| 64 // --- PollingThread methods | 64 // --- PollingThread methods |
| 65 | 65 |
| 66 DataFetcherSharedMemoryBase::PollingThread::PollingThread( | 66 DataFetcherSharedMemoryBase::PollingThread::PollingThread( |
| 67 const char* name, DataFetcherSharedMemoryBase* fetcher) | 67 const char* name, DataFetcherSharedMemoryBase* fetcher) |
| 68 : base::Thread(name), | 68 : base::Thread(name), |
| 69 consumers_bitmask_(0), | 69 consumers_bitmask_(0), |
| (...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 219 base::SharedMemory* DataFetcherSharedMemoryBase::GetSharedMemory( | 219 base::SharedMemory* DataFetcherSharedMemoryBase::GetSharedMemory( |
| 220 ConsumerType consumer_type) { | 220 ConsumerType consumer_type) { |
| 221 SharedMemoryMap::const_iterator it = shared_memory_map_.find(consumer_type); | 221 SharedMemoryMap::const_iterator it = shared_memory_map_.find(consumer_type); |
| 222 if (it != shared_memory_map_.end()) | 222 if (it != shared_memory_map_.end()) |
| 223 return it->second; | 223 return it->second; |
| 224 | 224 |
| 225 size_t buffer_size = GetConsumerSharedMemoryBufferSize(consumer_type); | 225 size_t buffer_size = GetConsumerSharedMemoryBufferSize(consumer_type); |
| 226 if (buffer_size == 0) | 226 if (buffer_size == 0) |
| 227 return nullptr; | 227 return nullptr; |
| 228 | 228 |
| 229 scoped_ptr<base::SharedMemory> new_shared_mem(new base::SharedMemory); | 229 std::unique_ptr<base::SharedMemory> new_shared_mem(new base::SharedMemory); |
| 230 if (new_shared_mem->CreateAndMapAnonymous(buffer_size)) { | 230 if (new_shared_mem->CreateAndMapAnonymous(buffer_size)) { |
| 231 if (void* mem = new_shared_mem->memory()) { | 231 if (void* mem = new_shared_mem->memory()) { |
| 232 memset(mem, 0, buffer_size); | 232 memset(mem, 0, buffer_size); |
| 233 base::SharedMemory* shared_mem = new_shared_mem.release(); | 233 base::SharedMemory* shared_mem = new_shared_mem.release(); |
| 234 shared_memory_map_[consumer_type] = shared_mem; | 234 shared_memory_map_[consumer_type] = shared_mem; |
| 235 return shared_mem; | 235 return shared_mem; |
| 236 } | 236 } |
| 237 } | 237 } |
| 238 LOG(ERROR) << "Failed to initialize shared memory"; | 238 LOG(ERROR) << "Failed to initialize shared memory"; |
| 239 return nullptr; | 239 return nullptr; |
| 240 } | 240 } |
| 241 | 241 |
| 242 void* DataFetcherSharedMemoryBase::GetSharedMemoryBuffer( | 242 void* DataFetcherSharedMemoryBase::GetSharedMemoryBuffer( |
| 243 ConsumerType consumer_type) { | 243 ConsumerType consumer_type) { |
| 244 if (base::SharedMemory* shared_memory = GetSharedMemory(consumer_type)) | 244 if (base::SharedMemory* shared_memory = GetSharedMemory(consumer_type)) |
| 245 return shared_memory->memory(); | 245 return shared_memory->memory(); |
| 246 return nullptr; | 246 return nullptr; |
| 247 } | 247 } |
| 248 | 248 |
| 249 base::MessageLoop* DataFetcherSharedMemoryBase::GetPollingMessageLoop() const { | 249 base::MessageLoop* DataFetcherSharedMemoryBase::GetPollingMessageLoop() const { |
| 250 return polling_thread_ ? polling_thread_->message_loop() : nullptr; | 250 return polling_thread_ ? polling_thread_->message_loop() : nullptr; |
| 251 } | 251 } |
| 252 | 252 |
| 253 bool DataFetcherSharedMemoryBase::IsPollingTimerRunningForTesting() const { | 253 bool DataFetcherSharedMemoryBase::IsPollingTimerRunningForTesting() const { |
| 254 return polling_thread_ ? polling_thread_->IsTimerRunning() : false; | 254 return polling_thread_ ? polling_thread_->IsTimerRunning() : false; |
| 255 } | 255 } |
| 256 | 256 |
| 257 } // namespace content | 257 } // namespace content |
| OLD | NEW |