gecko-dev/dom/indexedDB/IndexedDatabase.h
Jan Varga e12ce7d680 Bug 1561876 - Remove support for de-serializing WebAssembly.Modules in IDB; r=asuth
This patch removes support for de-serialization of WebAssembly.Modules. The
preprocessing which was added just for WebAssembly.Modules is not removed since
it can be reused for more efficient de-serialization of big structured clones
which are stored as standalone files. (standalone files can be read and
uncompressed in content process instead of the parent process). So this patch
also adjusts the preprocessing to support that. However the preprocessing is not
fully implemented (we lack support for indexes and cursors) and there's a
theoretical problem with ordering of IDB requests when preprocessing is
involved, so this feature is kept behind a pref for now.

Differential Revision: https://phabricator.services.mozilla.com/D36879

--HG--
rename : dom/indexedDB/test/unit/test_wasm_recompile.js => dom/indexedDB/test/unit/test_wasm_get_values.js
rename : dom/indexedDB/test/unit/wasm_recompile_profile.zip => dom/indexedDB/test/unit/wasm_get_values_profile.zip
2019-07-03 12:23:33 +02:00

85 lines
2.0 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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/. */
#ifndef mozilla_dom_indexeddatabase_h__
#define mozilla_dom_indexeddatabase_h__
#include "js/StructuredClone.h"
#include "nsCOMPtr.h"
#include "nsTArray.h"
namespace mozilla {
namespace dom {
class Blob;
class IDBDatabase;
class IDBMutableFile;
namespace indexedDB {
class FileInfo;
class SerializedStructuredCloneReadInfo;
struct StructuredCloneFile {
enum FileType {
eBlob,
eMutableFile,
eStructuredClone,
eWasmBytecode,
eWasmCompiled,
eEndGuard
};
RefPtr<Blob> mBlob;
RefPtr<IDBMutableFile> mMutableFile;
RefPtr<FileInfo> mFileInfo;
FileType mType;
// In IndexedDatabaseInlines.h
inline StructuredCloneFile();
// In IndexedDatabaseInlines.h
inline ~StructuredCloneFile();
// In IndexedDatabaseInlines.h
inline bool operator==(const StructuredCloneFile& aOther) const;
};
struct StructuredCloneReadInfo {
JSStructuredCloneData mData;
nsTArray<StructuredCloneFile> mFiles;
IDBDatabase* mDatabase;
bool mHasPreprocessInfo;
// In IndexedDatabaseInlines.h
inline explicit StructuredCloneReadInfo(JS::StructuredCloneScope aScope);
// In IndexedDatabaseInlines.h
inline StructuredCloneReadInfo();
// In IndexedDatabaseInlines.h
inline ~StructuredCloneReadInfo();
// In IndexedDatabaseInlines.h
inline StructuredCloneReadInfo(StructuredCloneReadInfo&& aOther);
// In IndexedDatabaseInlines.h
inline StructuredCloneReadInfo& operator=(StructuredCloneReadInfo&& aOther);
// In IndexedDatabaseInlines.h
inline MOZ_IMPLICIT StructuredCloneReadInfo(
SerializedStructuredCloneReadInfo&& aOther);
// In IndexedDatabaseInlines.h
inline size_t Size() const;
};
} // namespace indexedDB
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_indexeddatabase_h__