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

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

Issue 7264019: Readability review for gfeher (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebase Created 9 years, 4 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
« no previous file with comments | « chrome/browser/policy/delayed_work_scheduler.h ('k') | chrome/browser/policy/logging_work_scheduler.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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
index c7bc587ff51771b05b563e1b40d3564cdd8418e6..9ee4c6b61ee2c43d42831624e1fd34980dc26908 100644
--- a/chrome/browser/policy/logging_work_scheduler.h
+++ b/chrome/browser/policy/logging_work_scheduler.h
@@ -13,20 +13,37 @@
#include "base/memory/linked_ptr.h"
#include "chrome/browser/policy/delayed_work_scheduler.h"
-namespace policy {
-
-// 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);
+// 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.
- private:
- DISALLOW_COPY_AND_ASSIGN(DummyWorkScheduler);
-};
+namespace policy {
// Helper class for LoggingWorkScheduler. It essentially emulates a real
// message loop. All the submitted tasks are run with zero delay, but the
@@ -38,7 +55,7 @@ class DummyWorkScheduler : public DelayedWorkScheduler {
class EventLogger {
public:
EventLogger();
- virtual ~EventLogger();
+ ~EventLogger();
// Post a task to be executed |delay| milliseconds from now. The task can be
// cancelled later by calling Reset() on the callback.
@@ -56,36 +73,7 @@ class EventLogger {
int64 start, int64 length);
private:
- class Task {
- public:
- Task();
- Task(int64 trigger_time,
- int64 secondary_key,
- linked_ptr<base::Closure> callback);
- ~Task();
-
- // Returns true if |this| should be executed before |rhs|.
- // Used for sorting by the priority queue.
- bool operator< (const Task& rhs) const;
-
- int64 trigger_time() const;
-
- // Returns a copy of the callback object of this task, and resets the
- // original callback object. (LoggingTaskScheduler owns a linked_ptr to
- // its task's callback objects and it only allows firing new tasks if the
- // previous task's callback object has been reset.)
- base::Closure GetAndResetCallback();
-
- private:
- // The virtual time when this task will trigger.
- // Smaller times win.
- int64 trigger_time_;
- // Used for sorting tasks that have the same trigger_time.
- // Bigger keys win.
- int64 secondary_key_;
-
- linked_ptr<base::Closure> callback_;
- };
+ 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
@@ -115,6 +103,8 @@ class EventLogger {
// 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();
@@ -128,6 +118,19 @@ class LoggingWorkScheduler : public DelayedWorkScheduler {
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);
+
+ private:
+ DISALLOW_COPY_AND_ASSIGN(DummyWorkScheduler);
+};
+
} // namespace policy
#endif // CHROME_BROWSER_POLICY_LOGGING_WORK_SCHEDULER_H_
« no previous file with comments | « chrome/browser/policy/delayed_work_scheduler.h ('k') | chrome/browser/policy/logging_work_scheduler.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698