Home | History | Annotate | Download | only in gpu
      1 // Copyright 2014 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #include "content/renderer/gpu/render_widget_compositor.h"
      6 
      7 #include "cc/output/begin_frame_args.h"
      8 #include "content/public/test/mock_render_thread.h"
      9 #include "content/renderer/render_widget.h"
     10 #include "testing/gmock/include/gmock/gmock.h"
     11 #include "testing/gtest/include/gtest/gtest.h"
     12 #include "third_party/WebKit/public/platform/WebScreenInfo.h"
     13 
     14 using testing::AllOf;
     15 using testing::Field;
     16 
     17 namespace content {
     18 
     19 class MockWebWidget : public blink::WebWidget {
     20  public:
     21   MOCK_METHOD1(beginFrame, void(const blink::WebBeginFrameArgs& args));
     22 };
     23 
     24 class TestRenderWidget : public RenderWidget {
     25  public:
     26   TestRenderWidget()
     27       : RenderWidget(blink::WebPopupTypeNone,
     28                      blink::WebScreenInfo(),
     29                      true,
     30                      false,
     31                      false) {
     32     webwidget_ = &mock_webwidget_;
     33   }
     34 
     35   MockWebWidget mock_webwidget_;
     36 
     37  private:
     38   virtual ~TestRenderWidget() { webwidget_ = NULL; }
     39 
     40   DISALLOW_COPY_AND_ASSIGN(TestRenderWidget);
     41 };
     42 
     43 class RenderWidgetCompositorTest : public testing::Test {
     44  public:
     45   RenderWidgetCompositorTest()
     46       : render_widget_(make_scoped_refptr(new TestRenderWidget())),
     47         render_widget_compositor_(
     48             RenderWidgetCompositor::Create(render_widget_.get(), false)) {}
     49   virtual ~RenderWidgetCompositorTest() {}
     50 
     51  protected:
     52   MockRenderThread render_thread_;
     53   scoped_refptr<TestRenderWidget> render_widget_;
     54   scoped_ptr<RenderWidgetCompositor> render_widget_compositor_;
     55 
     56  private:
     57   DISALLOW_COPY_AND_ASSIGN(RenderWidgetCompositorTest);
     58 };
     59 
     60 TEST_F(RenderWidgetCompositorTest, BeginMainFrame) {
     61   base::TimeTicks frame_time(base::TimeTicks() +
     62                              base::TimeDelta::FromSeconds(1));
     63   base::TimeTicks deadline(base::TimeTicks() + base::TimeDelta::FromSeconds(2));
     64   base::TimeDelta interval(base::TimeDelta::FromSeconds(3));
     65   cc::BeginFrameArgs args(
     66       cc::BeginFrameArgs::Create(frame_time, deadline, interval));
     67 
     68   EXPECT_CALL(render_widget_->mock_webwidget_,
     69               beginFrame(AllOf(
     70                   Field(&blink::WebBeginFrameArgs::lastFrameTimeMonotonic, 1),
     71                   Field(&blink::WebBeginFrameArgs::deadline, 2),
     72                   Field(&blink::WebBeginFrameArgs::interval, 3))));
     73 
     74   render_widget_compositor_->BeginMainFrame(args);
     75 }
     76 
     77 }  // namespace content
     78