tdf#128523: drop cache directory when restart manager initiates restart

This would allow to re-create cached elements that could be broken.
Restarts include those after a version upgrade (with bugfixes); using
safe mode dialog (after crashes/problems); some configuration changes.
An example of issue fixed by this is bad cached icons from versions
affected by tdf#119020, that still make troubles to users after a year
after the reason of generation of bad icons had been fixed [1, 2, 3].

[1] https://ask.libreoffice.org/en/question/211759
[2] https://ask.libreoffice.org/en/question/215263
[3] https://ask.libreoffice.org/en/question/217831

Change-Id: I2362547c25f8f265915efafa4e224435eda03e20
Reviewed-on: https://gerrit.libreoffice.org/83138
Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Tested-by: Mike Kaganski <mike.kaganski@collabora.com>
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
index 31f7abb..82422c8 100644
--- a/desktop/source/app/app.cxx
+++ b/desktop/source/app/app.cxx
@@ -96,6 +96,7 @@
#include <unotools/configmgr.hxx>
#include <unotools/moduleoptions.hxx>
#include <unotools/localfilehelper.hxx>
#include <unotools/ucbhelper.hxx>
#include <officecfg/Office/Common.hxx>
#include <officecfg/Office/Recovery.hxx>
#include <officecfg/Office/Update.hxx>
@@ -327,6 +328,15 @@ void DoRestartActionsIfNecessary(bool quickstart) {
    }
}

void RemoveIconCacheDirectory()
{
    // See getIconCacheUrl in vcl/source/image/ImplImageTree.cxx
    OUString sUrl = "${$BRAND_BASE_DIR/" LIBO_ETC_FOLDER
        "/" SAL_CONFIGFILE("bootstrap") ":UserInstallation}/cache";
    rtl::Bootstrap::expandMacros(sUrl);
    utl::UCBContentHelper::Kill(sUrl);
}

}

namespace {
@@ -1678,6 +1688,9 @@ int Desktop::doShutdown()

    if (pExecGlobals->bRestartRequested)
    {
        // tdf#128523
        RemoveIconCacheDirectory();

        // a restart is already requested, usually due to a configuration change
        // that needs a restart to get active. If this is the case, do not try
        // to use SecureUserConfig to safe this still untested new configuration