PopStateEvent should have a constructor (Spec: http://www.whatwg.org/specs/web-apps/current-work/#popstateevent). After this patch is landed, I will add the PopStateEvent constructor for V8 as a follow-up patch.
Created attachment 107450 [details] WIP patch
Created attachment 107455 [details] WIP patch
Question: Which should IDL 'any' be implemented as ScriptValue or SerializedScriptValue? The spec says that the type of both PopStateEvent.state and CustomEvent.detail should be 'any' (http://www.whatwg.org/specs/web-apps/current-work/#popstateevent, http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#interface-customevent). However, in the current WebCore implementation, CustomEvent.state is implemented as ScriptValue (https://bugs.webkit.org/show_bug.cgi?id=67248), and PopStateEvent.detail is implemented as SerializedScriptValue. Which is correct? If we use SerializedScriptValue, some tests violate the spec of IDL 'any' (http://www.w3.org/TR/WebIDL/#es-any), as you can see in the WIP patch. > FAIL new PopStateEvent('eventType', { state: '' }).state should be undefined (of type undefined). Was (of type string). > FAIL new PopStateEvent('eventType', { state: object1 }).state should be [object Object]. Was [object Object]. > FAIL new PopStateEvent('eventType', { state: {valueOf: function () { return object2; } } }).state should be [object Object]. Was [object Object]. > FAIL new PopStateEvent('eventType', { bubbles: true, cancelable: true, state: object3 }).state should be [object Object]. Was [object Object]. In addition, if we use SerializedScriptValue, the test crashes when we pass a DOM object. (I guess we can fix this crash, but we need to throw some exception anyway.) > //shouldBe("new PopStateEvent('eventType', { state: document }).state", "document"); // Crash!!! On the other hand, if we use ScriptValue, we can get correct test results. With these observations, I guess that we should implement PopStateEvent.state as ScriptValue, but are there any problem to change it from SeriazliedScriptValue to ScriptValue?
> CustomEvent.state is implemented as ScriptValue (https://bugs.webkit.org/show_bug.cgi?id=67248), and PopStateEvent.detail is implemented as SerializedScriptValue. Correction: CustomEvent.detail is implemented as ScriptValue (https://bugs.webkit.org/show_bug.cgi?id=67248), and PopStateEvent.state is implemented as SerializedScriptValue.
For now, I would match what the event already has, and file follow up bugs.
Created attachment 107472 [details] Patch
(In reply to comment #5) > For now, I would match what the event already has, and file follow up bugs. Sam: Thanks. If the patch is OK, I will file the follow-up bugs.
Comment on attachment 107472 [details] Patch View in context: https://bugs.webkit.org/attachment.cgi?id=107472&action=review > Source/WebCore/dom/PopStateEvent.cpp:36 > +PopStateEventInit::PopStateEventInit() > +{ > + state = SerializedScriptValue::create(); This should probably use initializer syntax.
Comment on attachment 107472 [details] Patch Clearing flags on attachment: 107472 Committed r95262: <http://trac.webkit.org/changeset/95262>
All reviewed patches have been landed. Closing bug.