Awesome, thanks for working to unify this stuff baku! Can this stuff be applied to StackScopedClone (used by Cu.cloneInto etc), which currently does this stuff manually in ExportHelpers.cpp?
On Fri, Sep 4, 2015 at 1:12 AM, Andrea Marchesini <amarches...@mozilla.com> wrote: > Hi all, > > In these days I landed quite a few patches to replace the use of > JSAutoStructuredCloneBuffer with something "better": StructuredCloneHelper. > > First of all, the reasons why I did it, are: > > 1. we had many postMessage() methods fully out of sync in terms of which > clonable/transferable objects we were supporting. Now MessagePort, > BroadcastChannel, window and worker and (partially) IPC share the same code > base. > > 2. We had several regressions about memory management of > clonable/transferrable objects. At least now we have only 1 code base to > maintain and fix. > > How it works: > > 1. StructuredCloneHelperInternal is base class that uses > JSAutoStructuredCloneBuffer internally and exposes the > JSStructuredCloneCallbacks as virtual methods. > For some custom use of JSAutoStructuredCloneBuffer (like Console API in > workers or PromiseWorkerProxy - bug 1198814) you can use this class. > > 2. Probably what you really want to use is StructuredCloneHelper. In its > CTOR you must decide if: > a. you want to support the cloning of DOM objects (such as Blob, FileList, > ImageData, FormData, etc...): CloningSupported/CloningNotSupported > b. if you want to support the transferring of DOM objects (currently only > MessagePort): TransferringSupported/TransferringNotSupported > c. what is the most generic context where the "Read" could run. Here we > have 3 options: SameProcessSameThread (window to window for instance), > SameProcessDifferentThread (window to worker), DifferentProcess > (MessagePort? ipc? all that stuff). > > 3. For IPC communication we have a particular class: > StructuredCloneIPCHelper. > > Next steps: > > I'm currently (on vacation, but) working on another step: I want to remove > JSAutoStructuredCloneBuffer, OwningSerializedStructuredCloneBuffer and > SerializedStructuredCloneBuffer from IPC serialization. Bug: 1201806. > Please, avoid the use of JSAutoStructuredCloneBuffer in DOM tree. And if > you have a particular use-cases where StructuredCloneHelper doesn't work, > let me know and we can find a solution. > > b > _______________________________________________ > dev-platform mailing list > dev-platform@lists.mozilla.org > https://lists.mozilla.org/listinfo/dev-platform > _______________________________________________ dev-platform mailing list dev-platform@lists.mozilla.org https://lists.mozilla.org/listinfo/dev-platform