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

Side by Side Diff: third_party/WebKit/Source/core/dom/FrameRequestCallbackCollection.cpp

Issue 1857713004: DevTools: simplify the async instrumentation harness. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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
1 // Copyright 2015 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "core/dom/FrameRequestCallbackCollection.h" 5 #include "core/dom/FrameRequestCallbackCollection.h"
6 6
7 #include "core/dom/FrameRequestCallback.h" 7 #include "core/dom/FrameRequestCallback.h"
8 #include "core/inspector/InspectorInstrumentation.h" 8 #include "core/inspector/InspectorInstrumentation.h"
9 #include "core/inspector/InspectorTraceEvents.h" 9 #include "core/inspector/InspectorTraceEvents.h"
10 10
11 namespace blink { 11 namespace blink {
12 12
13 FrameRequestCallbackCollection::FrameRequestCallbackCollection(ExecutionContext* context) 13 FrameRequestCallbackCollection::FrameRequestCallbackCollection(ExecutionContext* context)
14 : m_context(context) 14 : m_context(context)
15 { 15 {
16 } 16 }
17 17
18 FrameRequestCallbackCollection::CallbackId FrameRequestCallbackCollection::regis terCallback(FrameRequestCallback* callback) 18 FrameRequestCallbackCollection::CallbackId FrameRequestCallbackCollection::regis terCallback(FrameRequestCallback* callback)
19 { 19 {
20 FrameRequestCallbackCollection::CallbackId id = ++m_nextCallbackId; 20 FrameRequestCallbackCollection::CallbackId id = ++m_nextCallbackId;
21 callback->m_cancelled = false; 21 callback->m_cancelled = false;
22 callback->m_id = id; 22 callback->m_id = id;
23 m_callbacks.append(callback); 23 m_callbacks.append(callback);
24 24
25 TRACE_EVENT_INSTANT1("devtools.timeline", "RequestAnimationFrame", TRACE_EVE NT_SCOPE_THREAD, "data", InspectorAnimationFrameEvent::data(m_context, id)); 25 TRACE_EVENT_INSTANT1("devtools.timeline", "RequestAnimationFrame", TRACE_EVE NT_SCOPE_THREAD, "data", InspectorAnimationFrameEvent::data(m_context, id));
26 InspectorInstrumentation::didRequestAnimationFrame(m_context, id); 26 InspectorInstrumentation::didRequestAnimationFrame(m_context, id);
27 InspectorInstrumentation::asyncTaskScheduled(m_context, "requestAnimationFra me", callback);
27 28
28 return id; 29 return id;
29 } 30 }
30 31
31 void FrameRequestCallbackCollection::cancelCallback(CallbackId id) 32 void FrameRequestCallbackCollection::cancelCallback(CallbackId id)
32 { 33 {
33 for (size_t i = 0; i < m_callbacks.size(); ++i) { 34 for (size_t i = 0; i < m_callbacks.size(); ++i) {
34 if (m_callbacks[i]->m_id == id) { 35 if (m_callbacks[i]->m_id == id) {
36 InspectorInstrumentation::asyncTaskCanceled(m_context, m_callbacks[i ]);
35 m_callbacks.remove(i); 37 m_callbacks.remove(i);
36 TRACE_EVENT_INSTANT1("devtools.timeline", "CancelAnimationFrame", TR ACE_EVENT_SCOPE_THREAD, "data", InspectorAnimationFrameEvent::data(m_context, id )); 38 TRACE_EVENT_INSTANT1("devtools.timeline", "CancelAnimationFrame", TR ACE_EVENT_SCOPE_THREAD, "data", InspectorAnimationFrameEvent::data(m_context, id ));
37 InspectorInstrumentation::didCancelAnimationFrame(m_context, id); 39 InspectorInstrumentation::didCancelAnimationFrame(m_context, id);
38 return; 40 return;
39 } 41 }
40 } 42 }
41 for (size_t i = 0; i < m_callbacksToInvoke.size(); ++i) { 43 for (size_t i = 0; i < m_callbacksToInvoke.size(); ++i) {
42 if (m_callbacksToInvoke[i]->m_id == id) { 44 if (m_callbacksToInvoke[i]->m_id == id) {
45 InspectorInstrumentation::asyncTaskCanceled(m_context, m_callbacksTo Invoke[i]);
43 TRACE_EVENT_INSTANT1("devtools.timeline", "CancelAnimationFrame", TR ACE_EVENT_SCOPE_THREAD, "data", InspectorAnimationFrameEvent::data(m_context, id )); 46 TRACE_EVENT_INSTANT1("devtools.timeline", "CancelAnimationFrame", TR ACE_EVENT_SCOPE_THREAD, "data", InspectorAnimationFrameEvent::data(m_context, id ));
44 InspectorInstrumentation::didCancelAnimationFrame(m_context, id); 47 InspectorInstrumentation::didCancelAnimationFrame(m_context, id);
45 m_callbacksToInvoke[i]->m_cancelled = true; 48 m_callbacksToInvoke[i]->m_cancelled = true;
46 // will be removed at the end of executeCallbacks() 49 // will be removed at the end of executeCallbacks()
47 return; 50 return;
48 } 51 }
49 } 52 }
50 } 53 }
51 54
52 void FrameRequestCallbackCollection::executeCallbacks(double highResNowMs, doubl e highResNowMsLegacy) 55 void FrameRequestCallbackCollection::executeCallbacks(double highResNowMs, doubl e highResNowMsLegacy)
53 { 56 {
54 // First, generate a list of callbacks to consider. Callbacks registered fr om this point 57 // First, generate a list of callbacks to consider. Callbacks registered fr om this point
55 // on are considered only for the "next" frame, not this one. 58 // on are considered only for the "next" frame, not this one.
56 ASSERT(m_callbacksToInvoke.isEmpty()); 59 ASSERT(m_callbacksToInvoke.isEmpty());
57 m_callbacksToInvoke.swap(m_callbacks); 60 m_callbacksToInvoke.swap(m_callbacks);
58 61
59 for (size_t i = 0; i < m_callbacksToInvoke.size(); ++i) { 62 for (size_t i = 0; i < m_callbacksToInvoke.size(); ++i) {
60 FrameRequestCallback* callback = m_callbacksToInvoke[i].get(); 63 FrameRequestCallback* callback = m_callbacksToInvoke[i].get();
61 if (!callback->m_cancelled) { 64 if (!callback->m_cancelled) {
62 TRACE_EVENT1("devtools.timeline", "FireAnimationFrame", "data", Insp ectorAnimationFrameEvent::data(m_context, callback->m_id)); 65 TRACE_EVENT1("devtools.timeline", "FireAnimationFrame", "data", Insp ectorAnimationFrameEvent::data(m_context, callback->m_id));
63 InspectorInstrumentationCookie cookie = InspectorInstrumentation::wi llFireAnimationFrame(m_context, callback->m_id); 66 InspectorInstrumentation::AsyncTask asyncTask(m_context, callback);
64 if (callback->m_useLegacyTimeBase) 67 if (callback->m_useLegacyTimeBase)
65 callback->handleEvent(highResNowMsLegacy); 68 callback->handleEvent(highResNowMsLegacy);
66 else 69 else
67 callback->handleEvent(highResNowMs); 70 callback->handleEvent(highResNowMs);
68 InspectorInstrumentation::didFireAnimationFrame(cookie);
69 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "UpdateCounters", TRACE_EVENT_SCOPE_THREAD, "data", InspectorUpdateCountersEven t::data()); 71 TRACE_EVENT_INSTANT1(TRACE_DISABLED_BY_DEFAULT("devtools.timeline"), "UpdateCounters", TRACE_EVENT_SCOPE_THREAD, "data", InspectorUpdateCountersEven t::data());
70 } 72 }
71 } 73 }
72 74
73 m_callbacksToInvoke.clear(); 75 m_callbacksToInvoke.clear();
74 } 76 }
75 77
76 DEFINE_TRACE(FrameRequestCallbackCollection) 78 DEFINE_TRACE(FrameRequestCallbackCollection)
77 { 79 {
78 visitor->trace(m_callbacks); 80 visitor->trace(m_callbacks);
79 visitor->trace(m_callbacksToInvoke); 81 visitor->trace(m_callbacksToInvoke);
80 visitor->trace(m_context); 82 visitor->trace(m_context);
81 } 83 }
82 84
83 } // namespace blink 85 } // namespace blink
OLDNEW
« no previous file with comments | « third_party/WebKit/Source/core/core.gypi ('k') | third_party/WebKit/Source/core/dom/MainThreadTaskRunner.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698