| Index: cc/trees/layer_tree_host_impl_unittest.cc
 | 
| diff --git a/cc/trees/layer_tree_host_impl_unittest.cc b/cc/trees/layer_tree_host_impl_unittest.cc
 | 
| index f6350255b1f02cede3dcdf02cbec46f320ed7648..acb7c7def78d6e834d8537be6f1465dda284247c 100644
 | 
| --- a/cc/trees/layer_tree_host_impl_unittest.cc
 | 
| +++ b/cc/trees/layer_tree_host_impl_unittest.cc
 | 
| @@ -53,6 +53,7 @@
 | 
|  #include "media/base/media.h"
 | 
|  #include "testing/gmock/include/gmock/gmock.h"
 | 
|  #include "testing/gtest/include/gtest/gtest.h"
 | 
| +#include "ui/gfx/frame_time.h"
 | 
|  #include "ui/gfx/rect_conversions.h"
 | 
|  #include "ui/gfx/size_conversions.h"
 | 
|  #include "ui/gfx/vector2d_conversions.h"
 | 
| @@ -272,7 +273,7 @@ class LayerTreeHostImplTest : public testing::Test,
 | 
|    void DrawFrame() {
 | 
|      LayerTreeHostImpl::FrameData frame;
 | 
|      EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -1214,7 +1215,7 @@ TEST_F(LayerTreeHostImplTest, ScrollbarLinearFadeScheduling) {
 | 
|    host_impl_->active_tree()->DidBecomeActive();
 | 
|    InitializeRendererAndDrawFrame();
 | 
|  
 | 
| -  base::TimeTicks fake_now = base::TimeTicks::Now();
 | 
| +  base::TimeTicks fake_now = gfx::FrameTime::Now();
 | 
|    host_impl_override_time->SetCurrentPhysicalTimeTicksForTest(fake_now);
 | 
|  
 | 
|    // If no scroll happened recently, StartScrollbarAnimation should have no
 | 
| @@ -1513,7 +1514,7 @@ TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) {
 | 
|    {
 | 
|      LayerTreeHostImpl::FrameData frame;
 | 
|      EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10)));
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|      EXPECT_TRUE(layer->will_draw_called());
 | 
| @@ -1528,7 +1529,7 @@ TEST_F(LayerTreeHostImplTest, WillDrawReturningFalseDoesNotCall) {
 | 
|      layer->ClearDidDrawCheck();
 | 
|  
 | 
|      EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect(10, 10)));
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|      EXPECT_TRUE(layer->will_draw_called());
 | 
| @@ -1560,7 +1561,7 @@ TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) {
 | 
|    EXPECT_FALSE(layer->did_draw_called());
 | 
|  
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    EXPECT_FALSE(layer->will_draw_called());
 | 
| @@ -1575,7 +1576,7 @@ TEST_F(LayerTreeHostImplTest, DidDrawNotCalledOnHiddenLayer) {
 | 
|    EXPECT_FALSE(layer->did_draw_called());
 | 
|  
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    EXPECT_TRUE(layer->will_draw_called());
 | 
| @@ -1614,7 +1615,7 @@ TEST_F(LayerTreeHostImplTest, WillDrawNotCalledOnOccludedLayer) {
 | 
|    EXPECT_FALSE(top_layer->did_draw_called());
 | 
|  
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    EXPECT_FALSE(occluded_layer->will_draw_called());
 | 
| @@ -1646,7 +1647,7 @@ TEST_F(LayerTreeHostImplTest, DidDrawCalledOnAllLayers) {
 | 
|  
 | 
|    LayerTreeHostImpl::FrameData frame;
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    EXPECT_TRUE(root->did_draw_called());
 | 
| @@ -1719,7 +1720,7 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) {
 | 
|    LayerTreeHostImpl::FrameData frame;
 | 
|  
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    // When a texture is missing and we're not animating, we draw as usual with
 | 
| @@ -1737,7 +1738,7 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) {
 | 
|                                             host_impl_->resource_provider()));
 | 
|  
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    // When a texture is missing and we're animating, we don't want to draw
 | 
| @@ -1755,7 +1756,7 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) {
 | 
|                                             host_impl_->resource_provider()));
 | 
|  
 | 
|    EXPECT_FALSE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    // When the layer skips draw and we're animating, we still draw the frame.
 | 
| @@ -1772,7 +1773,7 @@ TEST_F(LayerTreeHostImplTest, PrepareToDrawFailsWhenAnimationUsesCheckerboard) {
 | 
|                                             host_impl_->resource_provider()));
 | 
|  
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  }
 | 
|  
 | 
| @@ -2068,7 +2069,7 @@ TEST_F(LayerTreeHostImplTest, PageScaleDeltaAppliedToRootScrollLayerOnly) {
 | 
|    // the page scale delta on the root layer is applied hierarchically.
 | 
|    LayerTreeHostImpl::FrameData frame;
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    EXPECT_EQ(1.f, root->draw_transform().matrix().getDouble(0, 0));
 | 
| @@ -2903,7 +2904,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer1->SetExpectation(false, false);
 | 
|    layer1->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
| @@ -2912,7 +2913,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer1->SetExpectation(true, false);
 | 
|    layer1->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
| @@ -2922,7 +2923,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer1->SetExpectation(true, false);
 | 
|    layer1->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
| @@ -2932,7 +2933,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer1->SetExpectation(true, false);
 | 
|    layer1->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
| @@ -2954,7 +2955,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer2->SetExpectation(false, false);
 | 
|    layer2->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    EXPECT_TRUE(layer2->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
| @@ -2967,7 +2968,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer2->SetExpectation(false, false);
 | 
|    layer2->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    EXPECT_TRUE(layer2->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
| @@ -2981,7 +2982,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer2->SetExpectation(false, false);
 | 
|    layer2->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    EXPECT_TRUE(layer2->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
| @@ -2998,7 +2999,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer2->SetExpectation(false, false);
 | 
|    layer2->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    EXPECT_TRUE(layer2->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
| @@ -3014,7 +3015,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer2->SetExpectation(true, false);
 | 
|    layer2->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    EXPECT_TRUE(layer2->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
| @@ -3029,7 +3030,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer2->SetExpectation(true, false);
 | 
|    layer2->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    EXPECT_TRUE(layer2->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
| @@ -3045,7 +3046,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer2->SetExpectation(false, false);
 | 
|    layer2->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    EXPECT_TRUE(layer2->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
| @@ -3058,7 +3059,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer1->SetExpectation(true, false);
 | 
|    layer1->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
| @@ -3070,7 +3071,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer1->SetExpectation(true, false);
 | 
|    layer1->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
| @@ -3082,7 +3083,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer1->SetExpectation(true, false);
 | 
|    layer1->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
| @@ -3095,7 +3096,7 @@ TEST_F(LayerTreeHostImplTest, BlendingOffWhenDrawingOpaqueLayers) {
 | 
|    layer1->SetExpectation(false, false);
 | 
|    layer1->set_update_rect(gfx::RectF(layer1->content_bounds()));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(layer1->quads_appended());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  }
 | 
| @@ -3453,7 +3454,7 @@ TEST_F(LayerTreeHostImplTest, ReshapeNotCalledUntilDraw) {
 | 
|    host_impl_->SetViewportSize(gfx::Size(10, 10));
 | 
|    host_impl_->SetDeviceScaleFactor(1.f);
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(reshape_tracker->reshape_called());
 | 
|    EXPECT_EQ(reshape_tracker->last_reshape_width(), 10);
 | 
|    EXPECT_EQ(reshape_tracker->last_reshape_height(), 10);
 | 
| @@ -3463,7 +3464,7 @@ TEST_F(LayerTreeHostImplTest, ReshapeNotCalledUntilDraw) {
 | 
|  
 | 
|    host_impl_->SetViewportSize(gfx::Size(20, 30));
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(reshape_tracker->reshape_called());
 | 
|    EXPECT_EQ(reshape_tracker->last_reshape_width(), 20);
 | 
|    EXPECT_EQ(reshape_tracker->last_reshape_height(), 30);
 | 
| @@ -3473,7 +3474,7 @@ TEST_F(LayerTreeHostImplTest, ReshapeNotCalledUntilDraw) {
 | 
|  
 | 
|    host_impl_->SetDeviceScaleFactor(2.f);
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    EXPECT_TRUE(reshape_tracker->reshape_called());
 | 
|    EXPECT_EQ(reshape_tracker->last_reshape_width(), 20);
 | 
|    EXPECT_EQ(reshape_tracker->last_reshape_height(), 30);
 | 
| @@ -3559,7 +3560,7 @@ TEST_F(LayerTreeHostImplTest, PartialSwapReceivesDamageRect) {
 | 
|  
 | 
|    // First frame, the entire screen should get swapped.
 | 
|    EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    layer_tree_host_impl->DidDrawAllLayers(frame);
 | 
|    layer_tree_host_impl->SwapBuffers(frame);
 | 
|    gfx::Rect actual_swap_rect = swap_tracker->update_rect();
 | 
| @@ -3577,7 +3578,7 @@ TEST_F(LayerTreeHostImplTest, PartialSwapReceivesDamageRect) {
 | 
|    layer_tree_host_impl->active_tree()->root_layer()->children()[0]->SetPosition(
 | 
|        gfx::PointF());
 | 
|    EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|    layer_tree_host_impl->SwapBuffers(frame);
 | 
|    actual_swap_rect = swap_tracker->update_rect();
 | 
| @@ -3597,7 +3598,7 @@ TEST_F(LayerTreeHostImplTest, PartialSwapReceivesDamageRect) {
 | 
|    layer_tree_host_impl->active_tree()->root_layer()->SetBackgroundColor(
 | 
|        SK_ColorBLACK);
 | 
|    EXPECT_TRUE(layer_tree_host_impl->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  layer_tree_host_impl->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  layer_tree_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|    layer_tree_host_impl->SwapBuffers(frame);
 | 
|    actual_swap_rect = swap_tracker->update_rect();
 | 
| @@ -3765,7 +3766,7 @@ TEST_F(LayerTreeHostImplTest, NoPartialSwap) {
 | 
|    {
 | 
|      LayerTreeHostImpl::FrameData frame;
 | 
|      EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|    Mock::VerifyAndClearExpectations(&mock_context);
 | 
| @@ -3778,7 +3779,7 @@ TEST_F(LayerTreeHostImplTest, NoPartialSwap) {
 | 
|    {
 | 
|      LayerTreeHostImpl::FrameData frame;
 | 
|      EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|    Mock::VerifyAndClearExpectations(&mock_context);
 | 
| @@ -3800,7 +3801,7 @@ TEST_F(LayerTreeHostImplTest, PartialSwap) {
 | 
|    {
 | 
|      LayerTreeHostImpl::FrameData frame;
 | 
|      EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|    Mock::VerifyAndClearExpectations(&mock_context);
 | 
| @@ -3815,7 +3816,7 @@ TEST_F(LayerTreeHostImplTest, PartialSwap) {
 | 
|    {
 | 
|      LayerTreeHostImpl::FrameData frame;
 | 
|      EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|    Mock::VerifyAndClearExpectations(&mock_context);
 | 
| @@ -3929,7 +3930,7 @@ TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorPartialSwap) {
 | 
|      EXPECT_EQ(DrawQuad::RENDER_PASS,
 | 
|                frame.render_passes[1]->quad_list[0]->material);
 | 
|  
 | 
| -    my_host_impl->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      my_host_impl->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  }
 | 
| @@ -3950,7 +3951,7 @@ TEST_F(LayerTreeHostImplTest, ContributingLayerEmptyScissorNoPartialSwap) {
 | 
|      EXPECT_EQ(DrawQuad::RENDER_PASS,
 | 
|                frame.render_passes[1]->quad_list[0]->material);
 | 
|  
 | 
| -    my_host_impl->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    my_host_impl->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      my_host_impl->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  }
 | 
| @@ -4029,7 +4030,7 @@ TEST_F(LayerTreeHostImplTest, LayersFreeTextures) {
 | 
|  
 | 
|    LayerTreeHostImpl::FrameData frame;
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|    host_impl_->SwapBuffers(frame);
 | 
|  
 | 
| @@ -4072,7 +4073,7 @@ TEST_F(LayerTreeHostImplTest, HasTransparentBackground) {
 | 
|        .Times(1);
 | 
|    LayerTreeHostImpl::FrameData frame;
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|    Mock::VerifyAndClearExpectations(&mock_context);
 | 
|  
 | 
| @@ -4080,7 +4081,7 @@ TEST_F(LayerTreeHostImplTest, HasTransparentBackground) {
 | 
|    host_impl_->active_tree()->set_has_transparent_background(true);
 | 
|    host_impl_->SetFullRootLayerDamage();
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|    Mock::VerifyAndClearExpectations(&mock_context);
 | 
|  }
 | 
| @@ -4167,7 +4168,7 @@ class LayerTreeHostImplTestWithDelegatingRenderer
 | 
|                       root_render_pass->quad_list[1]->visible_rect);
 | 
|      }
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|      EXPECT_EQ(expect_to_draw, host_impl_->SwapBuffers(frame));
 | 
|    }
 | 
| @@ -4309,7 +4310,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                render_pass_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -4337,7 +4338,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                render_pass_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -4367,7 +4368,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithScaling) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                render_pass_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  }
 | 
| @@ -4430,7 +4431,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                render_pass_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -4457,7 +4458,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                render_pass_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -4487,7 +4488,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                render_pass_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -4512,7 +4513,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerWithDifferentBounds) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                render_pass_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  }
 | 
| @@ -4581,7 +4582,7 @@ TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                replica_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -4609,7 +4610,7 @@ TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                replica_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -4640,7 +4641,7 @@ TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                replica_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -4666,7 +4667,7 @@ TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerWithDifferentBounds) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 1.f, 1.f).ToString(),
 | 
|                replica_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  }
 | 
| @@ -4757,7 +4758,7 @@ TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerForSurfaceWithUnclippedChild) {
 | 
|      EXPECT_EQ(gfx::RectF(0.f, 0.f, 2.f, 1.f).ToString(),
 | 
|                replica_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  
 | 
| @@ -4791,7 +4792,7 @@ TEST_F(LayerTreeHostImplTest, ReflectionMaskLayerForSurfaceWithUnclippedChild) {
 | 
|      EXPECT_EQ(gfx::RectF(-1.f, 0.f, 2.f, 1.f).ToString(),
 | 
|                replica_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  }
 | 
| @@ -4887,7 +4888,7 @@ TEST_F(LayerTreeHostImplTest, MaskLayerForSurfaceWithClippedLayer) {
 | 
|                               1.f / 50.f).ToString(),
 | 
|                render_pass_quad->mask_uv_rect.ToString());
 | 
|  
 | 
| -    host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +    host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|      host_impl_->DidDrawAllLayers(frame);
 | 
|    }
 | 
|  }
 | 
| @@ -4960,7 +4961,7 @@ TEST_F(LayerTreeHostImplTest, FarAwayQuadsDontNeedAA) {
 | 
|            quad->quadTransform(), quad, &device_layer_quad, edge);
 | 
|    EXPECT_FALSE(antialiased);
 | 
|  
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  }
 | 
|  
 | 
| @@ -5061,7 +5062,7 @@ TEST_F(LayerTreeHostImplTest,
 | 
|  
 | 
|    LayerTreeHostImpl::FrameData frame;
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    EXPECT_EQ(1u, frame.will_draw_layers.size());
 | 
| @@ -5349,7 +5350,7 @@ TEST_F(LayerTreeHostImplTest, ShutdownReleasesContext) {
 | 
|  
 | 
|    LayerTreeHostImpl::FrameData frame;
 | 
|    EXPECT_TRUE(host_impl_->PrepareToDraw(&frame, gfx::Rect()));
 | 
| -  host_impl_->DrawLayers(&frame, base::TimeTicks::Now());
 | 
| +  host_impl_->DrawLayers(&frame, gfx::FrameTime::Now());
 | 
|    host_impl_->DidDrawAllLayers(frame);
 | 
|  
 | 
|    // The CopyOutputResult's callback has a ref on the ContextProvider and a
 | 
| 
 |