summaryrefslogtreecommitdiffstats
path: root/stoc
diff options
context:
space:
mode:
authorTor Lillqvist <tml@collabora.com>2018-04-25 19:08:42 +0300
committerTor Lillqvist <tml@collabora.com>2018-05-31 15:46:25 +0300
commit3c041720304ec77202741b5d5c8df9b93bc70a70 (patch)
treee2559f7e5706d44fa0f2d0267123452eddaae0c4 /stoc
parentNeed to enter the AutomationInvokedZone here, too (diff)
downloadcore-3c041720304ec77202741b5d5c8df9b93bc70a70.tar.gz
core-3c041720304ec77202741b5d5c8df9b93bc70a70.zip
Simplify: Use AutomationInvokedZone::isActive()
Don't need the mbFromOLE boolean flag and the special "FromOLE" parameter passed to the InvocationService:: createInstanceWithArguments(). Change-Id: I05e10a78955d87cb7c37e198c60c3ddcfdbc4275
Diffstat (limited to 'stoc')
-rw-r--r--stoc/Library_invocation.mk1
-rw-r--r--stoc/source/invocation/invocation.cxx39
2 files changed, 13 insertions, 27 deletions
diff --git a/stoc/Library_invocation.mk b/stoc/Library_invocation.mk
index 42f17556433c..dc22a2acb51b 100644
--- a/stoc/Library_invocation.mk
+++ b/stoc/Library_invocation.mk
@@ -16,6 +16,7 @@ $(eval $(call gb_Library_use_udk_api,invocation))
$(eval $(call gb_Library_use_libraries,invocation,\
cppu \
cppuhelper \
+ comphelper \
sal \
))
diff --git a/stoc/source/invocation/invocation.cxx b/stoc/source/invocation/invocation.cxx
index 5ffbb9cf586e..619c6f8942b7 100644
--- a/stoc/source/invocation/invocation.cxx
+++ b/stoc/source/invocation/invocation.cxx
@@ -18,6 +18,7 @@
*/
#include <osl/mutex.hxx>
+#include <comphelper/automationinvokedzone.hxx>
#include <cppuhelper/queryinterface.hxx>
#include <cppuhelper/exc_hlp.hxx>
#include <cppuhelper/weak.hxx>
@@ -99,8 +100,7 @@ class Invocation_Impl
public:
Invocation_Impl( const Any & rAdapted, const Reference<XTypeConverter> &,
const Reference<XIntrospection> &,
- const Reference<XIdlReflection> &,
- bool bFromOLE );
+ const Reference<XIdlReflection> & );
// XInterface
virtual Any SAL_CALL queryInterface( const Type & aType) override;
@@ -214,8 +214,6 @@ private:
Reference<XExactName> _xENDirect, _xENIntrospection;
-
- bool mbFromOLE;
};
@@ -224,13 +222,11 @@ Invocation_Impl::Invocation_Impl
const Any & rAdapted,
const Reference<XTypeConverter> & rTC,
const Reference<XIntrospection> & rI,
- const Reference<XIdlReflection> & rCR,
- bool bFromOLE
+ const Reference<XIdlReflection> & rCR
)
: xTypeConverter( rTC )
, xIntrospection( rI )
, xCoreReflection( rCR )
- , mbFromOLE( bFromOLE )
{
setMaterial( rAdapted );
}
@@ -254,7 +250,7 @@ Any SAL_CALL Invocation_Impl::queryInterface( const Type & aType )
{
// Invocation does not support XExactName, if direct object supports
// XInvocation, but not XExactName. Except when called from OLE Automation.
- if (mbFromOLE ||
+ if (comphelper::Automation::AutomationInvokedZone::isActive() ||
(_xDirect.is() && _xENDirect.is()) ||
(!_xDirect.is() && _xENIntrospection.is()))
{
@@ -308,7 +304,7 @@ Any SAL_CALL Invocation_Impl::queryInterface( const Type & aType )
{
// Invocation does not support XInvocation2, if direct object supports
// XInvocation, but not XInvocation2.
- if ( mbFromOLE ||
+ if ( comphelper::Automation::AutomationInvokedZone::isActive() ||
( _xDirect.is() && _xDirect2.is()) ||
(!_xDirect.is() && _xIntrospectionAccess.is() ) )
{
@@ -352,7 +348,7 @@ void Invocation_Impl::setMaterial( const Any& rMaterial )
// First do this outside the guard
_xDirect.set( rMaterial, UNO_QUERY );
- if( !mbFromOLE && _xDirect.is() )
+ if( !comphelper::Automation::AutomationInvokedZone::isActive() && _xDirect.is() )
{
// Consult object directly
_xElementAccess.set( _xDirect, UNO_QUERY );
@@ -448,7 +444,7 @@ Reference<XIntrospectionAccess> Invocation_Impl::getIntrospection()
sal_Bool Invocation_Impl::hasMethod( const OUString& Name )
{
- if (!mbFromOLE && _xDirect.is())
+ if (!comphelper::Automation::AutomationInvokedZone::isActive() && _xDirect.is())
return _xDirect->hasMethod( Name );
if( _xIntrospectionAccess.is() )
return _xIntrospectionAccess->hasMethod( Name, MethodConcept::ALL ^ MethodConcept::DANGEROUS );
@@ -461,7 +457,7 @@ sal_Bool Invocation_Impl::hasProperty( const OUString& Name )
if (_xDirect.is())
{
bool bRet = _xDirect->hasProperty( Name );
- if (bRet || !mbFromOLE)
+ if (bRet || !comphelper::Automation::AutomationInvokedZone::isActive())
return bRet;
}
// PropertySet
@@ -484,7 +480,7 @@ Any Invocation_Impl::getValue( const OUString& PropertyName )
}
catch (UnknownPropertyException &)
{
- if (!mbFromOLE)
+ if (!comphelper::Automation::AutomationInvokedZone::isActive())
throw;
}
try
@@ -528,7 +524,7 @@ void Invocation_Impl::setValue( const OUString& PropertyName, const Any& Value )
}
catch (UnknownPropertyException &)
{
- if (!mbFromOLE)
+ if (!comphelper::Automation::AutomationInvokedZone::isActive())
throw;
}
try
@@ -602,7 +598,7 @@ void Invocation_Impl::setValue( const OUString& PropertyName, const Any& Value )
Any Invocation_Impl::invoke( const OUString& FunctionName, const Sequence<Any>& InParams,
Sequence<sal_Int16>& OutIndices, Sequence<Any>& OutParams )
{
- if (!mbFromOLE && _xDirect.is())
+ if (!comphelper::Automation::AutomationInvokedZone::isActive() && _xDirect.is())
return _xDirect->invoke( FunctionName, InParams, OutIndices, OutParams );
if (_xIntrospectionAccess.is())
@@ -1111,22 +1107,11 @@ Reference<XInterface> InvocationService::createInstance()
Reference<XInterface> InvocationService::createInstanceWithArguments(
const Sequence<Any>& rArguments )
{
- if (rArguments.getLength() == 2)
- {
- OUString aArg1;
- if ((rArguments[1] >>= aArg1) &&
- aArg1 == "FromOLE")
- {
- return Reference< XInterface >
- ( *new Invocation_Impl( *rArguments.getConstArray(),
- xTypeConverter, xIntrospection, xCoreReflection, true ) );
- }
- }
if (rArguments.getLength() == 1)
{
return Reference< XInterface >
( *new Invocation_Impl( *rArguments.getConstArray(),
- xTypeConverter, xIntrospection, xCoreReflection, false ) );
+ xTypeConverter, xIntrospection, xCoreReflection ) );
}
//TODO:throw( Exception("no default construction of invocation adapter possible!", *this) );