Index: chrome/browser/policy/logging_work_scheduler.h |
diff --git a/chrome/browser/policy/logging_work_scheduler.h b/chrome/browser/policy/logging_work_scheduler.h |
deleted file mode 100644 |
index 771aad44b32865b2bb4e566c325374dc6581d88e..0000000000000000000000000000000000000000 |
--- a/chrome/browser/policy/logging_work_scheduler.h |
+++ /dev/null |
@@ -1,140 +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. |
- |
-#ifndef CHROME_BROWSER_POLICY_LOGGING_WORK_SCHEDULER_H_ |
-#define CHROME_BROWSER_POLICY_LOGGING_WORK_SCHEDULER_H_ |
- |
-#include <queue> |
-#include <vector> |
- |
-#include "base/basictypes.h" |
-#include "base/callback.h" |
-#include "base/compiler_specific.h" |
-#include "base/memory/linked_ptr.h" |
-#include "base/memory/weak_ptr.h" |
-#include "chrome/browser/policy/delayed_work_scheduler.h" |
- |
-// Utilities for testing users of DelayedWorkScheduler. There are no |
-// thread-safety guarantees for the classes in this file. They expect to |
-// only be called from the UI thread and issue callbacks on that very same |
-// thread. |
-// |
-// Usage examples: |
-// |
-// Making CloudPolicyController and/or DeviceTokenFetcher run without real-time |
-// delays in tests: |
-// |
-// DeviceTokenFetcher fetcher(..., new DummyDelayedWorkScheduler); |
-// |
-// Running CloudPolicyController and/or DeviceTokenFetcher in a simulated |
-// environment, in which the time of any of their actions can be recorded, |
-// but without having to wait for the real-time delays: |
-// |
-// EventLogger logger; |
-// DeviceTokenFetcher fetcher(..., new LoggingEventScheduler(&logger)); |
-// CloudPolicyController controller(..., new LoggingEventScheduler(&logger)); |
-// |
-// Start the policy subsystem, and use logger.RegisterEvent() in case of |
-// any interesting events. The time of all these events will be recorded |
-// by |logger|. After that, the results can be extracted easily: |
-// |
-// std::vector<int64> logged_events; |
-// logger.Swap(&logged_events); |
-// |
-// Each element of |logged_events| corresponds to a logger event, and stores |
-// the virtual time when it was logged. Events are in ascending order. |
- |
-namespace policy { |
- |
-// Helper class for LoggingWorkScheduler. It essentially emulates a real |
-// message loop. All the submitted tasks are run with zero delay, but the |
-// order in which they would run with delays is preserved. |
-// All the task posting requests of the schedulers will be channeled through |
-// a common instance of EventLogger. This makes sure, that this instance can |
-// keep track of time in the simulation and record logged events with correct |
-// timestamps. |
-class EventLogger { |
- public: |
- EventLogger(); |
- ~EventLogger(); |
- |
- // Post a task to be executed |delay| milliseconds from now. The task can be |
- // cancelled later by calling Reset() on the callback. |
- void PostDelayedWork(linked_ptr<base::Closure> callback, int64 delay); |
- |
- // Register a new event that happened now according to the internal clock. |
- void RegisterEvent(); |
- |
- // Swap out the internal list of events. |
- void Swap(std::vector<int64>* events); |
- |
- // Counts the events in a sorted integer array that are >= |start| but |
- // < |start| + |length|. |
- static int CountEvents(const std::vector<int64>& events, |
- int64 start, int64 length); |
- |
- private: |
- class Task; |
- |
- // Updates |current_time_| and triggers the next scheduled task. This method |
- // is run repeatedly on the main message loop until there are scheduled |
- // tasks. |
- void Step(); |
- |
- // Stores the list of scheduled tasks with their respective delays and |
- // schedulers. |
- std::priority_queue<Task> scheduled_tasks_; |
- |
- // Machinery to put a call to |Step| at the end of the message loop. |
- bool step_pending_; |
- base::WeakPtrFactory<EventLogger> weak_ptr_factory_; |
- |
- // Ascending list of observation-times of the logged events. |
- std::vector<int64> events_; |
- // The current time of the simulated system. |
- int64 current_time_; |
- // The total number of tasks scheduled so far. |
- int64 task_counter_; |
- |
- DISALLOW_COPY_AND_ASSIGN(EventLogger); |
-}; |
- |
-// Issues delayed tasks with zero effective delay, but posts them through |
-// an EventLogger, to make it possible to log events and reconstruct their |
-// execution time. |
-class LoggingWorkScheduler : public DelayedWorkScheduler { |
- public: |
- // An EventLogger may be shared by more than one schedulers, therefore |
- // no ownership is taken. |
- explicit LoggingWorkScheduler(EventLogger* logger); |
- virtual ~LoggingWorkScheduler(); |
- |
- virtual void PostDelayedWork(const base::Closure& callback, int64 delay) |
- OVERRIDE; |
- virtual void CancelDelayedWork() OVERRIDE; |
- |
- private: |
- EventLogger* logger_; |
- linked_ptr<base::Closure> callback_; |
- |
- DISALLOW_COPY_AND_ASSIGN(LoggingWorkScheduler); |
-}; |
- |
-// This implementation of DelayedWorkScheduler always schedules the tasks |
-// with zero delay. |
-class DummyWorkScheduler : public DelayedWorkScheduler { |
- public: |
- DummyWorkScheduler(); |
- virtual ~DummyWorkScheduler(); |
- |
- virtual void PostDelayedWork(const base::Closure& callback, int64 delay) |
- OVERRIDE; |
- |
- private: |
- DISALLOW_COPY_AND_ASSIGN(DummyWorkScheduler); |
-}; |
- |
-} // namespace policy |
- |
-#endif // CHROME_BROWSER_POLICY_LOGGING_WORK_SCHEDULER_H_ |