OLD | NEW |
---|---|
(Empty) | |
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. | |
4 | |
5 #include "config.h" | |
6 #include "core/html/StableState.h" | |
7 | |
8 #include "wtf/HashSet.h" | |
9 | |
10 namespace WebCore { | |
11 | |
12 typedef HashSet<StableState::Awaiter*> StableStateAwaiters; | |
13 | |
14 static StableStateAwaiters& stableStateAwaiters() | |
15 { | |
16 DEFINE_STATIC_LOCAL(StableStateAwaiters, stableStateAwaiters, ()); | |
acolwell GONE FROM CHROMIUM
2014/02/07 19:09:31
Do we really want this process global? Shouldn't t
philipj_slow
2014/02/09 17:10:17
In the spec these concepts are not scoped per docu
| |
17 return stableStateAwaiters; | |
18 } | |
19 | |
20 StableState::Awaiter::~Awaiter() | |
21 { | |
22 stableStateAwaiters().remove(this); | |
23 } | |
24 | |
25 void StableState::await(Awaiter& awaiter) | |
26 { | |
27 stableStateAwaiters().add(&awaiter); | |
acolwell GONE FROM CHROMIUM
2014/02/07 19:09:31
nit: I wonder if we should keep a bool that keeps
philipj_slow
2014/02/09 17:10:17
Done.
| |
28 } | |
29 | |
30 void StableState::provide() | |
31 { | |
32 if (!stableStateAwaiters().isEmpty()) { | |
acolwell GONE FROM CHROMIUM
2014/02/07 19:09:31
nit: Reverse condition and early return.
philipj_slow
2014/02/09 17:10:17
Done.
| |
33 StableStateAwaiters awaiters; | |
34 awaiters.swap(stableStateAwaiters()); | |
35 for (StableStateAwaiters::iterator it = awaiters.begin(); it != awaiters .end(); ++it) | |
36 (*it)->didAwaitStableState(); | |
37 ASSERT(stableStateAwaiters().isEmpty()); | |
38 } | |
39 } | |
40 | |
41 } // namespace WebCore | |
OLD | NEW |