3b1509389a
When formatting console messages (for consumption in Chromium/Blink), we have special logic to unwrap value wrapper objects. But this logic was not very consistent, and especially Number values and NumberObject values were formatted differently. This changes the V8ValueStringBuilder::append() logic to always unwrap any value wrapper first and then use the regular dispatch for the primitive value. Fixed: chromium:1321833 Change-Id: I9996671e1f91da0841e5d5f1687cf647ab72a561 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3622913 Commit-Queue: Yang Guo <yangguo@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Auto-Submit: Benedikt Meurer <bmeurer@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Cr-Commit-Position: refs/heads/main@{#80323}
52 lines
1.6 KiB
JavaScript
52 lines
1.6 KiB
JavaScript
// Copyright 2022 the V8 project authors. All rights reserved.
|
|
// Use of this source code is governed by a BSD-style license that can be
|
|
// found in the LICENSE file.
|
|
|
|
const {session, contextGroup, Protocol} =
|
|
InspectorTest.start('Regression test for crbug.com/1321833');
|
|
|
|
Protocol.Runtime.onConsoleAPICalled(({params: {args, type}}) => {
|
|
InspectorTest.logObject(args, type);
|
|
});
|
|
|
|
InspectorTest.runAsyncTestSuite([
|
|
async function testNumberNaN() {
|
|
await Protocol.Runtime.enable();
|
|
const {result} = await Protocol.Runtime.evaluate(
|
|
{expression: 'console.log(new Number(NaN))'});
|
|
if ('exceptionDetails' in result) {
|
|
InspectorTest.logMessage(result.exceptionDetails);
|
|
}
|
|
await Promise.all([
|
|
Protocol.Runtime.discardConsoleEntries(),
|
|
Protocol.Runtime.disable(),
|
|
]);
|
|
},
|
|
|
|
async function testNumberInfinity() {
|
|
await Protocol.Runtime.enable();
|
|
const {result} = await Protocol.Runtime.evaluate(
|
|
{expression: 'console.log(new Number(Infinity))'});
|
|
if ('exceptionDetails' in result) {
|
|
InspectorTest.logMessage(result.exceptionDetails);
|
|
}
|
|
await Promise.all([
|
|
Protocol.Runtime.discardConsoleEntries(),
|
|
Protocol.Runtime.disable(),
|
|
]);
|
|
},
|
|
|
|
async function testNumberMinusInfinity() {
|
|
await Protocol.Runtime.enable();
|
|
const {result} = await Protocol.Runtime.evaluate(
|
|
{expression: 'console.log(new Number(-Infinity))'});
|
|
if ('exceptionDetails' in result) {
|
|
InspectorTest.logMessage(result.exceptionDetails);
|
|
}
|
|
await Promise.all([
|
|
Protocol.Runtime.discardConsoleEntries(),
|
|
Protocol.Runtime.disable(),
|
|
]);
|
|
},
|
|
]);
|