diff options
author | Rogan Creswick <creswick@gmail.com> | 2013-01-02 15:31:43 -0800 |
---|---|---|
committer | Rogan Creswick <creswick@gmail.com> | 2013-01-02 15:31:43 -0800 |
commit | 91c8d16838b39c7726f6c0a0fb333f5ba38d2494 (patch) | |
tree | 136df17525e5e62f3ddc5b7a6dc71ffd31e2aa42 /tools/addon-sdk-1.7/packages/api-utils/tests/test-xpcom.js | |
parent | f7b228c479bac8828e521a2826d7f57f150da877 (diff) |
updated addon-sdk to 1.12
Diffstat (limited to 'tools/addon-sdk-1.7/packages/api-utils/tests/test-xpcom.js')
-rw-r--r-- | tools/addon-sdk-1.7/packages/api-utils/tests/test-xpcom.js | 217 |
1 files changed, 0 insertions, 217 deletions
diff --git a/tools/addon-sdk-1.7/packages/api-utils/tests/test-xpcom.js b/tools/addon-sdk-1.7/packages/api-utils/tests/test-xpcom.js deleted file mode 100644 index eda3565..0000000 --- a/tools/addon-sdk-1.7/packages/api-utils/tests/test-xpcom.js +++ /dev/null @@ -1,217 +0,0 @@ -/* 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/. */ - -const xpcom = require("api-utils/xpcom"); -const { Cc, Ci, Cm, Cr } = require("chrome"); -const { isCIDRegistered } = Cm.QueryInterface(Ci.nsIComponentRegistrar); -const { Loader } = require("./helpers"); - -exports['test Unknown implements nsISupports'] = function(assert) { - let actual = xpcom.Unknown.new(); - assert.equal(actual.QueryInterface(Ci.nsISupports), - actual, - 'component implements nsISupports'); -}; - -exports['test implement xpcom interfaces'] = function(assert) { - let component = xpcom.Unknown.extend({ - interfaces: [ 'nsIWeakReference' ], - QueryReferent: function() {} - }) - - assert.equal(component.QueryInterface(Ci.nsISupports), - component, - 'component implements nsISupports'); - assert.equal(component.QueryInterface(Ci.nsIWeakReference), - component, - 'component implements specified interface'); - - assert.throws(function() { - component.QueryInterface(Ci.nsIObserver); - }, "component does not implements interface"); - - let actual = component.extend({ - interfaces: [ 'nsIObserver', 'nsIRequestObserver' ], - observe: function() {}, - onStartRequest: function() {}, - onStopRequest: function() {} - }); - - assert.equal(actual.QueryInterface(Ci.nsISupports), - actual, - 'derived component implements nsISupports'); - assert.equal(actual.QueryInterface(Ci.nsIWeakReference), - actual, - 'derived component implements supers interface'); - assert.equal(actual.QueryInterface(Ci.nsIObserver), - actual.QueryInterface(Ci.nsIRequestObserver), - 'derived component implements specified interfaces'); -}; - -exports['test implement factory without contract'] = function(assert) { - let actual = xpcom.Factory.new({ - component: xpcom.Unknown.extend({ - get wrappedJSObject() this, - }) - }); - - assert.ok(isCIDRegistered(actual.id), 'factory is regiseterd'); - xpcom.unregister(actual); - assert.ok(!isCIDRegistered(actual.id), 'factory is unregistered'); -}; - -exports['test implement xpcom factory'] = function(assert) { - let Component = xpcom.Unknown.extend({ - interfaces: [ 'nsIObserver' ], - get wrappedJSObject() this, - observe: function() {} - }); - - let factory = xpcom.Factory.new({ - register: false, - contract: '@jetpack/test/factory;1', - component: Component - }); - - assert.ok(!isCIDRegistered(factory.id), 'factory is not registered'); - xpcom.register(factory); - assert.ok(isCIDRegistered(factory.id), 'factory is registered'); - - let actual = Cc[factory.contract].createInstance(Ci.nsIObserver); - - assert.ok(Component.isPrototypeOf(actual.wrappedJSObject), - "createInstance returnes wrapped factory instances"); - - assert.notEqual(Cc[factory.contract].createInstance(Ci.nsIObserver), - Cc[factory.contract].createInstance(Ci.nsIObserver), - "createInstance returns new instance each time"); -}; - -exports['test implement xpcom service'] = function(assert) { - let actual = xpcom.Service.new({ - contract: '@jetpack/test/service;1', - register: false, - component: xpcom.Unknown.extend({ - get wrappedJSObject() this, - interfaces: [ 'nsIObserver'], - observe: function() {}, - name: 'my-service' - }) - }); - - assert.ok(!isCIDRegistered(actual.id), 'component is not registered'); - xpcom.register(actual); - assert.ok(isCIDRegistered(actual.id), 'service is regiseterd'); - assert.ok(Cc[actual.contract].getService(Ci.nsIObserver).observe, - 'service can be accessed via get service'); - assert.equal(Cc[actual.contract].getService(Ci.nsIObserver).wrappedJSObject, - actual.component, - 'wrappedJSObject is an actual component'); - xpcom.unregister(actual); - assert.ok(!isCIDRegistered(actual.id), 'service is unregistered'); -}; - - -function testRegister(assert, text) { - - const service = xpcom.Service.new({ - description: 'test about:boop page', - contract: '@mozilla.org/network/protocol/about;1?what=boop', - register: false, - component: xpcom.Unknown.extend({ - get wrappedJSObject() this, - interfaces: [ 'nsIAboutModule' ], - newChannel : function(aURI) { - var ios = Cc["@mozilla.org/network/io-service;1"]. - getService(Ci.nsIIOService); - - var channel = ios.newChannel( - "data:text/plain," + text, - null, - null - ); - - channel.originalURI = aURI; - return channel; - }, - getURIFlags: function(aURI) { - return Ci.nsIAboutModule.ALLOW_SCRIPT; - } - }) - }); - - xpcom.register(service); - - assert.equal(isCIDRegistered(service.id), true); - - var aboutFactory = xpcom.factoryByContract(service.contract); - var about = aboutFactory.createInstance(Ci.nsIAboutModule); - - var ios = Cc["@mozilla.org/network/io-service;1"]. - getService(Ci.nsIIOService); - assert.equal( - about.getURIFlags(ios.newURI("http://foo.com", null, null)), - Ci.nsIAboutModule.ALLOW_SCRIPT - ); - - var aboutURI = ios.newURI("about:boop", null, null); - var channel = ios.newChannelFromURI(aboutURI); - var iStream = channel.open(); - var siStream = Cc['@mozilla.org/scriptableinputstream;1'] - .createInstance(Ci.nsIScriptableInputStream); - siStream.init(iStream); - var data = new String(); - data += siStream.read(-1); - siStream.close(); - iStream.close(); - assert.equal(data, text); - - xpcom.unregister(service); - assert.equal(isCIDRegistered(service.id), false); -} - -exports["test register"] = function(assert) { - testRegister(assert, "hai2u"); -}; - -exports["test re-register"] = function(assert) { - testRegister(assert, "hai2u again"); -}; - -exports["test unload"] = function(assert) { - let loader = Loader(module); - let sbxpcom = loader.require("xpcom"); - - let auto = sbxpcom.Factory.new({ - contract: "@mozilla.org/test/auto-unload;1", - description: "test auto", - component: sbxpcom.Unknown.extend({ name: 'auto' }) - }); - - let manual = sbxpcom.Factory.new({ - contract: "@mozilla.org/test/manual-unload;1", - description: "test manual", - register: false, - unregister: false, - component: sbxpcom.Unknown.extend({ name: 'manual' }) - }); - - assert.equal(isCIDRegistered(auto.id), true, 'component registered'); - assert.equal(isCIDRegistered(manual.id), false, 'component not registered'); - - sbxpcom.register(manual) - assert.equal(isCIDRegistered(manual.id), true, - 'component was automatically registered on first instance'); - loader.unload(); - - assert.equal(isCIDRegistered(auto.id), false, - 'component was atumatically unregistered on unload'); - assert.equal(isCIDRegistered(manual.id), true, - 'component was not automatically unregistered on unload'); - sbxpcom.unregister(manual); - assert.equal(isCIDRegistered(manual.id), false, - 'component was manually unregistered on unload'); -}; - -require("test").run(exports) |