tdf#57414 autorecovery: avoid unnecessary storeToRecoveryFile

With a successful UserAutoBackup, the document is fully saved,
and the recoveryInfo entry is removed.

So just avoid the recovery that would just be deleted anyway.

Change-Id: I3cc9fe2730640df48f450f900f33afc2df7f020a
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/155273
Tested-by: Jenkins
Reviewed-by: Justin Luth <jluth@mail.com>
diff --git a/framework/source/services/autorecovery.cxx b/framework/source/services/autorecovery.cxx
index 816e4f7..657d8c1 100644
--- a/framework/source/services/autorecovery.cxx
+++ b/framework/source/services/autorecovery.cxx
@@ -3073,6 +3073,7 @@ void AutoRecovery::implts_saveOneDoc(const OUString&                            
    // Note that we must do it *before* calling storeToRecoveryFile, so in case of failure here
    // we won't remain with the modified flag set to true, even though the autorecovery save succeeded.
    const bool bEmergencySave(m_eJob & Job::EmergencySave);
    bool bUserAutoSaved = false;
    try
    {
        // We must check here for an empty URL to avoid a "This operation is not supported on this operating system."
@@ -3081,6 +3082,7 @@ void AutoRecovery::implts_saveOneDoc(const OUString&                            
        {
            Reference< XStorable > xDocSave(rInfo.Document, css::uno::UNO_QUERY_THROW);
            xDocSave->store();
            bUserAutoSaved = true;
        }
    }
    catch(const css::uno::Exception&)
@@ -3098,7 +3100,7 @@ void AutoRecovery::implts_saveOneDoc(const OUString&                            

    // If it is no longer modified, it is the same as on disk, and can be removed from RecoveryList.
    const bool bRemoveIt
        = xModify.is() && !xModify->isModified() && !bEmergencySave && !(m_eJob & Job::SessionSave);
        = xModify.is() && !xModify->isModified() && bUserAutoSaved && !(m_eJob & Job::SessionSave);

    sal_Int32 nRetry = RETRY_STORE_ON_FULL_DISC_FOREVER;
    bool  bError = false;
@@ -3106,7 +3108,10 @@ void AutoRecovery::implts_saveOneDoc(const OUString&                            
    {
        try
        {
            xDocRecover->storeToRecoveryFile( rInfo.NewTempURL, lNewArgs.getAsConstPropertyValueList() );
            // skip recovery if it will be removed anyway.
            if (!bRemoveIt)
                xDocRecover->storeToRecoveryFile(rInfo.NewTempURL,
                                                 lNewArgs.getAsConstPropertyValueList());

#ifdef TRIGGER_FULL_DISC_CHECK
            throw css::uno::Exception("trigger full disk check");