summaryrefslogtreecommitdiffstats
path: root/startupcache/nsIStartupCache.idl
diff options
context:
space:
mode:
Diffstat (limited to 'startupcache/nsIStartupCache.idl')
-rw-r--r--startupcache/nsIStartupCache.idl65
1 files changed, 65 insertions, 0 deletions
diff --git a/startupcache/nsIStartupCache.idl b/startupcache/nsIStartupCache.idl
new file mode 100644
index 000000000..b03dcb3cc
--- /dev/null
+++ b/startupcache/nsIStartupCache.idl
@@ -0,0 +1,65 @@
+/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ *
+ * 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 "nsIInputStream.idl"
+#include "nsISupports.idl"
+#include "nsIObserver.idl"
+#include "nsIObjectOutputStream.idl"
+
+%{C++
+#include "mozilla/UniquePtr.h"
+%}
+
+[uuid(25957820-90a1-428c-8739-b0845d3cc534)]
+interface nsIStartupCache : nsISupports
+{
+
+ /** This interface is provided for testing purposes only, basically
+ * just to solve link vagaries. See docs in StartupCache.h
+ * GetBuffer, PutBuffer, and InvalidateCache act as described
+ * in that file. */
+
+ uint32_t getBuffer(in string aID, out charPtr aBuffer);
+%{C++
+ /* A more convenient interface for using from C++. */
+ nsresult GetBuffer(const char* id, mozilla::UniquePtr<char[]>* outbuf, uint32_t* length)
+ {
+ char* buf;
+ nsresult rv = GetBuffer(id, &buf, length);
+ NS_ENSURE_SUCCESS(rv, rv);
+ outbuf->reset(buf);
+ return rv;
+ }
+%}
+
+ void putBuffer(in string aID, in string aBuffer,
+ in uint32_t aLength);
+
+ void invalidateCache();
+
+ void ignoreDiskCache();
+
+ /** In debug builds, wraps this object output stream with a stream that will
+ * detect and prevent the write of a multiply-referenced non-singleton object
+ * during serialization. In non-debug, returns an add-ref'd pointer to
+ * original stream, unwrapped. */
+ nsIObjectOutputStream getDebugObjectOutputStream(in nsIObjectOutputStream aStream);
+
+ /* Allows clients to check whether the one-time writeout after startup
+ * has finished yet, and also to set this variable as needed (so test
+ * code can fire mulitple startup writes if needed).
+ */
+ boolean startupWriteComplete();
+ void resetStartupWriteTimer();
+
+ /* Instruct clients to always post cache ages to Telemetry, even in
+ cases where it would not normally make sense. */
+ void recordAgesAlways();
+
+ /* Allows clients to simulate the behavior of ObserverService. */
+ readonly attribute nsIObserver observer;
+};
+