Index: chrome/browser/prerender/prerender_manager.h |
diff --git a/chrome/browser/prerender/prerender_manager.h b/chrome/browser/prerender/prerender_manager.h |
index 8f335719c06c6326398d5fdc61287bfc8d1d3936..0d4407770d36e8cb2d26bc977d55f3d0e9abd934 100644 |
--- a/chrome/browser/prerender/prerender_manager.h |
+++ b/chrome/browser/prerender/prerender_manager.h |
@@ -99,6 +99,13 @@ class PrerenderManager : public content::NotificationObserver, |
CLEAR_MAX = 0x1 << 2 |
}; |
+ // Used to manipulate time for testing. |
+ class TimeOverride { |
+ public: |
+ virtual base::Time GetCurrentTime() const = 0; |
+ virtual base::TimeTicks GetCurrentTimeTicks() const = 0; |
+ }; |
+ |
// Owned by a Profile object for the lifetime of the profile. |
explicit PrerenderManager(Profile* profile); |
~PrerenderManager() override; |
@@ -312,11 +319,13 @@ class PrerenderManager : public content::NotificationObserver, |
Profile* profile() const { return profile_; } |
- // Classes which will be tested in prerender unit browser tests should use |
- // these methods to get times for comparison, so that the test framework can |
- // mock advancing/retarding time. |
- virtual base::Time GetCurrentTime() const; |
- virtual base::TimeTicks GetCurrentTimeTicks() const; |
+ base::Time GetCurrentTime() const; |
+ base::TimeTicks GetCurrentTimeTicks() const; |
+ |
+ // For testing. |
+ // TODO(mattcary): unify time testing by using base::SimpleTestClock and |
+ // SimpleTestTickClock. |
+ void SetTimeOverride(std::unique_ptr<TimeOverride> override); |
// Notification that a prerender has completed and its bytes should be |
// recorded. |
@@ -596,6 +605,8 @@ class PrerenderManager : public content::NotificationObserver, |
using PrerenderProcessSet = std::set<content::RenderProcessHost*>; |
PrerenderProcessSet prerender_process_hosts_; |
+ std::unique_ptr<TimeOverride> time_override_; |
+ |
base::WeakPtrFactory<PrerenderManager> weak_factory_; |
DISALLOW_COPY_AND_ASSIGN(PrerenderManager); |