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.
5 #include "content/renderer/gpu/render_widget_compositor.h"
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"
19 class MockWebWidget : public blink::WebWidget {
21 MOCK_METHOD1(beginFrame, void(const blink::WebBeginFrameArgs& args));
24 class TestRenderWidget : public RenderWidget {
27 : RenderWidget(blink::WebPopupTypeNone,
28 blink::WebScreenInfo(),
32 webwidget_ = &mock_webwidget_;
35 MockWebWidget mock_webwidget_;
38 ~TestRenderWidget() override { webwidget_ = NULL; }
40 DISALLOW_COPY_AND_ASSIGN(TestRenderWidget);
43 class RenderWidgetCompositorTest : public testing::Test {
45 RenderWidgetCompositorTest()
46 : render_widget_(make_scoped_refptr(new TestRenderWidget())),
47 render_widget_compositor_(
48 RenderWidgetCompositor::Create(render_widget_.get(), false)) {}
49 ~RenderWidgetCompositorTest() override {}
52 MockRenderThread render_thread_;
53 scoped_refptr<TestRenderWidget> render_widget_;
54 scoped_ptr<RenderWidgetCompositor> render_widget_compositor_;
57 DISALLOW_COPY_AND_ASSIGN(RenderWidgetCompositorTest);
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));
68 EXPECT_CALL(render_widget_->mock_webwidget_,
70 Field(&blink::WebBeginFrameArgs::lastFrameTimeMonotonic, 1),
71 Field(&blink::WebBeginFrameArgs::deadline, 2),
72 Field(&blink::WebBeginFrameArgs::interval, 3))));
74 render_widget_compositor_->BeginMainFrame(args);
77 } // namespace content