Diff
Modified: trunk/Source/_javascript_Core/ChangeLog (239396 => 239397)
--- trunk/Source/_javascript_Core/ChangeLog 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/_javascript_Core/ChangeLog 2018-12-19 23:17:31 UTC (rev 239397)
@@ -1,3 +1,17 @@
+2018-12-18 Simon Fraser <[email protected]>
+
+ Web Inspector: Timelines: correctly label Intersection Observer callbacks
+ https://bugs.webkit.org/show_bug.cgi?id=192669
+ <rdar://problem/46702490>
+
+ Reviewed by Joseph Pecoraro.
+
+ Add InspectorInstrumentation::willFireObserverCallback() and use it to wrap calls
+ to Intersection Observer, Performance Observer and Mutation Observer callbacks so
+ that they get correctly labeled in the Inspector timeline.
+
+ * inspector/protocol/Timeline.json:
+
2018-12-18 Mark Lam <[email protected]>
JSPropertyNameEnumerator should cache the iterated object's structure only after getting its property names.
Modified: trunk/Source/_javascript_Core/inspector/protocol/Timeline.json (239396 => 239397)
--- trunk/Source/_javascript_Core/inspector/protocol/Timeline.json 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/_javascript_Core/inspector/protocol/Timeline.json 2018-12-19 23:17:31 UTC (rev 239397)
@@ -28,7 +28,8 @@
"ConsoleProfile",
"RequestAnimationFrame",
"CancelAnimationFrame",
- "FireAnimationFrame"
+ "FireAnimationFrame",
+ "ObserverCallback"
]
},
{
Modified: trunk/Source/WebCore/ChangeLog (239396 => 239397)
--- trunk/Source/WebCore/ChangeLog 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/ChangeLog 2018-12-19 23:17:31 UTC (rev 239397)
@@ -1,3 +1,37 @@
+2018-12-18 Simon Fraser <[email protected]>
+
+ Web Inspector: Timelines: correctly label Intersection Observer callbacks
+ https://bugs.webkit.org/show_bug.cgi?id=192669
+ <rdar://problem/46702490>
+
+ Reviewed by Joseph Pecoraro.
+
+ Add InspectorInstrumentation::willFireObserverCallback() and use it to wrap calls
+ to Intersection Observer, Performance Observer and Mutation Observer callbacks so
+ that they get correctly labeled in the Inspector timeline.
+
+ * dom/MutationObserver.cpp:
+ (WebCore::MutationObserver::deliver):
+ * en.lproj/Localizable.strings:
+ * inspector/InspectorInstrumentation.cpp:
+ (WebCore::InspectorInstrumentation::willFireObserverCallbackImpl):
+ (WebCore::InspectorInstrumentation::didFireObserverCallbackImpl):
+ * inspector/InspectorInstrumentation.h:
+ (WebCore::InspectorInstrumentation::willFireObserverCallback):
+ (WebCore::InspectorInstrumentation::didFireObserverCallback):
+ * inspector/TimelineRecordFactory.cpp:
+ (WebCore::TimelineRecordFactory::createObserverCallbackData):
+ * inspector/TimelineRecordFactory.h:
+ * inspector/agents/InspectorTimelineAgent.cpp:
+ (WebCore::InspectorTimelineAgent::willFireObserverCallback):
+ (WebCore::InspectorTimelineAgent::didFireObserverCallback):
+ (WebCore::toProtocol):
+ * inspector/agents/InspectorTimelineAgent.h:
+ * page/IntersectionObserver.cpp:
+ (WebCore::IntersectionObserver::notify):
+ * page/PerformanceObserver.cpp:
+ (WebCore::PerformanceObserver::deliver):
+
2018-12-19 Claudio Saavedra <[email protected]>
ContentExtensions: DFANode.cpp:66:44: error: narrowing conversion of '-1' from 'int' to 'char' inside { }
Modified: trunk/Source/WebCore/dom/MutationObserver.cpp (239396 => 239397)
--- trunk/Source/WebCore/dom/MutationObserver.cpp 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/dom/MutationObserver.cpp 2018-12-19 23:17:31 UTC (rev 239397)
@@ -36,6 +36,7 @@
#include "Document.h"
#include "GCReachableRef.h"
#include "HTMLSlotElement.h"
+#include "InspectorInstrumentation.h"
#include "Microtasks.h"
#include "MutationCallback.h"
#include "MutationObserverRegistration.h"
@@ -244,8 +245,15 @@
records.swap(m_records);
// FIXME: Keep mutation observer callback as long as its observed nodes are alive. See https://webkit.org/b/179224.
- if (m_callback->hasCallback())
+ if (m_callback->hasCallback()) {
+ auto* context = m_callback->scriptExecutionContext();
+ if (!context)
+ return;
+
+ InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireObserverCallback(*context, "MutationObserver"_s);
m_callback->handleEvent(*this, records, *this);
+ InspectorInstrumentation::didFireObserverCallback(cookie);
+ }
}
void MutationObserver::notifyMutationObservers()
Modified: trunk/Source/WebCore/en.lproj/Localizable.strings (239396 => 239397)
--- trunk/Source/WebCore/en.lproj/Localizable.strings 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/en.lproj/Localizable.strings 2018-12-19 23:17:31 UTC (rev 239397)
@@ -646,6 +646,9 @@
/* Show Media Controls context menu item */
"Show Controls" = "Show Controls";
+/* Action from safe browsing warning */
+"Show Details" = "Show Details";
+
/* Show fonts context menu item */
"Show Fonts" = "Show Fonts";
@@ -655,9 +658,6 @@
/* menu item title */
"Show Substitutions" = "Show Substitutions";
-/* Action from safe browsing warning */
-"Show Details" = "Show Details";
-
/* Title of the context menu item to show when PDFPlugin was used instead of a blocked plugin */
"Show in blocked plug-in" = "Show in blocked plug-in";
Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp (239396 => 239397)
--- trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.cpp 2018-12-19 23:17:31 UTC (rev 239397)
@@ -1099,6 +1099,22 @@
timelineAgent->didFireAnimationFrame();
}
+InspectorInstrumentationCookie InspectorInstrumentation::willFireObserverCallbackImpl(InstrumentingAgents& instrumentingAgents, const String& callbackType, ScriptExecutionContext& context)
+{
+ int timelineAgentId = 0;
+ if (InspectorTimelineAgent* timelineAgent = instrumentingAgents.inspectorTimelineAgent()) {
+ timelineAgent->willFireObserverCallback(callbackType, frameForScriptExecutionContext(&context));
+ timelineAgentId = timelineAgent->id();
+ }
+ return InspectorInstrumentationCookie(instrumentingAgents, timelineAgentId);
+}
+
+void InspectorInstrumentation::didFireObserverCallbackImpl(const InspectorInstrumentationCookie& cookie)
+{
+ if (InspectorTimelineAgent* timelineAgent = retrieveTimelineAgent(cookie))
+ timelineAgent->didFireObserverCallback();
+}
+
void InspectorInstrumentation::registerInstrumentingAgents(InstrumentingAgents& instrumentingAgents)
{
if (!s_instrumentingAgentsSet)
Modified: trunk/Source/WebCore/inspector/InspectorInstrumentation.h (239396 => 239397)
--- trunk/Source/WebCore/inspector/InspectorInstrumentation.h 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/inspector/InspectorInstrumentation.h 2018-12-19 23:17:31 UTC (rev 239397)
@@ -235,6 +235,9 @@
static InspectorInstrumentationCookie willFireAnimationFrame(Document&, int callbackId);
static void didFireAnimationFrame(const InspectorInstrumentationCookie&);
+ static InspectorInstrumentationCookie willFireObserverCallback(ScriptExecutionContext&, const String& callbackType);
+ static void didFireObserverCallback(const InspectorInstrumentationCookie&);
+
static void didOpenDatabase(ScriptExecutionContext*, RefPtr<Database>&&, const String& domain, const String& name, const String& version);
static void didDispatchDOMStorageEvent(Page&, const String& key, const String& oldValue, const String& newValue, StorageType, SecurityOrigin*);
@@ -407,6 +410,9 @@
static InspectorInstrumentationCookie willFireAnimationFrameImpl(InstrumentingAgents&, int callbackId, Document&);
static void didFireAnimationFrameImpl(const InspectorInstrumentationCookie&);
+ static InspectorInstrumentationCookie willFireObserverCallbackImpl(InstrumentingAgents&, const String&, ScriptExecutionContext&);
+ static void didFireObserverCallbackImpl(const InspectorInstrumentationCookie&);
+
static void didOpenDatabaseImpl(InstrumentingAgents&, RefPtr<Database>&&, const String& domain, const String& name, const String& version);
static void didDispatchDOMStorageEventImpl(InstrumentingAgents&, const String& key, const String& oldValue, const String& newValue, StorageType, SecurityOrigin*);
@@ -1410,6 +1416,7 @@
inline InspectorInstrumentationCookie InspectorInstrumentation::willFireAnimationFrame(Document& document, int callbackId)
{
+ FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie());
if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForDocument(document))
return willFireAnimationFrameImpl(*instrumentingAgents, callbackId, document);
return InspectorInstrumentationCookie();
@@ -1422,6 +1429,21 @@
didFireAnimationFrameImpl(cookie);
}
+inline InspectorInstrumentationCookie InspectorInstrumentation::willFireObserverCallback(ScriptExecutionContext& context, const String& callbackType)
+{
+ FAST_RETURN_IF_NO_FRONTENDS(InspectorInstrumentationCookie());
+ if (InstrumentingAgents* instrumentingAgents = instrumentingAgentsForContext(context))
+ return willFireObserverCallbackImpl(*instrumentingAgents, callbackType, context);
+ return InspectorInstrumentationCookie();
+}
+
+inline void InspectorInstrumentation::didFireObserverCallback(const InspectorInstrumentationCookie& cookie)
+{
+ FAST_RETURN_IF_NO_FRONTENDS(void());
+ if (cookie.isValid())
+ didFireObserverCallbackImpl(cookie);
+}
+
inline void InspectorInstrumentation::layerTreeDidChange(Page* page)
{
FAST_RETURN_IF_NO_FRONTENDS(void());
Modified: trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp (239396 => 239397)
--- trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/inspector/TimelineRecordFactory.cpp 2018-12-19 23:17:31 UTC (rev 239397)
@@ -125,6 +125,13 @@
return data;
}
+Ref<JSON::Object> TimelineRecordFactory::createObserverCallbackData(const String& callbackType)
+{
+ Ref<JSON::Object> data = ""
+ data->setString("type"_s, callbackType);
+ return data;
+}
+
static Ref<JSON::Array> createQuad(const FloatQuad& quad)
{
Ref<JSON::Array> array = JSON::Array::create();
Modified: trunk/Source/WebCore/inspector/TimelineRecordFactory.h (239396 => 239397)
--- trunk/Source/WebCore/inspector/TimelineRecordFactory.h 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/inspector/TimelineRecordFactory.h 2018-12-19 23:17:31 UTC (rev 239397)
@@ -58,6 +58,7 @@
static Ref<JSON::Object> createEvaluateScriptData(const String&, double lineNumber);
static Ref<JSON::Object> createTimeStampData(const String&);
static Ref<JSON::Object> createAnimationFrameData(int callbackId);
+ static Ref<JSON::Object> createObserverCallbackData(const String& callbackType);
static Ref<JSON::Object> createPaintData(const FloatQuad&);
static void appendLayoutRoot(JSON::Object* data, const FloatQuad&);
Modified: trunk/Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp (239396 => 239397)
--- trunk/Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/inspector/agents/InspectorTimelineAgent.cpp 2018-12-19 23:17:31 UTC (rev 239397)
@@ -597,6 +597,16 @@
didCompleteCurrentRecord(TimelineRecordType::FireAnimationFrame);
}
+void InspectorTimelineAgent::willFireObserverCallback(const String& callbackType, Frame* frame)
+{
+ pushCurrentRecord(TimelineRecordFactory::createObserverCallbackData(callbackType), TimelineRecordType::ObserverCallback, false, frame);
+}
+
+void InspectorTimelineAgent::didFireObserverCallback()
+{
+ didCompleteCurrentRecord(TimelineRecordType::ObserverCallback);
+}
+
// ScriptDebugListener
void InspectorTimelineAgent::breakpointActionProbe(JSC::ExecState& state, const Inspector::ScriptBreakpointAction& action, unsigned /*batchId*/, unsigned sampleId, JSC::JSValue)
@@ -654,6 +664,9 @@
return Inspector::Protocol::Timeline::EventType::CancelAnimationFrame;
case TimelineRecordType::FireAnimationFrame:
return Inspector::Protocol::Timeline::EventType::FireAnimationFrame;
+
+ case TimelineRecordType::ObserverCallback:
+ return Inspector::Protocol::Timeline::EventType::ObserverCallback;
}
return Inspector::Protocol::Timeline::EventType::TimeStamp;
Modified: trunk/Source/WebCore/inspector/agents/InspectorTimelineAgent.h (239396 => 239397)
--- trunk/Source/WebCore/inspector/agents/InspectorTimelineAgent.h 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/inspector/agents/InspectorTimelineAgent.h 2018-12-19 23:17:31 UTC (rev 239397)
@@ -83,6 +83,8 @@
RequestAnimationFrame,
CancelAnimationFrame,
FireAnimationFrame,
+
+ ObserverCallback,
};
class InspectorTimelineAgent final
@@ -137,6 +139,8 @@
void didCancelAnimationFrame(int callbackId, Frame*);
void willFireAnimationFrame(int callbackId, Frame*);
void didFireAnimationFrame();
+ void willFireObserverCallback(const String& callbackType, Frame*);
+ void didFireObserverCallback();
void time(Frame&, const String&);
void timeEnd(Frame&, const String&);
void mainFrameStartedLoading();
Modified: trunk/Source/WebCore/page/IntersectionObserver.cpp (239396 => 239397)
--- trunk/Source/WebCore/page/IntersectionObserver.cpp 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/page/IntersectionObserver.cpp 2018-12-19 23:17:31 UTC (rev 239397)
@@ -32,6 +32,7 @@
#include "CSSPropertyParserHelpers.h"
#include "CSSTokenizer.h"
#include "Element.h"
+#include "InspectorInstrumentation.h"
#include "IntersectionObserverCallback.h"
#include "IntersectionObserverEntry.h"
#include "Performance.h"
@@ -256,8 +257,16 @@
return;
}
+ auto* context = m_callback->scriptExecutionContext();
+ if (!context)
+ return;
+
+ InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireObserverCallback(*context, "IntersectionObserver"_s);
+
auto takenRecords = takeRecords();
m_callback->handleEvent(WTFMove(takenRecords.records), *this);
+
+ InspectorInstrumentation::didFireObserverCallback(cookie);
}
bool IntersectionObserver::hasPendingActivity() const
Modified: trunk/Source/WebCore/page/PerformanceObserver.cpp (239396 => 239397)
--- trunk/Source/WebCore/page/PerformanceObserver.cpp 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebCore/page/PerformanceObserver.cpp 2018-12-19 23:17:31 UTC (rev 239397)
@@ -28,6 +28,7 @@
#include "DOMWindow.h"
#include "Document.h"
+#include "InspectorInstrumentation.h"
#include "Performance.h"
#include "PerformanceObserverEntryList.h"
#include "WorkerGlobalScope.h"
@@ -100,9 +101,16 @@
if (m_entriesToDeliver.isEmpty())
return;
+ auto* context = m_callback->scriptExecutionContext();
+ if (!context)
+ return;
+
Vector<RefPtr<PerformanceEntry>> entries = WTFMove(m_entriesToDeliver);
auto list = PerformanceObserverEntryList::create(WTFMove(entries));
+
+ InspectorInstrumentationCookie cookie = InspectorInstrumentation::willFireObserverCallback(*context, "PerformanceObserver"_s);
m_callback->handleEvent(list, *this);
+ InspectorInstrumentation::didFireObserverCallback(cookie);
}
} // namespace WebCore
Modified: trunk/Source/WebInspectorUI/ChangeLog (239396 => 239397)
--- trunk/Source/WebInspectorUI/ChangeLog 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebInspectorUI/ChangeLog 2018-12-19 23:17:31 UTC (rev 239397)
@@ -1,3 +1,23 @@
+2018-12-18 Simon Fraser <[email protected]>
+
+ Web Inspector: Timelines: correctly label Intersection Observer callbacks
+ https://bugs.webkit.org/show_bug.cgi?id=192669
+ <rdar://problem/46702490>
+
+ Reviewed by Joseph Pecoraro.
+
+ Add InspectorInstrumentation::willFireObserverCallback() and use it to wrap calls
+ to Intersection Observer, Performance Observer and Mutation Observer callbacks so
+ that they get correctly labeled in the Inspector timeline.
+
+ * Localizations/en.lproj/localizedStrings.js:
+ * UserInterface/Controllers/TimelineManager.js:
+ (WI.TimelineManager.prototype._processRecord):
+ * UserInterface/Models/ScriptTimelineRecord.js:
+ (WI.ScriptTimelineRecord.EventType.displayName):
+ * UserInterface/Views/TimelineTabContentView.js:
+ (WI.TimelineTabContentView.iconClassNameForRecord):
+
2018-12-19 Devin Rousso <[email protected]>
Web Inspector: Audit: "Clear Filters" button gets clipped when window is vertically small
Modified: trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js (239396 => 239397)
--- trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebInspectorUI/Localizations/en.lproj/localizedStrings.js 2018-12-19 23:17:31 UTC (rev 239397)
@@ -45,6 +45,7 @@
localizedStrings["%s (%s, %s)"] = "%s (%s, %s)";
localizedStrings["%s (default)"] = "%s (default)";
localizedStrings["%s (hidden)"] = "%s (hidden)";
+localizedStrings["%s Callback"] = "%s Callback";
localizedStrings["%s Event Dispatched"] = "%s Event Dispatched";
localizedStrings["%s Fired"] = "%s Fired";
localizedStrings["%s Prototype"] = "%s Prototype";
@@ -53,6 +54,7 @@
localizedStrings["%s \u2014 %s"] = "%s \u2014 %s";
localizedStrings["%s cannot be modified"] = "%s cannot be modified";
localizedStrings["%s delay"] = "%s delay";
+localizedStrings["%s eval\n%s async"] = "%s eval\n%s async";
localizedStrings["%s interval"] = "%s interval";
localizedStrings["(Action %s)"] = "(Action %s)";
localizedStrings["(Disk)"] = "(Disk)";
@@ -121,6 +123,7 @@
localizedStrings["Assertion Failures"] = "Assertion Failures";
localizedStrings["Assertion with message: %s"] = "Assertion with message: %s";
localizedStrings["Assertive"] = "Assertive";
+localizedStrings["Async audits are not supported."] = "Async audits are not supported.";
localizedStrings["Attribute"] = "Attribute";
localizedStrings["Attribute Modified"] = "Attribute Modified";
localizedStrings["Attributes"] = "Attributes";
@@ -630,6 +633,7 @@
localizedStrings["Not found"] = "Not found";
localizedStrings["Object Graph"] = "Object Graph";
localizedStrings["Object Store"] = "Object Store";
+localizedStrings["Observer Callback"] = "Observer Callback";
localizedStrings["Off"] = "Off";
localizedStrings["Once"] = "Once";
localizedStrings["Online"] = "Online";
Modified: trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js (239396 => 239397)
--- trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebInspectorUI/UserInterface/Controllers/TimelineManager.js 2018-12-19 23:17:31 UTC (rev 239397)
@@ -546,6 +546,12 @@
case TimelineAgent.EventType.TimerFire:
record = new WI.ScriptTimelineRecord(WI.ScriptTimelineRecord.EventType.TimerFired, startTime, endTime, callFrames, sourceCodeLocation, parentRecordPayload.data.timerId, profileData);
break;
+ case TimelineAgent.EventType.ObserverCallback:
+ record = new WI.ScriptTimelineRecord(WI.ScriptTimelineRecord.EventType.ObserverCallback, startTime, endTime, callFrames, sourceCodeLocation, parentRecordPayload.data.type, profileData);
+ break;
+ case TimelineAgent.EventType.FireAnimationFrame:
+ record = new WI.ScriptTimelineRecord(WI.ScriptTimelineRecord.EventType.AnimationFrameFired, startTime, endTime, callFrames, sourceCodeLocation, parentRecordPayload.data.id, profileData);
+ break;
default:
record = new WI.ScriptTimelineRecord(WI.ScriptTimelineRecord.EventType.ScriptEvaluated, startTime, endTime, callFrames, sourceCodeLocation, null, profileData);
break;
@@ -563,7 +569,8 @@
case TimelineAgent.EventType.TimerFire:
case TimelineAgent.EventType.EventDispatch:
case TimelineAgent.EventType.FireAnimationFrame:
- // These are handled when the parent of FunctionCall or EvaluateScript.
+ case TimelineAgent.EventType.ObserverCallback:
+ // These are handled when we see the child FunctionCall or EvaluateScript.
break;
case TimelineAgent.EventType.FunctionCall:
@@ -596,6 +603,9 @@
case TimelineAgent.EventType.EventDispatch:
record = new WI.ScriptTimelineRecord(WI.ScriptTimelineRecord.EventType.EventDispatched, startTime, endTime, callFrames, sourceCodeLocation, parentRecordPayload.data.type, profileData);
break;
+ case TimelineAgent.EventType.ObserverCallback:
+ record = new WI.ScriptTimelineRecord(WI.ScriptTimelineRecord.EventType.ObserverCallback, startTime, endTime, callFrames, sourceCodeLocation, parentRecordPayload.data.type, profileData);
+ break;
case TimelineAgent.EventType.FireAnimationFrame:
record = new WI.ScriptTimelineRecord(WI.ScriptTimelineRecord.EventType.AnimationFrameFired, startTime, endTime, callFrames, sourceCodeLocation, parentRecordPayload.data.id, profileData);
break;
Modified: trunk/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js (239396 => 239397)
--- trunk/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebInspectorUI/UserInterface/Models/ScriptTimelineRecord.js 2018-12-19 23:17:31 UTC (rev 239397)
@@ -194,6 +194,7 @@
AnimationFrameFired: "script-timeline-record-animation-frame-fired",
AnimationFrameRequested: "script-timeline-record-animation-frame-requested",
AnimationFrameCanceled: "script-timeline-record-animation-frame-canceled",
+ ObserverCallback: "script-timeline-record-observer-callback",
ConsoleProfileRecorded: "script-timeline-record-console-profile-recorded",
GarbageCollected: "script-timeline-record-garbage-collected",
};
@@ -400,6 +401,10 @@
if (details && includeDetailsInMainTitle)
return WI.UIString("Animation Frame %d Fired").format(details);
return WI.UIString("Animation Frame Fired");
+ case WI.ScriptTimelineRecord.EventType.ObserverCallback:
+ if (details && (details instanceof String || typeof details === "string"))
+ return WI.UIString("%s Callback").format(details);
+ return WI.UIString("Observer Callback");
case WI.ScriptTimelineRecord.EventType.AnimationFrameRequested:
if (details && includeDetailsInMainTitle)
return WI.UIString("Animation Frame %d Requested").format(details);
Modified: trunk/Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js (239396 => 239397)
--- trunk/Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js 2018-12-19 22:45:12 UTC (rev 239396)
+++ trunk/Source/WebInspectorUI/UserInterface/Views/TimelineTabContentView.js 2018-12-19 23:17:31 UTC (rev 239397)
@@ -207,6 +207,7 @@
return WI.TimelineRecordTreeElement.EvaluatedRecordIconStyleClass;
case WI.ScriptTimelineRecord.EventType.MicrotaskDispatched:
case WI.ScriptTimelineRecord.EventType.EventDispatched:
+ case WI.ScriptTimelineRecord.EventType.ObserverCallback:
return WI.TimelineRecordTreeElement.EventRecordIconStyleClass;
case WI.ScriptTimelineRecord.EventType.ProbeSampleRecorded:
return WI.TimelineRecordTreeElement.ProbeRecordIconStyleClass;