diff options
Diffstat (limited to 'desktop/source/deployment/registry/executable/dp_executable.cxx')
-rw-r--r-- | desktop/source/deployment/registry/executable/dp_executable.cxx | 38 |
1 files changed, 26 insertions, 12 deletions
diff --git a/desktop/source/deployment/registry/executable/dp_executable.cxx b/desktop/source/deployment/registry/executable/dp_executable.cxx index 968ee7297b0f..5ec739153831 100644 --- a/desktop/source/deployment/registry/executable/dp_executable.cxx +++ b/desktop/source/deployment/registry/executable/dp_executable.cxx @@ -71,6 +71,7 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend bool getFileAttributes(sal_uInt64& out_Attributes); bool isUrlTargetInExtension(); + public: inline ExecutablePackageImpl( ::rtl::Reference<PackageRegistryBackend> const & myBackend, @@ -92,8 +93,8 @@ class BackendImpl : public ::dp_registry::backend::PackageRegistryBackend OUString const & identifier, Reference<XCommandEnvironment> const & xCmdEnv ); void addDataToDb(OUString const & url); - bool isRegisteredInDb(OUString const & url); - void deleteDataFromDb(OUString const & url); + bool hasActiveEntry(OUString const & url); + void revokeEntryFromDb(OUString const & url); Reference<deployment::XPackageTypeInfo> m_xExecutableTypeInfo; std::auto_ptr<ExecutableBackendDb> m_backendDb; @@ -104,6 +105,9 @@ public: // XPackageRegistry virtual Sequence< Reference<deployment::XPackageTypeInfo> > SAL_CALL getSupportedPackageTypes() throw (RuntimeException); + virtual void SAL_CALL packageRemoved(OUString const & url, OUString const & mediaType) + throw (deployment::DeploymentException, + uno::RuntimeException); using PackageRegistryBackend::disposing; }; @@ -134,20 +138,20 @@ void BackendImpl::addDataToDb(OUString const & url) m_backendDb->addEntry(url); } -bool BackendImpl::isRegisteredInDb(OUString const & url) +void BackendImpl::revokeEntryFromDb(OUString const & url) { - bool ret = false; if (m_backendDb.get()) - ret = m_backendDb->getEntry(url); - return ret; + m_backendDb->revokeEntry(url); } -void BackendImpl::deleteDataFromDb(OUString const & url) +bool BackendImpl::hasActiveEntry(OUString const & url) { if (m_backendDb.get()) - m_backendDb->removeEntry(url); + return m_backendDb->hasActiveEntry(url); + return false; } + // XPackageRegistry Sequence< Reference<deployment::XPackageTypeInfo> > BackendImpl::getSupportedPackageTypes() throw (RuntimeException) @@ -156,6 +160,14 @@ BackendImpl::getSupportedPackageTypes() throw (RuntimeException) & m_xExecutableTypeInfo, 1); } +void BackendImpl::packageRemoved(OUString const & url, OUString const & /*mediaType*/) + throw (deployment::DeploymentException, + uno::RuntimeException) +{ + if (m_backendDb.get()) + m_backendDb->removeEntry(url); +} + // PackageRegistryBackend Reference<deployment::XPackage> BackendImpl::bindPackage_( OUString const & url, OUString const & mediaType, sal_Bool bRemoved, @@ -217,7 +229,7 @@ BackendImpl::ExecutablePackageImpl::isRegistered_( ::rtl::Reference<dp_misc::AbortChannel> const &, Reference<XCommandEnvironment> const & ) { - bool registered = getMyBackend()->isRegisteredInDb(getURL()); + bool registered = getMyBackend()->hasActiveEntry(getURL()); return beans::Optional< beans::Ambiguous<sal_Bool> >( sal_True /* IsPresent */, beans::Ambiguous<sal_Bool>( @@ -248,7 +260,8 @@ void BackendImpl::ExecutablePackageImpl::processPackage_( else if (getMyBackend()->m_context.equals(OUSTR("shared"))) attributes |= (osl_File_Attribute_OwnExe | osl_File_Attribute_GrpExe | osl_File_Attribute_OthExe); - else if (!getMyBackend()->m_context.equals(OUSTR("bundled"))) + else if (!getMyBackend()->m_context.equals(OUSTR("bundled")) + && !getMyBackend()->m_context.equals(OUSTR("bundled_prereg"))) //Bundled extension are required to be in the properly //installed. That is an executable must have the right flags OSL_ASSERT(0); @@ -261,7 +274,7 @@ void BackendImpl::ExecutablePackageImpl::processPackage_( } else { - getMyBackend()->deleteDataFromDb(getURL()); + getMyBackend()->revokeEntryFromDb(getURL()); } } @@ -277,7 +290,8 @@ bool BackendImpl::ExecutablePackageImpl::isUrlTargetInExtension() sExtensionDir = dp_misc::expandUnoRcTerm(OUSTR("$UNO_USER_PACKAGES_CACHE")); else if (getMyBackend()->m_context.equals(OUSTR("shared"))) sExtensionDir = dp_misc::expandUnoRcTerm(OUSTR("$UNO_SHARED_PACKAGES_CACHE")); - else if (getMyBackend()->m_context.equals(OUSTR("bundled"))) + else if (getMyBackend()->m_context.equals(OUSTR("bundled")) + || getMyBackend()->m_context.equals(OUSTR("bundled_prereg"))) sExtensionDir = dp_misc::expandUnoRcTerm(OUSTR("$BUNDLED_EXTENSIONS")); else OSL_ASSERT(0); |