| Index: base/time/time.h
 | 
| diff --git a/base/time/time.h b/base/time/time.h
 | 
| index d61a351f18cc236ecaf22ff5dbe60274557c0b96..915eac8f3168a6cf5ca47a1fe0683d2be9cac32e 100644
 | 
| --- a/base/time/time.h
 | 
| +++ b/base/time/time.h
 | 
| @@ -100,6 +100,15 @@ class BASE_EXPORT TimeDelta {
 | 
|      return delta_;
 | 
|    }
 | 
|  
 | 
| +  // Returns the magnitude (absolute value) of this TimeDelta.
 | 
| +  TimeDelta magnitude() const {
 | 
| +    // Some toolchains provide an incomplete C++11 implementation and lack an
 | 
| +    // int64 overload for std::abs().  The following is a simple branchless
 | 
| +    // implementation:
 | 
| +    const int64 mask = delta_ >> (sizeof(delta_) * 8 - 1);
 | 
| +    return TimeDelta((delta_ + mask) ^ mask);
 | 
| +  }
 | 
| +
 | 
|    // Returns true if the time delta is the maximum time delta.
 | 
|    bool is_max() const {
 | 
|      return delta_ == std::numeric_limits<int64>::max();
 | 
| @@ -588,18 +597,26 @@ class BASE_EXPORT TimeTicks {
 | 
|    TimeTicks() : ticks_(0) {
 | 
|    }
 | 
|  
 | 
| -  // Platform-dependent tick count representing "right now."
 | 
| -  // The resolution of this clock is ~1-15ms.  Resolution varies depending
 | 
| -  // on hardware/operating system configuration.
 | 
| +  // Platform-dependent tick count representing "right now." When
 | 
| +  // IsHighResolution() returns false, the resolution of the clock could be
 | 
| +  // as coarse as ~15.6ms. Otherwise, the resolution should be no worse than one
 | 
| +  // microsecond.
 | 
|    static TimeTicks Now();
 | 
|  
 | 
| -  // Returns a platform-dependent high-resolution tick count. Implementation
 | 
| -  // is hardware dependent and may or may not return sub-millisecond
 | 
| -  // resolution.  THIS CALL IS GENERALLY MUCH MORE EXPENSIVE THAN Now() AND
 | 
| -  // SHOULD ONLY BE USED WHEN IT IS REALLY NEEDED.
 | 
| -  static TimeTicks HighResNow();
 | 
| +  // DEPRECATED
 | 
| +  // TODO(miu): Remove this function, and all callpoints should call Now().
 | 
| +  static TimeTicks HighResNow() { return TimeTicks::Now(); }
 | 
|  
 | 
| -  static bool IsHighResNowFastAndReliable();
 | 
| +  // Returns true if the high resolution clock is working on this system and
 | 
| +  // Now() will return high resolution values. Note that, on systems where the
 | 
| +  // high resolution clock works but is deemed inefficient, the low resolution
 | 
| +  // clock will be used instead.
 | 
| +  static bool IsHighResolution();
 | 
| +
 | 
| +  // DEPRECATED
 | 
| +  // TODO(miu): Remove this function, and all callpoints should call
 | 
| +  // IsHighResolution().
 | 
| +  static bool IsHighResNowFastAndReliable() { return IsHighResolution(); }
 | 
|  
 | 
|    // Returns true if ThreadNow() is supported on this system.
 | 
|    static bool IsThreadNowSupported() {
 | 
| @@ -616,24 +633,33 @@ class BASE_EXPORT TimeTicks {
 | 
|    // to (approximately) measure how much time the calling thread spent doing
 | 
|    // actual work vs. being de-scheduled. May return bogus results if the thread
 | 
|    // migrates to another CPU between two calls.
 | 
| +  //
 | 
| +  // WARNING: The returned value might NOT have the same origin as Now(). Do not
 | 
| +  // perform math between TimeTicks values returned by Now() and ThreadNow() and
 | 
| +  // expect meaningful results.
 | 
| +  // TODO(miu): Since the timeline of these values is different, the values
 | 
| +  // should be of a different type.
 | 
|    static TimeTicks ThreadNow();
 | 
|  
 | 
| -  // Returns the current system trace time or, if none is defined, the current
 | 
| -  // high-res time (i.e. HighResNow()). On systems where a global trace clock
 | 
| -  // is defined, timestamping TraceEvents's with this value guarantees
 | 
| -  // synchronization between events collected inside chrome and events
 | 
| -  // collected outside (e.g. kernel, X server).
 | 
| +  // Returns the current system trace time or, if not available on this
 | 
| +  // platform, a high-resolution time value; or a low-resolution time value if
 | 
| +  // neither are avalable. On systems where a global trace clock is defined,
 | 
| +  // timestamping TraceEvents's with this value guarantees synchronization
 | 
| +  // between events collected inside chrome and events collected outside
 | 
| +  // (e.g. kernel, X server).
 | 
| +  //
 | 
| +  // WARNING: The returned value might NOT have the same origin as Now(). Do not
 | 
| +  // perform math between TimeTicks values returned by Now() and
 | 
| +  // NowFromSystemTraceTime() and expect meaningful results.
 | 
| +  // TODO(miu): Since the timeline of these values is different, the values
 | 
| +  // should be of a different type.
 | 
|    static TimeTicks NowFromSystemTraceTime();
 | 
|  
 | 
|  #if defined(OS_WIN)
 | 
| -  // Get the absolute value of QPC time drift. For testing.
 | 
| -  static int64 GetQPCDriftMicroseconds();
 | 
| -
 | 
| +  // Translates an absolute QPC timestamp into a TimeTicks value. The returned
 | 
| +  // value has the same origin as Now(). Do NOT attempt to use this if
 | 
| +  // IsHighResolution() returns false.
 | 
|    static TimeTicks FromQPCValue(LONGLONG qpc_value);
 | 
| -
 | 
| -  // Returns true if the high resolution clock is working on this system.
 | 
| -  // This is only for testing.
 | 
| -  static bool IsHighResClockWorking();
 | 
|  #endif
 | 
|  
 | 
|    // Returns true if this object has not been initialized.
 | 
| 
 |