[Libreoffice-commits] core.git: svl/source

Noel Grandin (via logerrit) logerrit at kemper.freedesktop.org
Fri Jul 23 07:55:28 UTC 2021


 svl/source/passwordcontainer/passwordcontainer.cxx |   84 ++++++++++-----------
 svl/source/passwordcontainer/passwordcontainer.hxx |    3 
 2 files changed, 44 insertions(+), 43 deletions(-)

New commits:
commit 19d01fae16f4f7b46c168b983960547f4dd2c2aa
Author:     Noel Grandin <noelgrandin at gmail.com>
AuthorDate: Thu Jul 22 21:30:03 2021 +0200
Commit:     Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Fri Jul 23 09:54:56 2021 +0200

    no need to allocate the StorageItem separately
    
    Change-Id: I941404fcc2ded3568afe4818c4851a1bd72e30b1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119386
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>

diff --git a/svl/source/passwordcontainer/passwordcontainer.cxx b/svl/source/passwordcontainer/passwordcontainer.cxx
index 1181144ead22..c27deb52a420 100644
--- a/svl/source/passwordcontainer/passwordcontainer.cxx
+++ b/svl/source/passwordcontainer/passwordcontainer.cxx
@@ -351,9 +351,9 @@ PasswordContainer::PasswordContainer( const Reference<XComponentContext>& rxCont
     mComponent.set( rxContext->getServiceManager(), UNO_QUERY );
     mComponent->addEventListener( this );
 
-    m_pStorageFile.reset( new StorageItem( this, "Office.Common/Passwords" ) );
-    if( m_pStorageFile->useStorage() )
-        m_aContainer = m_pStorageFile->getInfo();
+    m_xStorageFile.emplace( this, "Office.Common/Passwords" );
+    if( m_xStorageFile->useStorage() )
+        m_aContainer = m_xStorageFile->getInfo();
 }
 
 
@@ -361,7 +361,7 @@ PasswordContainer::~PasswordContainer()
 {
     ::osl::MutexGuard aGuard( mMutex );
 
-    m_pStorageFile.reset();
+    m_xStorageFile.reset();
 
     if( mComponent.is() )
     {
@@ -374,7 +374,7 @@ void SAL_CALL PasswordContainer::disposing( const EventObject& )
 {
     ::osl::MutexGuard aGuard( mMutex );
 
-    m_pStorageFile.reset();
+    m_xStorageFile.reset();
 
     if( mComponent.is() )
     {
@@ -525,7 +525,7 @@ void PasswordContainer::UpdateVector( const OUString& aURL, std::vector< NamePas
                 if( writeFile )
                 {
                     // the password must be already encoded
-                    m_pStorageFile->update( aURL, aRecord ); // change existing ( aURL, aName ) record in the configfile
+                    m_xStorageFile->update( aURL, aRecord ); // change existing ( aURL, aName ) record in the configfile
                 }
             }
 
@@ -536,7 +536,7 @@ void PasswordContainer::UpdateVector( const OUString& aURL, std::vector< NamePas
     if( aRecord.HasPasswords( PERSISTENT_RECORD ) && writeFile )
     {
         // the password must be already encoded
-        m_pStorageFile->update( aURL, aRecord ); // add new aName to the existing url
+        m_xStorageFile->update( aURL, aRecord ); // add new aName to the existing url
     }
 
     toUpdate.insert( toUpdate.begin(), aRecord );
@@ -628,8 +628,8 @@ void PasswordContainer::PrivateAdd( const OUString& Url, const OUString& UserNam
     std::vector< NamePassRecord > listToAdd( 1, aRecord );
     m_aContainer.insert( PairUrlRecord( Url, listToAdd ) );
 
-    if( Mode == PERSISTENT_RECORD && m_pStorageFile && m_pStorageFile->useStorage() )
-        m_pStorageFile->update( Url, aRecord );
+    if( Mode == PERSISTENT_RECORD && m_xStorageFile && m_xStorageFile->useStorage() )
+        m_xStorageFile->update( Url, aRecord );
 
 }
 
@@ -778,7 +778,7 @@ OUString PasswordContainer::RequestPasswordFromUser( PasswordRequestMode aRMode,
 OUString const & PasswordContainer::GetMasterPassword( const Reference< XInteractionHandler >& aHandler )
 {
     PasswordRequestMode aRMode = PasswordRequestMode_PASSWORD_ENTER;
-    if( !m_pStorageFile || !m_pStorageFile->useStorage() )
+    if( !m_xStorageFile || !m_xStorageFile->useStorage() )
         throw NoMasterException("Password storing is not active!", Reference< XInterface >(), aRMode );
 
     if( m_aMasterPasswd.isEmpty() && aHandler.is() )
@@ -786,7 +786,7 @@ OUString const & PasswordContainer::GetMasterPassword( const Reference< XInterac
         OUString aEncodedMP;
         bool bDefaultPassword = false;
 
-        if( !m_pStorageFile->getEncodedMP( aEncodedMP ) )
+        if( !m_xStorageFile->getEncodedMP( aEncodedMP ) )
             aRMode = PasswordRequestMode_PASSWORD_CREATE;
         else if ( aEncodedMP.isEmpty() )
         {
@@ -808,7 +808,7 @@ OUString const & PasswordContainer::GetMasterPassword( const Reference< XInterac
                         m_aMasterPasswd = aPass;
                         std::vector< OUString > aMaster( 1, m_aMasterPasswd );
 
-                        m_pStorageFile->setEncodedMP( EncodePasswords( aMaster, m_aMasterPasswd ) );
+                        m_xStorageFile->setEncodedMP( EncodePasswords( aMaster, m_aMasterPasswd ) );
                     }
                     else
                     {
@@ -862,8 +862,8 @@ void SAL_CALL PasswordContainer::remove( const OUString& aURL, const OUString& a
 
     if (aNPIter != aIter->second.end())
     {
-        if( aNPIter->HasPasswords( PERSISTENT_RECORD ) && m_pStorageFile )
-            m_pStorageFile->remove( aURL, aName ); // remove record ( aURL, aName )
+        if( aNPIter->HasPasswords( PERSISTENT_RECORD ) && m_xStorageFile )
+            m_xStorageFile->remove( aURL, aName ); // remove record ( aURL, aName )
 
         // the iterator will not be used any more so it can be removed directly
         aIter->second.erase( aNPIter );
@@ -908,8 +908,8 @@ void SAL_CALL PasswordContainer::removePersistent( const OUString& aURL, const O
         // TODO/LATER: should the password be converted to MemoryPassword?
         aNPIter->RemovePasswords( PERSISTENT_RECORD );
 
-        if ( m_pStorageFile )
-            m_pStorageFile->remove( aURL, aName ); // remove record ( aURL, aName )
+        if ( m_xStorageFile )
+            m_xStorageFile->remove( aURL, aName ); // remove record ( aURL, aName )
     }
 
     if( !aNPIter->HasPasswords( MEMORY_RECORD ) )
@@ -923,8 +923,8 @@ void SAL_CALL PasswordContainer::removeAllPersistent()
 {
     ::osl::MutexGuard aGuard( mMutex );
 
-    if( m_pStorageFile )
-        m_pStorageFile->clear();
+    if( m_xStorageFile )
+        m_xStorageFile->clear();
 
     for( PassMap::iterator aIter = m_aContainer.begin(); aIter != m_aContainer.end(); )
     {
@@ -935,8 +935,8 @@ void SAL_CALL PasswordContainer::removeAllPersistent()
                 // TODO/LATER: should the password be converted to MemoryPassword?
                 aNPIter->RemovePasswords( PERSISTENT_RECORD );
 
-                if ( m_pStorageFile )
-                    m_pStorageFile->remove( aIter->first, aNPIter->GetUserName() ); // remove record ( aURL, aName )
+                if ( m_xStorageFile )
+                    m_xStorageFile->remove( aIter->first, aNPIter->GetUserName() ); // remove record ( aURL, aName )
             }
 
             if( !aNPIter->HasPasswords( MEMORY_RECORD ) )
@@ -991,7 +991,7 @@ sal_Bool SAL_CALL PasswordContainer::authorizateWithMasterPassword( const uno::R
     ::osl::MutexGuard aGuard( mMutex );
 
     // the method should fail if there is no master password
-    if( m_pStorageFile && m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP ) )
+    if( m_xStorageFile && m_xStorageFile->useStorage() && m_xStorageFile->getEncodedMP( aEncodedMP ) )
     {
         if ( aEncodedMP.isEmpty() )
         {
@@ -1042,7 +1042,7 @@ sal_Bool SAL_CALL PasswordContainer::changeMasterPassword( const uno::Reference<
     uno::Reference< task::XInteractionHandler > xTmpHandler = xHandler;
     ::osl::MutexGuard aGuard( mMutex );
 
-    if ( m_pStorageFile && m_pStorageFile->useStorage() )
+    if ( m_xStorageFile && m_xStorageFile->useStorage() )
     {
         if ( !xTmpHandler.is() )
         {
@@ -1054,7 +1054,7 @@ sal_Bool SAL_CALL PasswordContainer::changeMasterPassword( const uno::Reference<
         bool bCanChangePassword = true;
         // if there is already a stored master password it should be entered by the user before the change happen
         OUString aEncodedMP;
-        if( !m_aMasterPasswd.isEmpty() || m_pStorageFile->getEncodedMP( aEncodedMP ) )
+        if( !m_aMasterPasswd.isEmpty() || m_xStorageFile->getEncodedMP( aEncodedMP ) )
             bCanChangePassword = authorizateWithMasterPassword( xTmpHandler );
 
         if ( bCanChangePassword )
@@ -1073,7 +1073,7 @@ sal_Bool SAL_CALL PasswordContainer::changeMasterPassword( const uno::Reference<
                 // store the new master password
                 m_aMasterPasswd = aPass;
                 std::vector< OUString > aMaster( 1, m_aMasterPasswd );
-                m_pStorageFile->setEncodedMP( EncodePasswords( aMaster, m_aMasterPasswd ) );
+                m_xStorageFile->setEncodedMP( EncodePasswords( aMaster, m_aMasterPasswd ) );
 
                 // store all the entries with the new password
                 for ( const auto& rURL : aPersistent )
@@ -1095,10 +1095,10 @@ void SAL_CALL PasswordContainer::removeMasterPassword()
     removeAllPersistent();
 
     ::osl::MutexGuard aGuard( mMutex );
-    if ( m_pStorageFile )
+    if ( m_xStorageFile )
     {
         m_aMasterPasswd.clear();
-        m_pStorageFile->setEncodedMP( OUString() ); // let the master password be removed from configuration
+        m_xStorageFile->setEncodedMP( OUString() ); // let the master password be removed from configuration
     }
 }
 
@@ -1106,27 +1106,27 @@ sal_Bool SAL_CALL PasswordContainer::hasMasterPassword(  )
 {
     ::osl::MutexGuard aGuard( mMutex );
 
-    if ( !m_pStorageFile )
+    if ( !m_xStorageFile )
         throw uno::RuntimeException();
 
     OUString aEncodedMP;
-    return ( m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP ) );
+    return ( m_xStorageFile->useStorage() && m_xStorageFile->getEncodedMP( aEncodedMP ) );
 }
 
 sal_Bool SAL_CALL PasswordContainer::allowPersistentStoring( sal_Bool bAllow )
 {
     ::osl::MutexGuard aGuard( mMutex );
 
-    if ( !m_pStorageFile )
+    if ( !m_xStorageFile )
         throw uno::RuntimeException();
 
     if ( !bAllow )
         removeMasterPassword();
 
-    if (m_pStorageFile->useStorage() == static_cast<bool>(bAllow))
+    if (m_xStorageFile->useStorage() == static_cast<bool>(bAllow))
         return bAllow;
 
-    m_pStorageFile->setUseStorage( bAllow );
+    m_xStorageFile->setUseStorage( bAllow );
     return !bAllow;
 }
 
@@ -1134,10 +1134,10 @@ sal_Bool SAL_CALL PasswordContainer::isPersistentStoringAllowed()
 {
     ::osl::MutexGuard aGuard( mMutex );
 
-    if ( !m_pStorageFile )
+    if ( !m_xStorageFile )
         throw uno::RuntimeException();
 
-    return m_pStorageFile->useStorage();
+    return m_xStorageFile->useStorage();
 }
 
 sal_Bool SAL_CALL PasswordContainer::useDefaultMasterPassword( const uno::Reference< task::XInteractionHandler >& xHandler )
@@ -1146,7 +1146,7 @@ sal_Bool SAL_CALL PasswordContainer::useDefaultMasterPassword( const uno::Refere
     uno::Reference< task::XInteractionHandler > xTmpHandler = xHandler;
     ::osl::MutexGuard aGuard( mMutex );
 
-    if ( m_pStorageFile && m_pStorageFile->useStorage() )
+    if ( m_xStorageFile && m_xStorageFile->useStorage() )
     {
         if ( !xTmpHandler.is() )
         {
@@ -1158,7 +1158,7 @@ sal_Bool SAL_CALL PasswordContainer::useDefaultMasterPassword( const uno::Refere
         bool bCanChangePassword = true;
         // if there is already a stored nondefault master password it should be entered by the user before the change happen
         OUString aEncodedMP;
-        if( m_pStorageFile->getEncodedMP( aEncodedMP ) && !aEncodedMP.isEmpty() )
+        if( m_xStorageFile->getEncodedMP( aEncodedMP ) && !aEncodedMP.isEmpty() )
             bCanChangePassword = authorizateWithMasterPassword( xTmpHandler );
 
         if ( bCanChangePassword )
@@ -1175,7 +1175,7 @@ sal_Bool SAL_CALL PasswordContainer::useDefaultMasterPassword( const uno::Refere
 
                 // store the empty string to flag the default master password
                 m_aMasterPasswd = aPass;
-                m_pStorageFile->setEncodedMP( OUString(), true );
+                m_xStorageFile->setEncodedMP( OUString(), true );
 
                 // store all the entries with the new password
                 for ( const auto& rURL : aPersistent )
@@ -1196,11 +1196,11 @@ sal_Bool SAL_CALL PasswordContainer::isDefaultMasterPasswordUsed()
 {
     ::osl::MutexGuard aGuard( mMutex );
 
-    if ( !m_pStorageFile )
+    if ( !m_xStorageFile )
         throw uno::RuntimeException();
 
     OUString aEncodedMP;
-    return ( m_pStorageFile->useStorage() && m_pStorageFile->getEncodedMP( aEncodedMP ) && aEncodedMP.isEmpty() );
+    return ( m_xStorageFile->useStorage() && m_xStorageFile->getEncodedMP( aEncodedMP ) && aEncodedMP.isEmpty() );
 }
 
 
@@ -1238,8 +1238,8 @@ void PasswordContainer::Notify()
             {
                 aNPIter->RemovePasswords( PERSISTENT_RECORD );
 
-                if ( m_pStorageFile )
-                    m_pStorageFile->remove( rEntry.first, aNPIter->GetUserName() ); // remove record ( aURL, aName )
+                if ( m_xStorageFile )
+                    m_xStorageFile->remove( rEntry.first, aNPIter->GetUserName() ); // remove record ( aURL, aName )
             }
 
             if( !aNPIter->HasPasswords( MEMORY_RECORD ) )
@@ -1252,8 +1252,8 @@ void PasswordContainer::Notify()
     }
 
     PassMap addon;
-    if( m_pStorageFile )
-        addon = m_pStorageFile->getInfo();
+    if( m_xStorageFile )
+        addon = m_xStorageFile->getInfo();
 
     for( const auto& rEntry : addon )
     {
diff --git a/svl/source/passwordcontainer/passwordcontainer.hxx b/svl/source/passwordcontainer/passwordcontainer.hxx
index 0a15bf989328..e78d85aa0027 100644
--- a/svl/source/passwordcontainer/passwordcontainer.hxx
+++ b/svl/source/passwordcontainer/passwordcontainer.hxx
@@ -21,6 +21,7 @@
 
 #include <vector>
 #include <map>
+#include <optional>
 #include <com/sun/star/task/XPasswordContainer2.hpp>
 #include <com/sun/star/task/PasswordRequestMode.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
@@ -210,7 +211,7 @@ class PasswordContainer : public ::cppu::WeakImplHelper<
 {
 private:
     PassMap      m_aContainer;
-    std::unique_ptr<StorageItem> m_pStorageFile;
+    std::optional<StorageItem> m_xStorageFile;
     ::osl::Mutex mMutex;
     OUString m_aMasterPasswd; // master password is set when the string is not empty
     css::uno::Reference< css::lang::XComponent > mComponent;


More information about the Libreoffice-commits mailing list