Kaydet (Commit) 6f9c3bc8 authored tarafından Stephan Bergmann's avatar Stephan Bergmann

fdo#57224: Preserve disabled-state across reinstallDeployedExtensions

Change-Id: I8d65b76fd93b63b51db88b7b09902ba64732dd97
üst aafe2fcb
...@@ -65,6 +65,7 @@ ...@@ -65,6 +65,7 @@
#include <list> #include <list>
#include <boost/unordered_map.hpp> #include <boost/unordered_map.hpp>
#include <algorithm> #include <algorithm>
#include <set>
namespace deploy = com::sun::star::deployment; namespace deploy = com::sun::star::deployment;
namespace lang = com::sun::star::lang; namespace lang = com::sun::star::lang;
...@@ -1234,6 +1235,31 @@ void ExtensionManager::reinstallDeployedExtensions( ...@@ -1234,6 +1235,31 @@ void ExtensionManager::reinstallDeployedExtensions(
Reference<deploy::XPackageManager> Reference<deploy::XPackageManager>
xPackageManager = getPackageManager(repository); xPackageManager = getPackageManager(repository);
std::set< OUString > disabledExts;
{
const uno::Sequence< Reference<deploy::XPackage> > extensions(
xPackageManager->getDeployedPackages(xAbortChannel, xCmdEnv));
for ( sal_Int32 pos = 0; pos < extensions.getLength(); ++pos )
{
try
{
beans::Optional< beans::Ambiguous< sal_Bool > > registered(
extensions[pos]->isRegistered(xAbortChannel, xCmdEnv));
if (!registered.IsPresent
|| registered.Value.IsAmbiguous
|| !registered.Value.Value)
{
const OUString id = dp_misc::getIdentifier(extensions[ pos ]);
OSL_ASSERT(!id.isEmpty());
disabledExts.insert(id);
}
}
catch (const lang::DisposedException &)
{
}
}
}
::osl::MutexGuard guard(getMutex()); ::osl::MutexGuard guard(getMutex());
xPackageManager->reinstallDeployedPackages( xPackageManager->reinstallDeployedPackages(
force, xAbortChannel, xCmdEnv); force, xAbortChannel, xCmdEnv);
...@@ -1250,7 +1276,9 @@ void ExtensionManager::reinstallDeployedExtensions( ...@@ -1250,7 +1276,9 @@ void ExtensionManager::reinstallDeployedExtensions(
const OUString id = dp_misc::getIdentifier(extensions[ pos ]); const OUString id = dp_misc::getIdentifier(extensions[ pos ]);
const OUString fileName = extensions[ pos ]->getName(); const OUString fileName = extensions[ pos ]->getName();
OSL_ASSERT(!id.isEmpty()); OSL_ASSERT(!id.isEmpty());
activateExtension(id, fileName, false, true, xAbortChannel, xCmdEnv ); activateExtension(
id, fileName, disabledExts.find(id) != disabledExts.end(),
true, xAbortChannel, xCmdEnv );
} }
catch (const lang::DisposedException &) catch (const lang::DisposedException &)
{ {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment