1// Copyright 2013 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 "cc/output/begin_frame_args.h"
6
7namespace cc {
8
9BeginFrameArgs::BeginFrameArgs()
10  : frame_time(base::TimeTicks()),
11    deadline(base::TimeTicks()),
12    interval(base::TimeDelta::FromMicroseconds(-1)) {
13}
14
15BeginFrameArgs::BeginFrameArgs(base::TimeTicks frame_time,
16                               base::TimeTicks deadline,
17                               base::TimeDelta interval)
18  : frame_time(frame_time),
19    deadline(deadline),
20    interval(interval)
21{}
22
23BeginFrameArgs BeginFrameArgs::Create(base::TimeTicks frame_time,
24                                      base::TimeTicks deadline,
25                                      base::TimeDelta interval) {
26  return BeginFrameArgs(frame_time, deadline, interval);
27}
28
29BeginFrameArgs BeginFrameArgs::CreateForSynchronousCompositor() {
30  // For WebView/SynchronousCompositor, we always want to draw immediately,
31  // so we set the deadline to 0 and guess that the interval is 16 milliseconds.
32  return BeginFrameArgs(base::TimeTicks::Now(),
33                        base::TimeTicks(),
34                        DefaultInterval());
35}
36
37BeginFrameArgs BeginFrameArgs::CreateForTesting() {
38  base::TimeTicks now = base::TimeTicks::Now();
39  return BeginFrameArgs(now,
40                        now + (DefaultInterval() / 2),
41                        DefaultInterval());
42}
43
44BeginFrameArgs BeginFrameArgs::CreateExpiredForTesting() {
45  base::TimeTicks now = base::TimeTicks::Now();
46  return BeginFrameArgs(now,
47                        now - DefaultInterval(),
48                        DefaultInterval());
49}
50
51base::TimeDelta BeginFrameArgs::DefaultDeadlineAdjustment() {
52  // Using a large deadline adjustment will effectively revert BeginFrame
53  // scheduling to the hard vsync scheduling we used to have.
54  return base::TimeDelta::FromSeconds(-1);
55}
56
57base::TimeDelta BeginFrameArgs::DefaultInterval() {
58  return base::TimeDelta::FromMicroseconds(16666);
59}
60
61base::TimeDelta BeginFrameArgs::DefaultRetroactiveBeginFramePeriod() {
62  return base::TimeDelta::FromMicroseconds(4444);
63}
64
65
66}  // namespace cc
67