diff options
Diffstat (limited to 'comm/mailnews/jsaccount/public')
-rw-r--r-- | comm/mailnews/jsaccount/public/moz.build | 15 | ||||
-rw-r--r-- | comm/mailnews/jsaccount/public/msgIDelegateList.idl | 19 | ||||
-rw-r--r-- | comm/mailnews/jsaccount/public/msgIJaUrl.idl | 27 | ||||
-rw-r--r-- | comm/mailnews/jsaccount/public/msgIOverride.idl | 42 |
4 files changed, 103 insertions, 0 deletions
diff --git a/comm/mailnews/jsaccount/public/moz.build b/comm/mailnews/jsaccount/public/moz.build new file mode 100644 index 0000000000..41715534ff --- /dev/null +++ b/comm/mailnews/jsaccount/public/moz.build @@ -0,0 +1,15 @@ +# -*- Mode: python; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# 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/. + +XPIDL_SOURCES += [ + "msgIDelegateList.idl", + "msgIJaUrl.idl", + "msgIOverride.idl", +] + +EXPORTS += [] + +XPIDL_MODULE = "msgjsaccount" diff --git a/comm/mailnews/jsaccount/public/msgIDelegateList.idl b/comm/mailnews/jsaccount/public/msgIDelegateList.idl new file mode 100644 index 0000000000..0a65596206 --- /dev/null +++ b/comm/mailnews/jsaccount/public/msgIDelegateList.idl @@ -0,0 +1,19 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* 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" + +/** + * This interface provides a list of methods that should be delegated to + * a JsObject rather than a C++ XPCOM base object in JsAccount classes. + */ + +[scriptable, builtinclass, uuid(627D3A34-F8A3-40eb-91FE-E413D6638D27)] +interface msgIDelegateList : nsISupports +{ + /// Method name to delegate to JavaScript. + void add(in ACString aMethod); +}; diff --git a/comm/mailnews/jsaccount/public/msgIJaUrl.idl b/comm/mailnews/jsaccount/public/msgIJaUrl.idl new file mode 100644 index 0000000000..41379ab239 --- /dev/null +++ b/comm/mailnews/jsaccount/public/msgIJaUrl.idl @@ -0,0 +1,27 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* 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" + +/** + * Additional interface supported by JsBaseUrl to allow setting variables that + * are typically done in C++ by overriding classes, which is not allowed in JS. + */ + +[scriptable, uuid(f9148c17-9b67-43bb-b741-4fdfe1aef935)] +interface msgIJaUrl : nsISupports +{ + /** + * Set the URL type, which will be checked by nsIMsgMailNewsUrl::IsUrlType. See + * IsUrlType for possible values. + */ + void setUrlType(in unsigned long type); + + /** + * Set the spec on a URL. + */ + void setSpec(in AUTF8String spec); +}; diff --git a/comm/mailnews/jsaccount/public/msgIOverride.idl b/comm/mailnews/jsaccount/public/msgIOverride.idl new file mode 100644 index 0000000000..cad1bf4157 --- /dev/null +++ b/comm/mailnews/jsaccount/public/msgIOverride.idl @@ -0,0 +1,42 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* vim:set ts=2 sw=2 sts=2 et cindent: */ +/* 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 "msgIDelegateList.idl" + +/** + * Mailnews code typically has a C++ base class for objects, which is then + * specialized for each account type with a C++ subclass of the base class. + * + * This interface provides the ability of JavaScript-based account + * implementations to use the same C++ base classes as core objects, but + * use JavaScript to override methods instead of C++. + */ + +[scriptable, uuid(68075269-8BBD-4a09-AC04-3241BF44F633)] +interface msgIOverride : nsISupports +{ + /** + * + * A list of methods in the C++ base class that will be delegated to the JS + * delegate. This is calculated once, and then a fixed value is set to + * all subsequent instances so that it does not need to be recalculated each + * time. If the value has not yet been set, this will return a new instance. + */ + attribute msgIDelegateList methodsToDelegate; + + /** + * JavaScript-based xpcom object that overrides C++ methods. + */ + attribute nsISupports jsDelegate; + + /** + * C++ class used to implement default functionality. This is used when + * JavaScript methods want to call the base class default action, bypassing a + * possible JS override. + */ + readonly attribute nsISupports cppBase; +}; |