Bug 22878

Summary: It should be possible to post (clone) built-in JS objects to Workers
Product: WebKit Reporter: Alexey Proskuryakov <ap>
Component: WebCore JavaScriptAssignee: Nobody <webkit-unassigned>
Status: RESOLVED FIXED    
Severity: Enhancement CC: hamaji, oliver
Priority: P2 Keywords: InRadar
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Attachments:
Description Flags
It should be possible to post (clone) built-in JS objects to Workers
none
It should be possible to post (clone) built-in JS objects to Workers barraclough: review+

Description Alexey Proskuryakov 2008-12-16 05:42:22 PST
Worker.postMessage only takes strings now, but the spec has been recently changed to allow arbitrary JS objects, such as Arrays and Objects. We need to support this.

This is similar to JSON, but not quite the same.
Comment 1 Alexey Proskuryakov 2008-12-16 05:43:07 PST
<rdar://problem/6448422>
Comment 2 Oliver Hunt 2009-10-05 23:16:21 PDT
Created attachment 40694 [details]
It should be possible to post (clone) built-in JS objects to Workers
Comment 3 Oliver Hunt 2009-10-06 00:21:09 PDT
Created attachment 40699 [details]
It should be possible to post (clone) built-in JS objects to Workers
Comment 4 Gavin Barraclough 2009-10-06 15:36:29 PDT
Comment on attachment 40699 [details]
It should be possible to post (clone) built-in JS objects to Workers

In the test case, I'd suggest renaming 'equal' to something more descriptive (I initially wondered, "why not just use ==" :-) ).  Maybe 'isCloneOf'?

In SerializedArray, all index values should be less than 'm_length'.

In SerializedScriptValueData, I think 'operator bool ()' should be 'operator bool()' – a quick grep of JSC would seem to agree with this.

r+
Comment 5 Oliver Hunt 2009-10-06 21:58:31 PDT
Landed r49214
Comment 6 Shinichiro Hamaji 2009-10-06 22:03:08 PDT
(In reply to comment #5)
> Landed r49214

This expected.txt contains this line:

> CONSOLE MESSAGE: line 54: RangeError: Maximum call stack size exceeded.

Is this OK?

Also... it is very nice if you modify the test so that the results don't contain "PST" . Maybe we can use the value of getTime like

    if (equal(actualValue, expectedValue)) {
        if (expectedValue && expectedValue.getTime) {
            expectedValue = expectedValue.getTime() + " (the value of getTime)
        }
        console.innerHTML += "PASS: " + actual + " is " + expectedValue + " of type " + typeof actualValue + "<br>";
    } else

?