Commit 400050e6 authored by Nicolás Peña Moreno's avatar Nicolás Peña Moreno Committed by Commit Bot

Fix toJSON in WindowPerformance and PerformanceResourceTiming

Per https://heycam.github.io/webidl/#es-default-tojson, it is correct to
directly add the attribute values of the interface to the builder
instead of adding the results of toJSONForBinding().

Change-Id: I07f7ee5992de59938c0116f90dc4b5229c5d6e9d
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1982792Reviewed-by: default avatarJeremy Roman <jbroman@chromium.org>
Commit-Queue: Nicolás Peña Moreno <npm@chromium.org>
Cr-Commit-Position: refs/heads/master@{#728540}
parent 150a1b4b
......@@ -388,19 +388,11 @@ void PerformanceResourceTiming::BuildJSONValue(V8ObjectBuilder& builder) const {
builder.AddNumber("encodedBodySize", encodedBodySize());
builder.AddNumber("decodedBodySize", decodedBodySize());
HeapVector<ScriptValue> server_timing;
server_timing.ReserveCapacity(server_timing_.size());
for (const auto& timing : server_timing_) {
server_timing.push_back(timing->toJSONForBinding(builder.GetScriptState()));
}
builder.Add("serverTiming", server_timing);
HeapVector<ScriptValue> worker_timing;
worker_timing.ReserveCapacity(worker_timing_.size());
for (const auto& timing : worker_timing_) {
worker_timing.push_back(timing->toJSONForBinding(builder.GetScriptState()));
}
builder.Add("workerTiming", worker_timing);
ScriptState* script_state = builder.GetScriptState();
builder.Add("serverTiming", FreezeV8Object(ToV8(serverTiming(), script_state),
script_state->GetIsolate()));
builder.Add("workerTiming", FreezeV8Object(ToV8(workerTiming(), script_state),
script_state->GetIsolate()));
}
void PerformanceResourceTiming::AddPerformanceEntry(
......
......@@ -220,9 +220,8 @@ WindowPerformance::CreateNavigationTimingInstance() {
void WindowPerformance::BuildJSONValue(V8ObjectBuilder& builder) const {
Performance::BuildJSONValue(builder);
builder.Add("timing", timing()->toJSONForBinding(builder.GetScriptState()));
builder.Add("navigation",
navigation()->toJSONForBinding(builder.GetScriptState()));
builder.Add("timing", timing());
builder.Add("navigation", navigation());
}
void WindowPerformance::Trace(blink::Visitor* visitor) {
......
......@@ -6,8 +6,8 @@
// http://www.w3.org/TR/navigation-timing/
idl_test(
['navigation-timing'],
['resource-timing', 'performance-timeline', 'hr-time', 'dom'],
['hr-time', 'navigation-timing'],
['resource-timing', 'performance-timeline', 'html', 'dom'],
idl_array => {
idl_array.add_objects({
Performance: ['performance'],
......
......@@ -6,11 +6,23 @@
// https://w3c.github.io/server-timing/
idl_test(
['server-timing'],
['resource-timing', 'performance-timeline'],
idl_array => {
idl_array.add_objects({
Performance: ['performance'],
});
}
['resource-timing', 'server-timing'],
['performance-timeline', 'hr-time', 'dom'],
idl_array => new Promise((resolve, reject) => {
new PerformanceObserver(entries => {
entries.getEntries().forEach(e => {
if (!e.name.endsWith('blue.png'))
return;
self.resource = e;
self.server = e.serverTiming[0];
idl_array.add_objects({
PerformanceResourceTiming: ['resource'],
PerformanceServerTiming: ['server']
});
resolve();
})
}).observe({entryTypes: ['resource']});
fetch('resources/blue.png');
})
);
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment