c674a1f608
1. Use `StringBuffer` instead of `StringView` in `WebDriverValue`. 2. Add some `DCHECK`s. 3. Reserve vector size. 4. Respect properties with `undefined` values. 5. Minor clean-ups. Change-Id: Ic109acb1e3adf2d950767173c17a9203e3c816dc Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3596173 Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Auto-Submit: Maksim Sadym <sadym@chromium.org> Cr-Commit-Position: refs/heads/main@{#80296}
664 lines
11 KiB
Plaintext
664 lines
11 KiB
Plaintext
RemoteObject.webDriverValue
|
|
|
|
Running test: PrimitiveValue
|
|
testing expression: undefined
|
|
Runtime.evaluate
|
|
{
|
|
type : undefined
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : undefined
|
|
}
|
|
testing expression: null
|
|
Runtime.evaluate
|
|
{
|
|
type : null
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : null
|
|
}
|
|
testing expression: 'foo'
|
|
Runtime.evaluate
|
|
{
|
|
type : string
|
|
value : foo
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : string
|
|
value : foo
|
|
}
|
|
testing expression: [true, false]
|
|
Runtime.evaluate
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : boolean
|
|
value : true
|
|
}
|
|
[1] : {
|
|
type : boolean
|
|
value : false
|
|
}
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : boolean
|
|
value : true
|
|
}
|
|
[1] : {
|
|
type : boolean
|
|
value : false
|
|
}
|
|
]
|
|
}
|
|
|
|
Running test: Number
|
|
testing expression: [123, 0.56, -0, +Infinity, -Infinity, NaN]
|
|
Runtime.evaluate
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : number
|
|
value : 123
|
|
}
|
|
[1] : {
|
|
type : number
|
|
value : 0.56
|
|
}
|
|
[2] : {
|
|
type : number
|
|
value : -0
|
|
}
|
|
[3] : {
|
|
type : number
|
|
value : Infinity
|
|
}
|
|
[4] : {
|
|
type : number
|
|
value : -Infinity
|
|
}
|
|
[5] : {
|
|
type : number
|
|
value : NaN
|
|
}
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : number
|
|
value : 123
|
|
}
|
|
[1] : {
|
|
type : number
|
|
value : 0.56
|
|
}
|
|
[2] : {
|
|
type : number
|
|
value : -0
|
|
}
|
|
[3] : {
|
|
type : number
|
|
value : Infinity
|
|
}
|
|
[4] : {
|
|
type : number
|
|
value : -Infinity
|
|
}
|
|
[5] : {
|
|
type : number
|
|
value : NaN
|
|
}
|
|
]
|
|
}
|
|
|
|
Running test: BigInt
|
|
testing expression: [123n, 1234567890n]
|
|
Runtime.evaluate
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : bigint
|
|
value : 123n
|
|
}
|
|
[1] : {
|
|
type : bigint
|
|
value : 1234567890n
|
|
}
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : bigint
|
|
value : 123n
|
|
}
|
|
[1] : {
|
|
type : bigint
|
|
value : 1234567890n
|
|
}
|
|
]
|
|
}
|
|
|
|
Running test: Symbol
|
|
testing expression: Symbol('foo')
|
|
Runtime.evaluate
|
|
{
|
|
type : symbol
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : symbol
|
|
}
|
|
|
|
Running test: Function
|
|
testing expression: [function qwe(){}, ()=>{}]
|
|
Runtime.evaluate
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : function
|
|
}
|
|
[1] : {
|
|
type : function
|
|
}
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : function
|
|
}
|
|
[1] : {
|
|
type : function
|
|
}
|
|
]
|
|
}
|
|
|
|
Running test: Array
|
|
testing expression: [1,2,undefined]
|
|
Runtime.evaluate
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : number
|
|
value : 1
|
|
}
|
|
[1] : {
|
|
type : number
|
|
value : 2
|
|
}
|
|
[2] : {
|
|
type : undefined
|
|
}
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : number
|
|
value : 1
|
|
}
|
|
[1] : {
|
|
type : number
|
|
value : 2
|
|
}
|
|
[2] : {
|
|
type : undefined
|
|
}
|
|
]
|
|
}
|
|
testing expression: new Array(1,2,undefined)
|
|
Runtime.evaluate
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : number
|
|
value : 1
|
|
}
|
|
[1] : {
|
|
type : number
|
|
value : 2
|
|
}
|
|
[2] : {
|
|
type : undefined
|
|
}
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : number
|
|
value : 1
|
|
}
|
|
[1] : {
|
|
type : number
|
|
value : 2
|
|
}
|
|
[2] : {
|
|
type : undefined
|
|
}
|
|
]
|
|
}
|
|
|
|
Running test: RegExp
|
|
testing expression: [new RegExp('ab+c'), new RegExp('ab+c', 'ig')]
|
|
Runtime.evaluate
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : regexp
|
|
value : {
|
|
pattern : ab+c
|
|
}
|
|
}
|
|
[1] : {
|
|
type : regexp
|
|
value : {
|
|
flags : gi
|
|
pattern : ab+c
|
|
}
|
|
}
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : regexp
|
|
value : {
|
|
pattern : ab+c
|
|
}
|
|
}
|
|
[1] : {
|
|
type : regexp
|
|
value : {
|
|
flags : gi
|
|
pattern : ab+c
|
|
}
|
|
}
|
|
]
|
|
}
|
|
|
|
Running test: Date
|
|
testing date: Thu Apr 07 2022 16:16:25 GMT+1100
|
|
Expected date in GMT: Thu, 07 Apr 2022 05:16:25 GMT
|
|
Date type as expected: true
|
|
Date value as expected: true
|
|
testing date: Thu Apr 07 2022 16:16:25 GMT-1100
|
|
Expected date in GMT: Fri, 08 Apr 2022 03:16:25 GMT
|
|
Date type as expected: true
|
|
Date value as expected: true
|
|
|
|
Running test: Error
|
|
testing expression: [new Error(), new Error('qwe')]
|
|
Runtime.evaluate
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : error
|
|
}
|
|
[1] : {
|
|
type : error
|
|
}
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : array
|
|
value : [
|
|
[0] : {
|
|
type : error
|
|
}
|
|
[1] : {
|
|
type : error
|
|
}
|
|
]
|
|
}
|
|
|
|
Running test: Map
|
|
testing expression: new Map([['keyString1', {valueObject1: 1}], [{keyObject2: 2}, 'valueString2'], ['keyString3', new Array()]])
|
|
Runtime.evaluate
|
|
{
|
|
type : map
|
|
value : [
|
|
[0] : [
|
|
[0] : keyString1
|
|
[1] : {
|
|
type : object
|
|
}
|
|
]
|
|
[1] : [
|
|
[0] : {
|
|
type : object
|
|
}
|
|
[1] : {
|
|
type : string
|
|
value : valueString2
|
|
}
|
|
]
|
|
[2] : [
|
|
[0] : keyString3
|
|
[1] : {
|
|
type : array
|
|
}
|
|
]
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : map
|
|
value : [
|
|
[0] : [
|
|
[0] : keyString1
|
|
[1] : {
|
|
type : object
|
|
}
|
|
]
|
|
[1] : [
|
|
[0] : {
|
|
type : object
|
|
}
|
|
[1] : {
|
|
type : string
|
|
value : valueString2
|
|
}
|
|
]
|
|
[2] : [
|
|
[0] : keyString3
|
|
[1] : {
|
|
type : array
|
|
}
|
|
]
|
|
]
|
|
}
|
|
|
|
Running test: WeakMap
|
|
testing expression: new WeakMap([[{valueObject1: 1}, 'keyString1'],[{valueObject2: 2}, 'keyString2']])
|
|
Runtime.evaluate
|
|
{
|
|
type : weakmap
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : weakmap
|
|
}
|
|
|
|
Running test: Set
|
|
testing expression: new Set([{valueObject1: 1}, 'valueString2', new Array(), undefined])
|
|
Runtime.evaluate
|
|
{
|
|
type : set
|
|
value : [
|
|
[0] : {
|
|
type : object
|
|
}
|
|
[1] : {
|
|
type : string
|
|
value : valueString2
|
|
}
|
|
[2] : {
|
|
type : array
|
|
}
|
|
[3] : {
|
|
type : undefined
|
|
}
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : set
|
|
value : [
|
|
[0] : {
|
|
type : object
|
|
}
|
|
[1] : {
|
|
type : string
|
|
value : valueString2
|
|
}
|
|
[2] : {
|
|
type : array
|
|
}
|
|
[3] : {
|
|
type : undefined
|
|
}
|
|
]
|
|
}
|
|
|
|
Running test: Weakset
|
|
testing expression: new WeakSet([{valueObject1: 1}, {valueObject2: 2}])
|
|
Runtime.evaluate
|
|
{
|
|
type : weakset
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : weakset
|
|
}
|
|
|
|
Running test: Proxy
|
|
testing expression: new Proxy({}, ()=>{})
|
|
Runtime.evaluate
|
|
{
|
|
type : proxy
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : proxy
|
|
}
|
|
|
|
Running test: Promise
|
|
testing expression: new Promise(()=>{})
|
|
Runtime.evaluate
|
|
{
|
|
type : promise
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : promise
|
|
}
|
|
|
|
Running test: Typedarray
|
|
testing expression: new Uint16Array()
|
|
Runtime.evaluate
|
|
{
|
|
type : typedarray
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : typedarray
|
|
}
|
|
|
|
Running test: ArrayBuffer
|
|
testing expression: new ArrayBuffer()
|
|
Runtime.evaluate
|
|
{
|
|
type : arraybuffer
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : arraybuffer
|
|
}
|
|
|
|
Running test: Object
|
|
testing expression: {nullKey: null, stringKey: 'foo',boolKey: true,numberKey: 123,bigintKey: 123n,symbolKey: Symbol('foo'),functionKey: () => {},arrayKey:[1],undefinedKey:undefined}
|
|
Runtime.evaluate
|
|
{
|
|
type : object
|
|
value : [
|
|
[0] : [
|
|
[0] : nullKey
|
|
[1] : {
|
|
type : null
|
|
}
|
|
]
|
|
[1] : [
|
|
[0] : stringKey
|
|
[1] : {
|
|
type : string
|
|
value : foo
|
|
}
|
|
]
|
|
[2] : [
|
|
[0] : boolKey
|
|
[1] : {
|
|
type : boolean
|
|
value : true
|
|
}
|
|
]
|
|
[3] : [
|
|
[0] : numberKey
|
|
[1] : {
|
|
type : number
|
|
value : 123
|
|
}
|
|
]
|
|
[4] : [
|
|
[0] : bigintKey
|
|
[1] : {
|
|
type : bigint
|
|
value : 123n
|
|
}
|
|
]
|
|
[5] : [
|
|
[0] : symbolKey
|
|
[1] : {
|
|
type : symbol
|
|
}
|
|
]
|
|
[6] : [
|
|
[0] : functionKey
|
|
[1] : {
|
|
type : function
|
|
}
|
|
]
|
|
[7] : [
|
|
[0] : arrayKey
|
|
[1] : {
|
|
type : array
|
|
}
|
|
]
|
|
[8] : [
|
|
[0] : undefinedKey
|
|
[1] : {
|
|
type : undefined
|
|
}
|
|
]
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : object
|
|
value : [
|
|
[0] : [
|
|
[0] : nullKey
|
|
[1] : {
|
|
type : null
|
|
}
|
|
]
|
|
[1] : [
|
|
[0] : stringKey
|
|
[1] : {
|
|
type : string
|
|
value : foo
|
|
}
|
|
]
|
|
[2] : [
|
|
[0] : boolKey
|
|
[1] : {
|
|
type : boolean
|
|
value : true
|
|
}
|
|
]
|
|
[3] : [
|
|
[0] : numberKey
|
|
[1] : {
|
|
type : number
|
|
value : 123
|
|
}
|
|
]
|
|
[4] : [
|
|
[0] : bigintKey
|
|
[1] : {
|
|
type : bigint
|
|
value : 123n
|
|
}
|
|
]
|
|
[5] : [
|
|
[0] : symbolKey
|
|
[1] : {
|
|
type : symbol
|
|
}
|
|
]
|
|
[6] : [
|
|
[0] : functionKey
|
|
[1] : {
|
|
type : function
|
|
}
|
|
]
|
|
[7] : [
|
|
[0] : arrayKey
|
|
[1] : {
|
|
type : array
|
|
}
|
|
]
|
|
[8] : [
|
|
[0] : undefinedKey
|
|
[1] : {
|
|
type : undefined
|
|
}
|
|
]
|
|
]
|
|
}
|
|
testing expression: {key_level_1: {key_level_2: {key_level_3: 'value_level_3'}}}
|
|
Runtime.evaluate
|
|
{
|
|
type : object
|
|
value : [
|
|
[0] : [
|
|
[0] : key_level_1
|
|
[1] : {
|
|
type : object
|
|
}
|
|
]
|
|
]
|
|
}
|
|
Runtime.callFunctionOn
|
|
{
|
|
type : object
|
|
value : [
|
|
[0] : [
|
|
[0] : key_level_1
|
|
[1] : {
|
|
type : object
|
|
}
|
|
]
|
|
]
|
|
}
|