We'll probably want to do something more accurate in the future with a custom clang static analysis pass which validates that XPIDL interfaces have the expected vtable and struct layout, however doing so would be more involved than the string matching done in this patch. In addition to checking for extra virtual methods, we'll likely also want to check for data members on interfaces, and reject them unless the class is marked as `[builtinclass]` in addition to some other attribute which we'll need to add to prevent them from being implemented in Rust (as c++ data members will not be reflected by the rust macro). There were 2 instances of a comment which contained the word 'virtual' within a CDATA block. These comments were moved out of the CDATA block to avoid triggering the error. Differential Revision: https://phabricator.services.mozilla.com/D151068
112 lines
4.1 KiB
Plaintext
112 lines
4.1 KiB
Plaintext
/* -*- 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 "nsISupports.idl"
|
|
#include "nsISimpleEnumerator.idl"
|
|
|
|
%{C++
|
|
#include "mozilla/MemoryReporting.h"
|
|
|
|
namespace mozilla {
|
|
namespace dom {
|
|
class ContentParent;
|
|
}
|
|
namespace ipc {
|
|
class FileDescriptor;
|
|
}
|
|
}
|
|
|
|
// Define Contractid and CID
|
|
// {D85A17C1-AA7C-11d2-9B8C-00805F8A16D9}
|
|
#define NS_STRINGBUNDLESERVICE_CID \
|
|
{ 0xd85a17c1, 0xaa7c, 0x11d2, \
|
|
{ 0x9b, 0x8c, 0x0, 0x80, 0x5f, 0x8a, 0x16, 0xd9 } }
|
|
|
|
#define NS_STRINGBUNDLE_CONTRACTID "@mozilla.org/intl/stringbundle;1"
|
|
|
|
%}
|
|
|
|
[ptr] native ContentParent(mozilla::dom::ContentParent);
|
|
[ref] native FileDescriptor(mozilla::ipc::FileDescriptor);
|
|
native MallocSizeOf(mozilla::MallocSizeOf);
|
|
|
|
[scriptable, builtinclass, uuid(D85A17C2-AA7C-11d2-9B8C-00805F8A16D9)]
|
|
interface nsIStringBundle : nsISupports
|
|
{
|
|
AString GetStringFromID(in long aID);
|
|
|
|
// This method is mostly used from JS, where AUTF8String is appropriate.
|
|
[binaryname(GetStringFromAUTF8Name)]
|
|
AString GetStringFromName(in AUTF8String aName);
|
|
|
|
// This method is mostly used from C++, where |string| is appropriate because
|
|
// the names are most often 8-bit string literals (normally ASCII, though
|
|
// u8"foo" literals will also work).
|
|
[noscript, binaryname(GetStringFromName)]
|
|
AString GetStringFromNameCpp(in string aName);
|
|
|
|
// this is kind of like ssprintf - except that you can
|
|
// only pass it unicode strings, using the %S formatting character.
|
|
// the id or name should refer to a string in the bundle that
|
|
// uses %S.. do NOT try to use any other types.
|
|
// this uses nsTextFormatter::ssprintf to do the dirty work.
|
|
AString formatStringFromID(in long aID, in Array<AString> params);
|
|
|
|
// This method is mostly used from JS, where AUTF8String is appropriate.
|
|
[binaryname(FormatStringFromAUTF8Name)]
|
|
AString formatStringFromName(in AUTF8String aName, in Array<AString> params);
|
|
|
|
// This method is mostly used from C++, where |string| is appropriate because
|
|
// the names are most often 8-bit string literals (normally ASCII, though
|
|
// u8"foo" literals will also work).
|
|
[noscript, binaryname(FormatStringFromName)]
|
|
AString formatStringFromNameCpp(in string aName, in Array<AString> params);
|
|
|
|
/*
|
|
Implements nsISimpleEnumerator, replaces nsIEnumerator
|
|
*/
|
|
nsISimpleEnumerator getSimpleEnumeration();
|
|
// Preloads string bundle data asynchronously
|
|
void asyncPreload();
|
|
|
|
[notxpcom, nostdcall] size_t SizeOfIncludingThis(in MallocSizeOf aMallocSizeOf);
|
|
[notxpcom, nostdcall] size_t SizeOfIncludingThisIfUnshared(in MallocSizeOf aMallocSizeOf);
|
|
};
|
|
|
|
[scriptable, builtinclass, uuid(D85A17C0-AA7C-11d2-9B8C-00805F8A16D9)]
|
|
interface nsIStringBundleService : nsISupports
|
|
{
|
|
nsIStringBundle createBundle(in string aURLSpec);
|
|
|
|
/**
|
|
* Formats a message string from a status code and status arguments.
|
|
* @param aStatus - The status code. This is mapped into a string ID and
|
|
* and used in the string lookup process (see nsIErrorService).
|
|
* @param aStatusArg - The status message argument(s). Multiple arguments
|
|
* can be separated by newline ('\n') characters.
|
|
* @return the formatted message
|
|
*/
|
|
AString formatStatusMessage(in nsresult aStatus, in wstring aStatusArg);
|
|
|
|
/**
|
|
* flushes the string bundle cache - useful when the locale changes or
|
|
* when we need to get some extra memory back
|
|
*
|
|
* at some point, we might want to make this flush all the bundles,
|
|
* because any bundles that are floating around when the locale changes
|
|
* will suddenly contain bad data
|
|
*
|
|
*/
|
|
void flushBundles();
|
|
|
|
[notxpcom, nostdcall] size_t sizeOfIncludingThis(in MallocSizeOf aMallocSizeOf);
|
|
|
|
[notxpcom, nostdcall] void sendContentBundles(in ContentParent aContentParent);
|
|
|
|
[notxpcom, nostdcall] void registerContentBundle(in ACString aBundleURL,
|
|
[const] in FileDescriptor aMapFile,
|
|
in size_t aMapSize);
|
|
};
|