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

Side by Side Diff: cc/output/promise_list.cc

Issue 1126963006: Move VISUAL_STATE promise to activation (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Current state (presubmit warnings, cc_unittests tests failing) Created 5 years, 7 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 "cc/output/promise_list.h"
6
7 namespace cc {
8
9 PromiseList::PromiseList() : promises_() {
10 }
11
12 PromiseList::~PromiseList() {
13 promises_.clear();
14 }
15
16 void PromiseList::QueuePromise(scoped_ptr<Promise> promise) {
17 DCHECK(promise);
18 promises_.push_back(promise.Pass());
19 }
20
21 void PromiseList::PassPromises(PromiseList* other) {
22 other->TakePromises(this);
23 }
24
25 void PromiseList::TakePromises(PromiseList* other) {
26 promises_.insert_and_take(promises_.end(), &other->promises_);
27 other->promises_.clear();
28 }
29
30 namespace {
31
32 template <typename functor>
33 void ResolvePromises(ScopedPtrVector<Promise>& promises, functor f) {
34 promises.erase(promises.remove_if(f), promises.end());
35 }
36
37 }
38
39 void PromiseList::OnDidSwap(CompositorFrameMetadata* metadata) {
40 ResolvePromises(promises_,
41 [metadata](Promise* promise) -> bool {
42 return promise->OnDidSwap(metadata);
43 });
44 }
45
46 void PromiseList::OnDidNotSwap(Promise::DidNotSwap::Reason reason) {
47 ResolvePromises(promises_,
48 [reason](Promise* promise) -> bool {
49 return promise->OnDidNotSwap(reason);
50 });
51 }
52
53 void PromiseList::OnDidActivate(CompositorFrameMetadata* metadata) {
54 ResolvePromises(promises_,
55 [metadata](Promise* promise) -> bool {
56 return promise->OnDidActivate(metadata);
57 });
58 }
59
60 void PromiseList::OnDidNotActivate(Promise::DidNotActivate::Reason reason) {
61 ResolvePromises(promises_,
62 [reason](Promise* promise) -> bool {
63 return promise->OnDidNotActivate(reason);
64 });
65 }
66
67 void PromiseList::GetTraceIds(std::vector<int64>* trace_ids) const {
68 trace_ids->clear();
69 std::transform(
70 promises_.begin(), promises_.end(), std::back_inserter(*trace_ids),
71 [](const Promise* promise) -> int64 { return promise->TraceId(); });
72 }
73 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698