diff options
Diffstat (limited to 'startupcache/nsIStartupCache.idl')
-rw-r--r-- | startupcache/nsIStartupCache.idl | 65 |
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; +}; + |