summaryrefslogtreecommitdiffstats
path: root/dom/interfaces/base/nsIStructuredCloneContainer.idl
diff options
context:
space:
mode:
Diffstat (limited to 'dom/interfaces/base/nsIStructuredCloneContainer.idl')
-rw-r--r--dom/interfaces/base/nsIStructuredCloneContainer.idl77
1 files changed, 77 insertions, 0 deletions
diff --git a/dom/interfaces/base/nsIStructuredCloneContainer.idl b/dom/interfaces/base/nsIStructuredCloneContainer.idl
new file mode 100644
index 000000000..23f11c714
--- /dev/null
+++ b/dom/interfaces/base/nsIStructuredCloneContainer.idl
@@ -0,0 +1,77 @@
+/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ * vim: set ts=8 sw=2 et 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/. */
+
+#include "nsISupports.idl"
+
+interface nsIVariant;
+interface nsIDocument;
+
+%{C++
+#include "js/TypeDecls.h"
+%}
+
+/**
+ * This interface acts as a container for an object serialized using the
+ * structured clone algorithm.
+ *
+ * You can copy an object into an nsIStructuredCloneContainer using
+ * initFromJSVal or initFromBase64. It's an error to initialize an
+ * nsIStructuredCloneContainer more than once.
+ *
+ * Once you've initialized the container, you can get a copy of the object it
+ * stores by calling deserializeToVariant. You can also get a base-64-encoded
+ * string containing a copy of the container's serialized data, using
+ * getDataAsBase64.
+ */
+[scriptable, uuid(c664aae7-0d67-4155-a2dd-a3861778626f)]
+interface nsIStructuredCloneContainer : nsISupports
+{
+ /**
+ * Initialize this structured clone container so it contains a clone of the
+ * given jsval.
+ */
+ [noscript, implicit_jscontext]
+ void initFromJSVal(in jsval aData);
+
+ /**
+ * Initialize this structured clone container from a base-64-encoded byte
+ * stream, stored in aData. aFormatVersion should be the version of the
+ * structured clone algorithm which was used to generate aData.
+ */
+ void initFromBase64(in AString aData, in unsigned long aFormatVersion);
+
+ /**
+ * Deserializes this structured clone container returning it as a jsval.
+ * Can be called on main and worker threads.
+ */
+ [implicit_jscontext]
+ jsval deserializeToJsval();
+
+ /**
+ * Deserialize the object this container holds, returning it wrapped as
+ * an nsIVariant.
+ * Main thread only!
+ */
+ [implicit_jscontext]
+ nsIVariant deserializeToVariant();
+
+ /**
+ * Get this structured clone container's data as a base-64-encoded string.
+ */
+ AString getDataAsBase64();
+
+ /**
+ * Get the size in bytes of this container's serialized data.
+ */
+ readonly attribute unsigned long long serializedNBytes;
+
+ /**
+ * Get the version of the structured clone algorithm which was used to
+ * generate this container's serialized buffer.
+ */
+ readonly attribute unsigned long formatVersion;
+};