/* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this file, * You can obtain one at http://mozilla.org/MPL/2.0/. */ include protocol PBackground; using mozilla::dom::asmjscache::Metadata from "mozilla/dom/asmjscache/AsmJSCache.h"; using JS::AsmJSCacheResult from "mozilla/dom/asmjscache/AsmJSCache.h"; namespace mozilla { namespace dom { namespace asmjscache { union OpenMetadataForReadResponse { AsmJSCacheResult; uint32_t; }; protocol PAsmJSCacheEntry { manager PBackground; // When the cache is opened to read, the parent process sends over the // origin's Metadata so the child process can select the cache entry to open // (based on hash) and notify the parent (via SelectCacheFileToRead). child: async OnOpenMetadataForRead(Metadata metadata); parent: async SelectCacheFileToRead(OpenMetadataForReadResponse response); child: // Once the cache file has been opened, the child is notified and sent an // open file descriptor. async OnOpenCacheFile(int64_t fileSize, FileDescriptor fileDesc); parent: // When the child process is done with the cache entry, the parent process // is notified (via Close). async Close(); child: // When there's an error during the opening phase, the child process is // notified (via __delete__) and sent an error result. // When the parent process receives the Close message, it closes the cache // entry on the parent side and the child is notified (via __delete__). // The protocol is destroyed in both cases. async __delete__(AsmJSCacheResult result); }; } // namespace asmjscache } // namespace dom } // namespace mozilla