Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(343)

Side by Side Diff: content/browser/compositor/delegated_frame_host_unittest.cc

Issue 1000503002: Add BeginFrameObserverProxy (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2015 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 "base/basictypes.h"
6 #include "base/compiler_specific.h"
7 #include "base/memory/scoped_ptr.h"
8 #include "base/test/test_simple_task_runner.h"
9 #include "cc/output/begin_frame_args.h"
10 #include "cc/test/begin_frame_args_test.h"
11 #include "content/browser/compositor/delegated_frame_host.h"
12 #include "content/browser/compositor/resize_lock.h"
13 #include "content/browser/compositor/test/no_transport_image_transport_factory.h "
14 #include "testing/gtest/include/gtest/gtest.h"
15 #include "ui/compositor/compositor.h"
16 #include "ui/compositor/test/context_factories_for_test.h"
17
18 namespace content {
19 namespace {
20
21 class TestDelegatedFrameHostClient : public DelegatedFrameHostClient {
22 public:
23 TestDelegatedFrameHostClient() : begin_frame_sent_(false) {}
24 ~TestDelegatedFrameHostClient() {}
25
26 // DelegatedFrameHostClient:
27 ui::Layer* DelegatedFrameHostGetLayer() const override { return nullptr; }
28 bool DelegatedFrameHostIsVisible() const override { return true; }
29 gfx::Size DelegatedFrameHostDesiredSizeInDIP() const override {
30 return gfx::Size();
31 }
32 bool DelegatedFrameCanCreateResizeLock() const override { return true; }
33 scoped_ptr<ResizeLock> DelegatedFrameHostCreateResizeLock(
34 bool defer_compositor_lock) override { return nullptr; }
35 void DelegatedFrameHostResizeLockWasReleased() override {}
36 void DelegatedFrameHostSendCompositorSwapAck(
37 int output_surface_id,
38 const cc::CompositorFrameAck& ack) override {}
39 void DelegatedFrameHostSendReclaimCompositorResources(
40 int output_surface_id,
41 const cc::CompositorFrameAck& ack) override {}
42 void DelegatedFrameHostOnLostCompositorResources() override {}
43 void DelegatedFrameHostUpdateVSyncParameters(
44 const base::TimeTicks& timebase,
45 const base::TimeDelta& interval) override {}
46 void DelegatedFrameHostSendBeginFrame(
47 const cc::BeginFrameArgs& args) override {
48 last_begin_frame_args_ = args;
49 begin_frame_sent_ = true;
50 }
51
52 bool begin_frame_sent() { return begin_frame_sent_; }
53 cc::BeginFrameArgs last_begin_frame_args() { return last_begin_frame_args_; }
54
55 private:
56 bool begin_frame_sent_;
57 cc::BeginFrameArgs last_begin_frame_args_;
58 };
59
60 class DelegatedFrameHostTest : public testing::Test {
61 public:
62 DelegatedFrameHostTest() {}
63 ~DelegatedFrameHostTest() override {}
64
65 void SetUp() override {
66 bool enable_pixel_output = false;
67 ui::ContextFactory* context_factory =
68 ui::InitializeContextFactoryForTests(enable_pixel_output);
69 ImageTransportFactory::InitializeForUnitTests(
70 scoped_ptr<ImageTransportFactory>(
71 new NoTransportImageTransportFactory));
72 compositor_task_runner_ = new base::TestSimpleTaskRunner();
73 compositor_.reset(new ui::Compositor(gfx::kNullAcceleratedWidget,
74 context_factory,
75 compositor_task_runner_.get()));
76 }
77
78 void TearDown() override {
79 compositor_.reset();
no sievers 2015/03/13 20:30:54 ImageTransportFactory::Terminate(); Esp. so it do
simonhong 2015/03/17 16:11:34 Done.
80 ui::TerminateContextFactoryForTests();
81 }
82
83 ui::Compositor* compositor() { return compositor_.get(); }
84
85 private:
86 scoped_refptr<base::SingleThreadTaskRunner> compositor_task_runner_;
87 scoped_ptr<ui::Compositor> compositor_;
88 scoped_ptr<DelegatedFrameHost> delegated_frame_host_;
89 };
90
91 TEST_F(DelegatedFrameHostTest, BeginFrameScheduling) {
92 bool begin_frame_scheduling_enabled = true;
93 TestDelegatedFrameHostClient client;
94 DelegatedFrameHost delegated_frame_host(&client,
95 begin_frame_scheduling_enabled);
96 delegated_frame_host.SetCompositor(compositor());
97 delegated_frame_host.OnSetNeedsBeginFrames(true);
98 EXPECT_FALSE(client.begin_frame_sent());
99
100 cc::BeginFrameArgs args =
101 cc::CreateBeginFrameArgsForTesting(BEGINFRAME_FROM_HERE,
102 base::TimeTicks::FromInternalValue(33));
103 compositor()->SendBeginFramesToChildren(args);
104 EXPECT_TRUE(client.begin_frame_sent());
105 EXPECT_EQ(args.frame_time, client.last_begin_frame_args().frame_time);
106
107 delegated_frame_host.ResetCompositor();
108 }
109
110 } // namespace
111 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698