[SCM] WebKit Debian packaging branch, webkit-1.1, updated. upstream/1.1.19-706-ge5415e9

oliver at apple.com oliver at apple.com
Thu Feb 4 21:30:29 UTC 2010


The following commit has been merged in the webkit-1.1 branch:
commit 0a05108b8134bafad0eaa7d9c774cbf62c6d1761
Author: oliver at apple.com <oliver at apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Jan 28 04:47:07 2010 +0000

    2010-01-27  Oliver Hunt  <oliver at apple.com>
    
            Reviewed by Maciej Stachowiak.
    
            MessageEvent.data should deserialize in the context of the MessageEvent's global object
            https://bugs.webkit.org/show_bug.cgi?id=34227
    
            Add logic to allow us to create an Object, Array, or Date instance
            so we can create them in the context of a specific global object,
            rather than just using the current lexical global object.
    
            * JavaScriptCore.exp:
            * runtime/DateInstance.cpp:
            (JSC::DateInstance::DateInstance):
            * runtime/DateInstance.h:
            * runtime/JSGlobalObject.h:
            (JSC::constructEmptyObject):
            (JSC::constructEmptyArray):
    2010-01-27  Oliver Hunt  <oliver at apple.com>
    
            Reviewed by Maciej Stachowiak.
    
            MessageEvent.data should deserialize in the context of the MessageEvent's global object
            https://bugs.webkit.org/show_bug.cgi?id=34227
    
            Test that the object returned from postMessage.data is created in the correct context
    
            * fast/dom/Window/resources/window-postmessage-clone-frames-frame.html: Added.
            * fast/dom/Window/window-postmessage-clone-frames-expected.txt: Added.
            * fast/dom/Window/window-postmessage-clone-frames.html: Added.
    2010-01-27  Oliver Hunt  <oliver at apple.com>
    
            Reviewed by Maciej Stachowiak.
    
            MessageEvent.data should deserialize in the context of the MessageEvent's global object
            https://bugs.webkit.org/show_bug.cgi?id=34227
    
            Make ScriptValue deserialisation support the provision of a specific global
            object to use when creating new objects.  This then allows us to make
            MessageEvent.data and PopStateEvent.state deserialize in the correct
            context.
    
            Test: fast/dom/Window/window-postmessage-clone-frames.html
    
            * bindings/js/JSPopStateEventCustom.cpp:
              Remove custom implementation of state getter
            * bindings/js/SerializedScriptValue.cpp:
            (WebCore::DeserializingTreeWalker::DeserializingTreeWalker):
            (WebCore::DeserializingTreeWalker::createOutputArray):
            (WebCore::DeserializingTreeWalker::createOutputObject):
            (WebCore::DeserializingTreeWalker::convertIfTerminal):
            (WebCore::SerializedScriptValueData::deserialize):
            (WebCore::SerializedScriptValue::deserialize):
            * bindings/js/SerializedScriptValue.h:
            (WebCore::SerializedScriptValue::deserialize):
            * bindings/scripts/CodeGeneratorJS.pm:
              Update bindings generation to pass the correct global object, and to
              treat "any" as synonymous with SerializedValue.
            * dom/PopStateEvent.idl:
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@53969 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/JavaScriptCore/ChangeLog b/JavaScriptCore/ChangeLog
index 71f801f..7d1a148 100644
--- a/JavaScriptCore/ChangeLog
+++ b/JavaScriptCore/ChangeLog
@@ -1,3 +1,22 @@
+2010-01-27  Oliver Hunt  <oliver at apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        MessageEvent.data should deserialize in the context of the MessageEvent's global object
+        https://bugs.webkit.org/show_bug.cgi?id=34227
+
+        Add logic to allow us to create an Object, Array, or Date instance
+        so we can create them in the context of a specific global object,
+        rather than just using the current lexical global object.
+
+        * JavaScriptCore.exp:
+        * runtime/DateInstance.cpp:
+        (JSC::DateInstance::DateInstance):
+        * runtime/DateInstance.h:
+        * runtime/JSGlobalObject.h:
+        (JSC::constructEmptyObject):
+        (JSC::constructEmptyArray):
+
 2010-01-27  Alexey Proskuryakov  <ap at apple.com>
 
         Reviewed by Darin Adler.
diff --git a/JavaScriptCore/JavaScriptCore.exp b/JavaScriptCore/JavaScriptCore.exp
index 4f8de91..7c93f64 100644
--- a/JavaScriptCore/JavaScriptCore.exp
+++ b/JavaScriptCore/JavaScriptCore.exp
@@ -109,6 +109,7 @@ __ZN3JSC11UStringImpl7s_emptyE
 __ZN3JSC11UStringImplD1Ev
 __ZN3JSC11checkSyntaxEPNS_9ExecStateERKNS_10SourceCodeE
 __ZN3JSC12DateInstance4infoE
+__ZN3JSC12DateInstanceC1EPNS_9ExecStateEN3WTF17NonNullPassRefPtrINS_9StructureEEEd
 __ZN3JSC12DateInstanceC1EPNS_9ExecStateEd
 __ZN3JSC12JSGlobalData10ClientDataD2Ev
 __ZN3JSC12JSGlobalData11jsArrayVPtrE
diff --git a/JavaScriptCore/runtime/DateInstance.cpp b/JavaScriptCore/runtime/DateInstance.cpp
index 77a92be..b43b183 100644
--- a/JavaScriptCore/runtime/DateInstance.cpp
+++ b/JavaScriptCore/runtime/DateInstance.cpp
@@ -40,6 +40,12 @@ DateInstance::DateInstance(ExecState* exec, NonNullPassRefPtr<Structure> structu
     setInternalValue(jsNaN(exec));
 }
 
+DateInstance::DateInstance(ExecState* exec, NonNullPassRefPtr<Structure> structure, double time)
+    : JSWrapperObject(structure)
+{
+    setInternalValue(jsNumber(exec, timeClip(time)));
+}
+
 DateInstance::DateInstance(ExecState* exec, double time)
     : JSWrapperObject(exec->lexicalGlobalObject()->dateStructure())
 {
diff --git a/JavaScriptCore/runtime/DateInstance.h b/JavaScriptCore/runtime/DateInstance.h
index 44b7521..b83d2be 100644
--- a/JavaScriptCore/runtime/DateInstance.h
+++ b/JavaScriptCore/runtime/DateInstance.h
@@ -32,6 +32,7 @@ namespace JSC {
     class DateInstance : public JSWrapperObject {
     public:
         DateInstance(ExecState*, double);
+        DateInstance(ExecState*, NonNullPassRefPtr<Structure>, double);
         explicit DateInstance(ExecState*, NonNullPassRefPtr<Structure>);
 
         double internalNumber() const { return internalValue().uncheckedGetNumber(); }
diff --git a/JavaScriptCore/runtime/JSGlobalObject.h b/JavaScriptCore/runtime/JSGlobalObject.h
index 9e4ef49..98d7ef8 100644
--- a/JavaScriptCore/runtime/JSGlobalObject.h
+++ b/JavaScriptCore/runtime/JSGlobalObject.h
@@ -413,11 +413,21 @@ namespace JSC {
     {
         return new (exec) JSObject(exec->lexicalGlobalObject()->emptyObjectStructure());
     }
+    
+    inline JSObject* constructEmptyObject(ExecState* exec, JSGlobalObject* globalObject)
+    {
+        return new (exec) JSObject(globalObject->emptyObjectStructure());
+    }
 
     inline JSArray* constructEmptyArray(ExecState* exec)
     {
         return new (exec) JSArray(exec->lexicalGlobalObject()->arrayStructure());
     }
+    
+    inline JSArray* constructEmptyArray(ExecState* exec, JSGlobalObject* globalObject)
+    {
+        return new (exec) JSArray(globalObject->arrayStructure());
+    }
 
     inline JSArray* constructEmptyArray(ExecState* exec, unsigned initialLength)
     {
diff --git a/LayoutTests/ChangeLog b/LayoutTests/ChangeLog
index 9417b99..bf387df 100644
--- a/LayoutTests/ChangeLog
+++ b/LayoutTests/ChangeLog
@@ -1,3 +1,16 @@
+2010-01-27  Oliver Hunt  <oliver at apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        MessageEvent.data should deserialize in the context of the MessageEvent's global object
+        https://bugs.webkit.org/show_bug.cgi?id=34227
+
+        Test that the object returned from postMessage.data is created in the correct context
+
+        * fast/dom/Window/resources/window-postmessage-clone-frames-frame.html: Added.
+        * fast/dom/Window/window-postmessage-clone-frames-expected.txt: Added.
+        * fast/dom/Window/window-postmessage-clone-frames.html: Added.
+
 2010-01-27  John Abd-El-Malek  <jam at chromium.org>
 
         Reviewed by Dimitri Glazkov.
diff --git a/LayoutTests/fast/dom/Window/resources/window-postmessage-clone-frames-frame.html b/LayoutTests/fast/dom/Window/resources/window-postmessage-clone-frames-frame.html
new file mode 100644
index 0000000..8094f59
--- /dev/null
+++ b/LayoutTests/fast/dom/Window/resources/window-postmessage-clone-frames-frame.html
@@ -0,0 +1,7 @@
+<script>
+var tests = [];
+window.onmessage = function (event) {
+    tests.push({event: event, eventData: event.data});
+    event.source.postMessage("blargh", "*");
+}
+</script>
diff --git a/LayoutTests/fast/dom/Window/window-postmessage-clone-frames-expected.txt b/LayoutTests/fast/dom/Window/window-postmessage-clone-frames-expected.txt
new file mode 100644
index 0000000..63db6f2
--- /dev/null
+++ b/LayoutTests/fast/dom/Window/window-postmessage-clone-frames-expected.txt
@@ -0,0 +1,12 @@
+Tests that we clone object hierarchies
+PASS: (frames[0].tests[0]).eventData instanceof (frames[0]).Object is true of type boolean
+PASS: (frames[0].tests[0]).event.data instanceof (frames[0]).Object is true of type boolean
+PASS: (frames[0].tests[1]).eventData instanceof (frames[0]).Array is true of type boolean
+PASS: (frames[0].tests[1]).event.data instanceof (frames[0]).Array is true of type boolean
+PASS: (frames[0].tests[2]).eventData instanceof (frames[0]).Date is true of type boolean
+PASS: (frames[0].tests[2]).event.data instanceof (frames[0]).Date is true of type boolean
+PASS: (frames[0].tests[3]).eventData instanceof (frames[0]).File is true of type boolean
+PASS: (frames[0].tests[3]).event.data instanceof (frames[0]).File is true of type boolean
+PASS: (frames[0].tests[4]).eventData instanceof (frames[0]).FileList is true of type boolean
+PASS: (frames[0].tests[4]).event.data instanceof (frames[0]).FileList is true of type boolean
+ 
diff --git a/LayoutTests/fast/dom/Window/window-postmessage-clone-frames.html b/LayoutTests/fast/dom/Window/window-postmessage-clone-frames.html
new file mode 100644
index 0000000..bf891d6
--- /dev/null
+++ b/LayoutTests/fast/dom/Window/window-postmessage-clone-frames.html
@@ -0,0 +1,116 @@
+<html>
+<head></head>
+<body>
+<div id="description"></div>
+<div id="console"></div>
+<input type="file" id="fileInput">
+<iframe src="resources/window-postmessage-clone-frames-frame.html" onload="startTest()"></iframe>
+<script>
+if (window.layoutTestController) {
+    layoutTestController.dumpAsText();
+    layoutTestController.waitUntilDone();
+}
+
+var console = document.getElementById("console");
+
+var tests = [];
+
+function equal(actual, expected)
+{
+    if (typeof actual !== typeof expected)
+        return false;
+    if (actual === expected)
+        return true;
+    if ((actual instanceof Date) || (expected instanceof Date)) {
+        if ((actual instanceof Date) && (expected instanceof Date))
+            return (expected instanceof Date) && actual.getTime() == expected.getTime();
+        return false;
+    }
+    if (Array.isArray(actual) || Array.isArray(expected)) {
+        if (!Array.isArray(actual) || !Array.isArray(expected))
+            return false;
+        if (actual.length != expected.length)
+            return false;
+        for (var i = 0; i < actual.length; i++) {
+            if ((i in actual) ^ (i in expected))
+                return false;
+            if (!equal(actual[i], expected[i]))
+                return false;
+        }
+        return true;
+    }
+    if (actual.constructor !== expected.constructor)
+        return false;
+    if ("object" != typeof actual)
+        return false;
+    var keys = Object.keys(actual);
+    if (!equal(keys, Object.keys(expected)))
+        return false;
+    for (var i = 0; i < keys.length; i++) {
+        if (!equal(actual[keys[i]], expected[keys[i]]))
+            return false;
+    }
+    return true;
+}
+
+function safeToString(o) {
+    if (o instanceof Date)
+        return o.toISOString();
+    if (typeof o !== "object" || !o)
+        return o;
+    try {
+        return o.toString();
+    } catch (e) {
+        return Object.prototype.toString.call(o) + "(default toString threw "+e+")";
+    }
+}
+
+function shouldBe(actual, expected)
+{
+    var actualValue = eval(actual);
+    var expectedValue = eval(expected);
+    if (equal(actualValue, expectedValue))
+        console.innerHTML += "PASS: " + actual + " is " + safeToString(expectedValue) + " of type " + typeof actualValue + "<br>";
+    else
+        console.innerHTML += "FAIL: " + actual + " is " + actualValue + " should be " + expectedValue + " of type " + typeof expectedValue + "<br>";
+}
+var i = 0;
+window.onmessage = function(evt) {
+    shouldBe("(frames[0].tests["+i+"]).eventData instanceof (frames[0])."+tests[i].constructor, "true");
+    shouldBe("(frames[0].tests["+i+"]).event.data instanceof (frames[0])."+tests[i].constructor, "true");
+    i++;
+    if (tests.length === i && window.layoutTestController)
+        layoutTestController.notifyDone();
+}
+
+function tryPostMessage(message, constructor) {
+    try {
+        var value = eval(message);
+        frames[0].postMessage(value, "*");
+        tests.push({constructor: constructor});
+    } catch(e) {
+        console.innerHTML += "FAIL: 'postMessage("+message+")' should not throw but threw " + e + "<br>";
+    }
+}
+
+document.getElementById("description").innerHTML = "Tests that we clone object hierarchies";
+
+function startTest() {
+    tryPostMessage('({})', "Object");
+    tryPostMessage('[]', "Array");
+    tryPostMessage('new Date', "Date");
+    var fileInput = document.getElementById("fileInput");
+    var fileRect = fileInput.getClientRects()[0];
+    var targetX = fileRect.left + fileRect.width / 2;
+    var targetY = fileRect.top + fileRect.height / 2;
+    if (window.eventSender) {
+        eventSender.beginDragWithFiles(['get-file-upload.html']);
+        eventSender.mouseMoveTo(targetX, targetY);
+        eventSender.mouseUp();
+        tryPostMessage('fileInput.files[0]', "File");
+        tryPostMessage('fileInput.files', "FileList");
+    }
+}
+</script>
+</body>
+</html>
diff --git a/WebCore/ChangeLog b/WebCore/ChangeLog
index 8ba12d1..ab05b8b 100644
--- a/WebCore/ChangeLog
+++ b/WebCore/ChangeLog
@@ -1,3 +1,33 @@
+2010-01-27  Oliver Hunt  <oliver at apple.com>
+
+        Reviewed by Maciej Stachowiak.
+
+        MessageEvent.data should deserialize in the context of the MessageEvent's global object
+        https://bugs.webkit.org/show_bug.cgi?id=34227
+
+        Make ScriptValue deserialisation support the provision of a specific global
+        object to use when creating new objects.  This then allows us to make
+        MessageEvent.data and PopStateEvent.state deserialize in the correct
+        context.
+
+        Test: fast/dom/Window/window-postmessage-clone-frames.html
+
+        * bindings/js/JSPopStateEventCustom.cpp:
+          Remove custom implementation of state getter
+        * bindings/js/SerializedScriptValue.cpp:
+        (WebCore::DeserializingTreeWalker::DeserializingTreeWalker):
+        (WebCore::DeserializingTreeWalker::createOutputArray):
+        (WebCore::DeserializingTreeWalker::createOutputObject):
+        (WebCore::DeserializingTreeWalker::convertIfTerminal):
+        (WebCore::SerializedScriptValueData::deserialize):
+        (WebCore::SerializedScriptValue::deserialize):
+        * bindings/js/SerializedScriptValue.h:
+        (WebCore::SerializedScriptValue::deserialize):
+        * bindings/scripts/CodeGeneratorJS.pm:
+          Update bindings generation to pass the correct global object, and to
+          treat "any" as synonymous with SerializedValue.
+        * dom/PopStateEvent.idl:
+
 2010-01-27  Nicholas Young  <nicholas.young at nokia.com>
 
         Reviewed by Eric Carlson.
diff --git a/WebCore/bindings/js/JSPopStateEventCustom.cpp b/WebCore/bindings/js/JSPopStateEventCustom.cpp
index ee86a09..3f5fd7e 100644
--- a/WebCore/bindings/js/JSPopStateEventCustom.cpp
+++ b/WebCore/bindings/js/JSPopStateEventCustom.cpp
@@ -45,13 +45,4 @@ JSValue JSPopStateEvent::initPopStateEvent(ExecState* exec, const ArgList& args)
     return jsUndefined();
 }
 
-JSC::JSValue JSPopStateEvent::state(JSC::ExecState* exec) const
-{
-    SerializedScriptValue* object = static_cast<PopStateEvent*>(impl())->state();
-    if (!object)
-        return JSC::jsNull();
-    
-    return object->deserialize(exec);
-}
-
 } // namespace WebCore
diff --git a/WebCore/bindings/js/SerializedScriptValue.cpp b/WebCore/bindings/js/SerializedScriptValue.cpp
index 3573e35..b97b6cf 100644
--- a/WebCore/bindings/js/SerializedScriptValue.cpp
+++ b/WebCore/bindings/js/SerializedScriptValue.cpp
@@ -613,10 +613,10 @@ struct DeserializingTreeWalker : public BaseWalker {
     typedef JSObject* OutputObject;
     typedef SerializedObject::PropertyNameList PropertyList;
 
-    DeserializingTreeWalker(ExecState* exec, bool mustCopy)
+    DeserializingTreeWalker(ExecState* exec, JSGlobalObject* globalObject, bool mustCopy)
         : BaseWalker(exec)
-        , m_globalObject(exec->lexicalGlobalObject())
-        , m_isDOMGlobalObject(m_globalObject->inherits(&JSDOMGlobalObject::s_info))
+        , m_globalObject(globalObject)
+        , m_isDOMGlobalObject(globalObject->inherits(&JSDOMGlobalObject::s_info))
         , m_mustCopy(mustCopy)
     {
     }
@@ -645,14 +645,14 @@ struct DeserializingTreeWalker : public BaseWalker {
 
     JSArray* createOutputArray(unsigned length)
     {
-        JSArray* array = constructEmptyArray(m_exec);
+        JSArray* array = constructEmptyArray(m_exec, m_globalObject);
         array->setLength(length);
         return array;
     }
 
     JSObject* createOutputObject()
     {
-        return constructEmptyObject(m_exec);
+        return constructEmptyObject(m_exec, m_globalObject);
     }
 
     uint32_t length(RefPtr<SerializedArray> array)
@@ -695,11 +695,11 @@ struct DeserializingTreeWalker : public BaseWalker {
             case SerializedScriptValueData::NumberType:
                 return jsNumber(m_exec, value.asDouble());
             case SerializedScriptValueData::DateType:
-                return new (m_exec) DateInstance(m_exec, value.asDouble());
+                return new (m_exec) DateInstance(m_exec, m_globalObject->dateStructure(), value.asDouble());
             case SerializedScriptValueData::FileType:
                 if (!m_isDOMGlobalObject)
                     return jsNull();
-                return toJS(m_exec, static_cast<JSDOMGlobalObject*>(m_exec->lexicalGlobalObject()), File::create(value.asString().crossThreadString()));
+                return toJS(m_exec, static_cast<JSDOMGlobalObject*>(m_globalObject), File::create(value.asString().crossThreadString()));
             case SerializedScriptValueData::FileListType: {
                 if (!m_isDOMGlobalObject)
                     return jsNull();
@@ -708,7 +708,7 @@ struct DeserializingTreeWalker : public BaseWalker {
                 unsigned length = serializedFileList->length();
                 for (unsigned i = 0; i < length; i++)
                     result->append(File::create(serializedFileList->item(i)));
-                return toJS(m_exec, static_cast<JSDOMGlobalObject*>(m_exec->lexicalGlobalObject()), result.get());
+                return toJS(m_exec, static_cast<JSDOMGlobalObject*>(m_globalObject), result.get());
             }
             case SerializedScriptValueData::EmptyType:
                 ASSERT_NOT_REACHED();
@@ -753,15 +753,16 @@ struct DeserializingTreeWalker : public BaseWalker {
     }
 
 private:
+    void* operator new(size_t);
     JSGlobalObject* m_globalObject;
     bool m_isDOMGlobalObject;
     bool m_mustCopy;
 };
 
-JSValue SerializedScriptValueData::deserialize(ExecState* exec, bool mustCopy) const
+JSValue SerializedScriptValueData::deserialize(ExecState* exec, JSGlobalObject* global, bool mustCopy) const
 {
     JSLock lock(SilenceAssertionsOnly);
-    DeserializingTreeWalker context(exec, mustCopy);
+    DeserializingTreeWalker context(exec, global, mustCopy);
     return walk<DeserializingTreeWalker>(context, *this);
 }
 
@@ -936,7 +937,7 @@ PassRefPtr<SerializedScriptValue> SerializedScriptValue::create(JSContextRef ori
 JSValueRef SerializedScriptValue::deserialize(JSContextRef destinationContext, JSValueRef* exception)
 {
     ExecState* exec = toJS(destinationContext);
-    JSValue value = deserialize(exec);
+    JSValue value = deserialize(exec, exec->lexicalGlobalObject());
     if (exec->hadException()) {
         if (exception)
             *exception = toRef(exec, exec->exception());
diff --git a/WebCore/bindings/js/SerializedScriptValue.h b/WebCore/bindings/js/SerializedScriptValue.h
index d3159fc..347d8f2 100644
--- a/WebCore/bindings/js/SerializedScriptValue.h
+++ b/WebCore/bindings/js/SerializedScriptValue.h
@@ -65,7 +65,7 @@ namespace WebCore {
 
         SerializedType type() const { return m_type; }
         static SerializedScriptValueData serialize(JSC::ExecState*, JSC::JSValue);
-        JSC::JSValue deserialize(JSC::ExecState*, bool mustCopy) const;
+        JSC::JSValue deserialize(JSC::ExecState*, JSC::JSGlobalObject*, bool mustCopy) const;
 
         ~SerializedScriptValueData()
         {
@@ -196,11 +196,11 @@ namespace WebCore {
             return m_value.asString();
         }
 
-        JSC::JSValue deserialize(JSC::ExecState* exec)
+        JSC::JSValue deserialize(JSC::ExecState* exec, JSC::JSGlobalObject* globalObject)
         {
             if (!m_value)
                 return JSC::jsNull();
-            return m_value.deserialize(exec, m_mustCopy);
+            return m_value.deserialize(exec, globalObject, m_mustCopy);
         }
 
         JSValueRef deserialize(JSContextRef, JSValueRef* exception);
diff --git a/WebCore/bindings/scripts/CodeGeneratorJS.pm b/WebCore/bindings/scripts/CodeGeneratorJS.pm
index 151edf1..b134539 100644
--- a/WebCore/bindings/scripts/CodeGeneratorJS.pm
+++ b/WebCore/bindings/scripts/CodeGeneratorJS.pm
@@ -1846,7 +1846,7 @@ sub JSValueToNative
         return "$value.toString(exec)";
     }
 
-    if ($type eq "SerializedScriptValue") {
+    if ($type eq "SerializedScriptValue" or $type eq "any") {
         $implIncludes{"SerializedScriptValue.h"} = 1;
         return "SerializedScriptValue::create(exec, $value)";
     }
@@ -1951,9 +1951,9 @@ sub NativeToJSValue
         $joinedName = $type;
         $joinedName =~ s/Abs|Rel//;
         $implIncludes{"$joinedName.h"} = 1;
-    } elsif ($type eq "SerializedScriptValue") {
-        $implIncludes{"$type.h"} = 1;
-        return "$value->deserialize(exec)";
+    } elsif ($type eq "SerializedScriptValue" or $type eq "any") {
+        $implIncludes{"SerializedScriptValue.h"} = 1;
+        return "$value ? $value->deserialize(exec, castedThis->globalObject()) : jsNull()";
     } else {
         # Default, include header with same name.
         $implIncludes{"JS$type.h"} = 1;
diff --git a/WebCore/dom/PopStateEvent.idl b/WebCore/dom/PopStateEvent.idl
index b9ef692..f9c9a71 100644
--- a/WebCore/dom/PopStateEvent.idl
+++ b/WebCore/dom/PopStateEvent.idl
@@ -32,7 +32,7 @@ module events {
                                in boolean cancelableArg, 
                                in any stateArg);
                                
-        readonly attribute [CustomGetter] any state;
+        readonly attribute [V8CustomGetter] any state;
     };
 
 }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list