Index: chrome/common/worker_thread_ticker.cc |
diff --git a/chrome/common/worker_thread_ticker.cc b/chrome/common/worker_thread_ticker.cc |
deleted file mode 100644 |
index 8b78d9798387834db9adb976fd681804a6ec14d5..0000000000000000000000000000000000000000 |
--- a/chrome/common/worker_thread_ticker.cc |
+++ /dev/null |
@@ -1,97 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "chrome/common/worker_thread_ticker.h" |
- |
-#include <algorithm> |
- |
-#include "base/bind.h" |
-#include "base/bind_helpers.h" |
-#include "base/location.h" |
-#include "base/logging.h" |
-#include "base/single_thread_task_runner.h" |
-#include "base/threading/thread.h" |
- |
-WorkerThreadTicker::WorkerThreadTicker(int tick_interval) |
- : timer_thread_("worker_thread_ticker"), |
- is_running_(false), |
- tick_interval_(base::TimeDelta::FromMilliseconds(tick_interval)) { |
-} |
- |
-WorkerThreadTicker::~WorkerThreadTicker() { |
- Stop(); |
-} |
- |
-bool WorkerThreadTicker::RegisterTickHandler(Callback *tick_handler) { |
- DCHECK(tick_handler); |
- base::AutoLock lock(lock_); |
- // You cannot change the list of handlers when the timer is running. |
- // You need to call Stop first. |
- if (IsRunning()) |
- return false; |
- tick_handler_list_.push_back(tick_handler); |
- return true; |
-} |
- |
-bool WorkerThreadTicker::UnregisterTickHandler(Callback *tick_handler) { |
- DCHECK(tick_handler); |
- base::AutoLock lock(lock_); |
- // You cannot change the list of handlers when the timer is running. |
- // You need to call Stop first. |
- if (IsRunning()) { |
- return false; |
- } |
- TickHandlerListType::iterator index = std::remove(tick_handler_list_.begin(), |
- tick_handler_list_.end(), |
- tick_handler); |
- if (index == tick_handler_list_.end()) { |
- return false; |
- } |
- tick_handler_list_.erase(index, tick_handler_list_.end()); |
- return true; |
-} |
- |
-bool WorkerThreadTicker::Start() { |
- // Do this in a lock because we don't want 2 threads to |
- // call Start at the same time |
- base::AutoLock lock(lock_); |
- if (IsRunning()) |
- return false; |
- if (!timer_thread_.Start()) |
- return false; |
- is_running_ = true; |
- ScheduleTimerTask(); |
- return true; |
-} |
- |
-bool WorkerThreadTicker::Stop() { |
- // Do this in a lock because we don't want 2 threads to |
- // call Stop at the same time |
- base::AutoLock lock(lock_); |
- if (!IsRunning()) |
- return false; |
- is_running_ = false; |
- timer_thread_.Stop(); |
- return true; |
-} |
- |
-void WorkerThreadTicker::ScheduleTimerTask() { |
- timer_thread_.task_runner()->PostDelayedTask( |
- FROM_HERE, |
- base::Bind(&WorkerThreadTicker::TimerTask, base::Unretained(this)), |
- tick_interval_); |
-} |
- |
-void WorkerThreadTicker::TimerTask() { |
- // When the ticker is running, the handler list CANNOT be modified. |
- // So we can do the enumeration safely without a lock |
- const TickHandlerListType& handlers = tick_handler_list_; |
- for (TickHandlerListType::const_iterator i = handlers.begin(); |
- i != handlers.end(); ++i) { |
- (*i)->OnTick(); |
- } |
- |
- ScheduleTimerTask(); |
-} |
- |