Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2080)

Unified Diff: chrome/browser/policy/logging_work_scheduler.h

Issue 11946017: Remove old cloud policy code. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address nits. Created 7 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_
« no previous file with comments | « chrome/browser/policy/device_token_fetcher_unittest.cc ('k') | chrome/browser/policy/logging_work_scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698