From 6bf0a5cb5034a7e684dcc3500e841785237ce2dd Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 19:32:43 +0200 Subject: Adding upstream version 1:115.7.0. Signed-off-by: Daniel Baumann --- .../test/unit/resources/testJaBaseMsgFolder.jsm | 70 ++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 comm/mailnews/jsaccount/test/unit/resources/testJaBaseMsgFolder.jsm (limited to 'comm/mailnews/jsaccount/test/unit/resources/testJaBaseMsgFolder.jsm') diff --git a/comm/mailnews/jsaccount/test/unit/resources/testJaBaseMsgFolder.jsm b/comm/mailnews/jsaccount/test/unit/resources/testJaBaseMsgFolder.jsm new file mode 100644 index 0000000000..7f56bbdaef --- /dev/null +++ b/comm/mailnews/jsaccount/test/unit/resources/testJaBaseMsgFolder.jsm @@ -0,0 +1,70 @@ +/* -*- indent-tabs-mode: nil; js-indent-level: 2 -*- */ +/* vim: set ts=2 et sw=2 tw=80 filetype=javascript: */ +/* Any copyright is dedicated to the Public Domain. + http://creativecommons.org/publicdomain/zero/1.0/ */ + +/** + This file creates a JS-based override of the JaMsgFolder implementation. It + demos a minimal JS class, and is also used in testing the additional methods + added to JaMsgFolder.cpp that are not in nsMsgDBFolder.cpp + */ + +const EXPORTED_SYMBOLS = ["JaBaseMsgFolderProperties", "JaBaseMsgFolder"]; + +// A partial JavaScript implementation of the base server methods. + +const JaBaseMsgFolderProperties = { + baseContractID: "@mozilla.org/jacppmsgfolderdelegator;1", + baseInterfaces: [ + Ci.nsISupports, + Ci.nsIMsgFolder, + Ci.nsIDBChangeListener, + Ci.nsIUrlListener, + Ci.nsIJunkMailClassificationListener, + Ci.nsIMsgTraitClassificationListener, + Ci.nsIInterfaceRequestor, + Ci.msgIOverride, + ], + delegateInterfaces: ["nsIMsgFolder"], + contractID: "@mozilla.org/mail/folder-factory;1?name=testja", + classID: Components.ID("{8508ddeb-3eab-4877-a420-297518f62371}"), +}; + +function JaBaseMsgFolder(aDelegator, aBaseInterfaces) { + // Typical boilerplate to include in all implementations. + + // Object delegating method calls to the appropriate XPCOM object. + // Weak because it owns us. + this.delegator = Cu.getWeakReference(aDelegator); + + // Base implementation of methods with no overrides. + this.cppBase = aDelegator.cppBase; + + // cppBase class sees all interfaces + aBaseInterfaces.forEach(iface => this.cppBase instanceof iface); +} + +JaBaseMsgFolder.prototype = { + // Typical boilerplate to include in all implementations. + + // Flag this item as CPP needs to delegate to JS. + _JsPrototypeToDelegate: true, + + // QI to the (partially implemented only) interfaces. + QueryInterface: ChromeUtils.generateQI( + JaBaseMsgFolderProperties.delegateInterfaces + ), + + // Used to access an instance as JS, bypassing XPCOM. + get wrappedJSObject() { + return this; + }, + + // Dynamically-generated list of delegate methods. + delegateList: null, + + // nsIMsgFolder overrides. + get incomingServerType() { + return "testja"; + }, +}; -- cgit v1.2.3