def _fixArg(self, arg): if arg is None: return [] # Already a tuple? This means the original Python args have been # found and passed directly. if type(arg) == types.TupleType: return arg try: argv = arg.QueryInterface(components.interfaces.nsIArray) except COMException, why: if why.errno != nsError.NS_NOINTERFACE: raise # This is not an array - see if it is a variant or primitive. try: var = arg.queryInterface(components.interfaces.nsIVariant) parent = None if self.globalObject is not None: parent = self.globalObject._comobj_ if parent is None: logger.warning("_fixArg for context with no global??") return _xpcom.GetVariantValue(var, parent) except COMException, why: if why.errno != nsError.NS_NOINTERFACE: raise try: return primitives.GetPrimitive(arg) except COMException, why: if why.errno != nsError.NS_NOINTERFACE: raise
def testExplicitFloat(self): ob = xpcom.server.WrapObject( ExplicitSupportsFloat(), components.interfaces.nsISupports) self.failUnlessEqual(primitives.GetPrimitive(ob), 99.99)
def testExplicitUnicode(self): ob = xpcom.server.WrapObject( ExplicitSupportsUnicode(), components.interfaces.nsISupports) self.failUnlessEqual(primitives.GetPrimitive(ob), ExplicitSupportsUnicode.test_data) self.failUnlessEqual(type(primitives.GetPrimitive(ob)), unicode)
def testExplicitString(self): ob = xpcom.server.WrapObject( ExplicitSupportsString(), components.interfaces.nsISupports) self.failUnlessEqual(primitives.GetPrimitive(ob), "<MyExplicitStrObject>")