summaryrefslogtreecommitdiffstats
path: root/comm/mailnews/jsaccount/public
diff options
context:
space:
mode:
Diffstat (limited to 'comm/mailnews/jsaccount/public')
-rw-r--r--comm/mailnews/jsaccount/public/moz.build15
-rw-r--r--comm/mailnews/jsaccount/public/msgIDelegateList.idl19
-rw-r--r--comm/mailnews/jsaccount/public/msgIJaUrl.idl27
-rw-r--r--comm/mailnews/jsaccount/public/msgIOverride.idl42
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;
+};