diff options
Diffstat (limited to 'comm/mailnews/import/test/unit/resources/mock_windows_reg_factory.js')
-rw-r--r-- | comm/mailnews/import/test/unit/resources/mock_windows_reg_factory.js | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/comm/mailnews/import/test/unit/resources/mock_windows_reg_factory.js b/comm/mailnews/import/test/unit/resources/mock_windows_reg_factory.js new file mode 100644 index 0000000000..19583d5007 --- /dev/null +++ b/comm/mailnews/import/test/unit/resources/mock_windows_reg_factory.js @@ -0,0 +1,84 @@ +var { MockRegistrar } = ChromeUtils.importESModule( + "resource://testing-common/MockRegistrar.sys.mjs" +); + +var gCid; + +function MockWindowsRegKey(registryData) { + this._registryData = registryData; +} + +MockWindowsRegKey.prototype = { + QueryInterface: ChromeUtils.generateQI(["nsIWindowsRegKey"]), + + open(aRootKey, aRelPath, aMode) { + if (!this._registryData[aRelPath]) { + throw Components.Exception("", Cr.NS_ERROR_FAILURE); + } + this._keyPath = aRelPath; + }, + + close() {}, + + openChild(aRelPath, aMode) { + if ( + !this._registryData[this._keyPath] || + !this._registryData[this._keyPath][aRelPath] + ) { + throw Components.Exception("", Cr.NS_ERROR_FAILURE); + } + + let child = new MockWindowsRegKey({}); + let newKeyPath = this._keyPath + "\\" + aRelPath; + child._keyPath = newKeyPath; + child._registryData[newKeyPath] = + this._registryData[this._keyPath][aRelPath]; + return child; + }, + + get childCount() { + return Object.keys(this._registryData[this._keyPath]).length; + }, + + getChildName(aIndex) { + let keys = Object.keys(this._registryData[this._keyPath]); + let keyAtIndex = keys[aIndex]; + if (!keyAtIndex) { + throw Components.Exception("", Cr.NS_ERROR_FAILURE); + } + + return keyAtIndex; + }, + + _readValue(aName) { + if ( + !this._registryData[this._keyPath] || + !this._registryData[this._keyPath][aName] + ) { + throw Components.Exception("", Cr.NS_ERROR_FAILURE); + } + + return this._registryData[this._keyPath][aName]; + }, + + readIntValue(aName) { + return this._readValue(aName); + }, + + readStringValue(aName) { + return this._readValue(aName); + }, +}; + +/* exported setup_mock_registry, teardown_mock_registry */ +function setup_mock_registry(mockRegistry) { + gCid = MockRegistrar.register( + "@mozilla.org/windows-registry-key;1", + MockWindowsRegKey, + [mockRegistry] + ); +} + +function teardown_mock_registry() { + MockRegistrar.unregister(gCid); +} |