Index: cc/base/latency_info_swap_promise.cc |
diff --git a/cc/base/latency_info_swap_promise.cc b/cc/base/latency_info_swap_promise.cc |
new file mode 100644 |
index 0000000000000000000000000000000000000000..41c0e997d1176fffd55d9d8f62cae478b2b74595 |
--- /dev/null |
+++ b/cc/base/latency_info_swap_promise.cc |
@@ -0,0 +1,50 @@ |
+// Copyright 2013 The Chromium Authors. All rights reserved. |
+// Use of this source code is governed by a BSD-style license that can be |
+// found in the LICENSE file. |
+ |
+#include "cc/base/latency_info_swap_promise.h" |
+ |
+#include "base/logging.h" |
+ |
+namespace { |
+ ui::LatencyComponentType DidNotSwapReasonToLatencyComponentType( |
+ cc::SwapPromise::DidNotSwapReason reason) { |
+ switch (reason) { |
+ case cc::SwapPromise::DID_NOT_SWAP_UNKNOWN: |
+ case cc::SwapPromise::SWAP_FAILS: |
+ return ui::INPUT_EVENT_LATENCY_TERMINATED_SWAP_FAILED_COMPONENT; |
+ case cc::SwapPromise::COMMIT_FAILS: |
+ return ui::INPUT_EVENT_LATENCY_TERMINATED_COMMIT_FAILED_COMPONENT; |
+ case cc::SwapPromise::SWAP_PROMISE_LIST_OVERFLOW: |
+ return ui::LATENCY_INFO_LIST_TERMINATED_OVERFLOW_COMPONENT; |
+ } |
+ NOTREACHED() << "Unhandled DidNotSwapReason."; |
+ return ui::INPUT_EVENT_LATENCY_TERMINATED_SWAP_FAILED_COMPONENT; |
+ } |
+} // namespace |
+ |
+namespace cc { |
+ |
+LatencyInfoSwapPromise::LatencyInfoSwapPromise(const ui::LatencyInfo& latency) |
+ : latency_(latency) { |
+} |
+ |
+LatencyInfoSwapPromise::~LatencyInfoSwapPromise() { |
+} |
+ |
+void LatencyInfoSwapPromise::DidSwap(CompositorFrameMetadata* metadata) { |
+ DCHECK(!latency_.terminated); |
+ // TODO(miletus): Append the |latency_| into metadata's LatencyInfo list |
+ // once we remove LatencyInfo merge in GPU side. |
+ metadata->latency_info.MergeWith(latency_); |
+} |
+ |
+void LatencyInfoSwapPromise::DidNotSwap(DidNotSwapReason reason) { |
+ latency_.AddLatencyNumber(DidNotSwapReasonToLatencyComponentType(reason), |
+ 0, 0); |
+ // TODO(miletus): Turn this back on once per-event LatencyInfo tracking |
+ // is enabled in GPU side. |
+ // DCHECK(latency_.terminated); |
+} |
+ |
+} // namespace cc |