svl/source/passwordcontainer/passwordcontainer.cxx |   51 ++++++++++++---------
 svl/source/passwordcontainer/passwordcontainer.hxx |    6 ++
 2 files changed, 35 insertions(+), 22 deletions(-)

New commits:
commit 49dd32a88d90097a1c50dc64dc42dc35645780b8
Author:     Noel Grandin <noel.gran...@collabora.co.uk>
AuthorDate: Fri Feb 17 11:28:17 2023 +0200
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Fri Feb 17 16:03:40 2023 +0000

    osl::Mutex->std::mutex in PasswordContainer
    
    Change-Id: I94113d714417447d5664a08d45fe1ad8dc0fb5e0
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/147198
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>

diff --git a/svl/source/passwordcontainer/passwordcontainer.cxx 
b/svl/source/passwordcontainer/passwordcontainer.cxx
index 7f9cf4944ae7..365f952aa553 100644
--- a/svl/source/passwordcontainer/passwordcontainer.cxx
+++ b/svl/source/passwordcontainer/passwordcontainer.cxx
@@ -376,7 +376,7 @@ void StorageItem::ImplCommit()
 PasswordContainer::PasswordContainer( const Reference<XComponentContext>& 
rxContext )
 {
     // m_pStorageFile->Notify() can be called
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     mComponent.set( rxContext->getServiceManager(), UNO_QUERY );
     mComponent->addEventListener( this );
@@ -389,7 +389,7 @@ PasswordContainer::PasswordContainer( const 
Reference<XComponentContext>& rxCont
 
 PasswordContainer::~PasswordContainer()
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     m_xStorageFile.reset();
 
@@ -402,7 +402,7 @@ PasswordContainer::~PasswordContainer()
 
 void SAL_CALL PasswordContainer::disposing( const EventObject& )
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     m_xStorageFile.reset();
 
@@ -637,7 +637,7 @@ Sequence< UserRecord > 
PasswordContainer::CopyToUserRecordSequence( const std::v
 
 void SAL_CALL PasswordContainer::add( const OUString& Url, const OUString& 
UserName, const Sequence< OUString >& Passwords, const Reference< 
XInteractionHandler >& aHandler )
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     PrivateAdd( Url, UserName, Passwords, MEMORY_RECORD, aHandler );
 }
@@ -645,7 +645,7 @@ void SAL_CALL PasswordContainer::add( const OUString& Url, 
const OUString& UserN
 
 void SAL_CALL PasswordContainer::addPersistent( const OUString& Url, const 
OUString& UserName, const Sequence< OUString >& Passwords, const Reference< 
XInteractionHandler >& aHandler  )
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     PrivateAdd( Url, UserName, Passwords, PERSISTENT_RECORD, aHandler );
 }
@@ -766,7 +766,7 @@ UrlRecord PasswordContainer::find(
     bool bName, // only needed to support empty user names
     const Reference< XInteractionHandler >& aHandler  )
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     if( !m_aContainer.empty() && !aURL.isEmpty() )
     {
@@ -922,7 +922,7 @@ OUString const & PasswordContainer::GetMasterPassword( 
const Reference< XInterac
 
 void SAL_CALL PasswordContainer::remove( const OUString& aURL, const OUString& 
aName )
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     OUString aUrl( aURL );
     if( m_aContainer.empty() )
@@ -962,7 +962,7 @@ void SAL_CALL PasswordContainer::remove( const OUString& 
aURL, const OUString& a
 
 void SAL_CALL PasswordContainer::removePersistent( const OUString& aURL, const 
OUString& aName )
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     OUString aUrl( aURL );
     if( m_aContainer.empty() )
@@ -1007,8 +1007,12 @@ void SAL_CALL PasswordContainer::removePersistent( const 
OUString& aURL, const O
 
 void SAL_CALL PasswordContainer::removeAllPersistent()
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard(mMutex);
+    removeAllPersistent(aGuard);
+}
 
+void PasswordContainer::removeAllPersistent(std::unique_lock<std::mutex>& 
/*rGuard*/)
+{
     if( m_xStorageFile )
         m_xStorageFile->clear();
 
@@ -1046,7 +1050,7 @@ Sequence< UrlRecord > SAL_CALL 
PasswordContainer::getAllPersistent( const Refere
 {
     Sequence< UrlRecord > aResult;
 
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
     for( const auto& rEntry : m_aContainer )
     {
         Sequence< UserRecord > aUsers;
@@ -1075,7 +1079,7 @@ sal_Bool SAL_CALL 
PasswordContainer::authorizateWithMasterPassword( const uno::R
     bool bResult = false;
     OUString aEncodedMP, aEncodedMPIV;
     uno::Reference< task::XInteractionHandler > xTmpHandler = xHandler;
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     // the method should fail if there is no master password
     if( m_xStorageFile && m_xStorageFile->useStorage() && 
m_xStorageFile->getEncodedMasterPassword( aEncodedMP, aEncodedMPIV ) )
@@ -1133,7 +1137,7 @@ sal_Bool SAL_CALL 
PasswordContainer::changeMasterPassword( const uno::Reference<
 {
     bool bResult = false;
     uno::Reference< task::XInteractionHandler > xTmpHandler = xHandler;
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     if ( m_xStorageFile && m_xStorageFile->useStorage() )
     {
@@ -1184,11 +1188,16 @@ sal_Bool SAL_CALL 
PasswordContainer::changeMasterPassword( const uno::Reference<
 }
 
 void SAL_CALL PasswordContainer::removeMasterPassword()
+{
+    std::unique_lock aGuard(mMutex);
+    removeMasterPassword(aGuard);
+}
+
+void PasswordContainer::removeMasterPassword(std::unique_lock<std::mutex>& 
rGuard)
 {
     // remove all the stored passwords and the master password
-    removeAllPersistent();
+    removeAllPersistent(rGuard);
 
-    ::osl::MutexGuard aGuard( mMutex );
     if ( m_xStorageFile )
     {
         m_aMasterPassword.clear();
@@ -1198,7 +1207,7 @@ void SAL_CALL PasswordContainer::removeMasterPassword()
 
 sal_Bool SAL_CALL PasswordContainer::hasMasterPassword(  )
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     if ( !m_xStorageFile )
         throw uno::RuntimeException();
@@ -1209,13 +1218,13 @@ sal_Bool SAL_CALL PasswordContainer::hasMasterPassword( 
 )
 
 sal_Bool SAL_CALL PasswordContainer::allowPersistentStoring( sal_Bool bAllow )
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     if ( !m_xStorageFile )
         throw uno::RuntimeException();
 
     if ( !bAllow )
-        removeMasterPassword();
+        removeMasterPassword(aGuard);
 
     if (m_xStorageFile->useStorage() == static_cast<bool>(bAllow))
         return bAllow;
@@ -1226,7 +1235,7 @@ sal_Bool SAL_CALL 
PasswordContainer::allowPersistentStoring( sal_Bool bAllow )
 
 sal_Bool SAL_CALL PasswordContainer::isPersistentStoringAllowed()
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     if ( !m_xStorageFile )
         throw uno::RuntimeException();
@@ -1238,7 +1247,7 @@ sal_Bool SAL_CALL 
PasswordContainer::useDefaultMasterPassword( const uno::Refere
 {
     bool bResult = false;
     uno::Reference< task::XInteractionHandler > xTmpHandler = xHandler;
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     if ( m_xStorageFile && m_xStorageFile->useStorage() )
     {
@@ -1288,7 +1297,7 @@ sal_Bool SAL_CALL 
PasswordContainer::useDefaultMasterPassword( const uno::Refere
 
 sal_Bool SAL_CALL PasswordContainer::isDefaultMasterPasswordUsed()
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     if ( !m_xStorageFile )
         throw uno::RuntimeException();
@@ -1321,7 +1330,7 @@ uno::Sequence< OUString > SAL_CALL 
PasswordContainer::getUrls( sal_Bool OnlyPers
 
 void PasswordContainer::Notify()
 {
-    ::osl::MutexGuard aGuard( mMutex );
+    std::unique_lock aGuard( mMutex );
 
     // remove the cached persistent values in the memory
     for( auto& rEntry : m_aContainer )
diff --git a/svl/source/passwordcontainer/passwordcontainer.hxx 
b/svl/source/passwordcontainer/passwordcontainer.hxx
index 541d1a5e41bb..d3fca41b663f 100644
--- a/svl/source/passwordcontainer/passwordcontainer.hxx
+++ b/svl/source/passwordcontainer/passwordcontainer.hxx
@@ -22,6 +22,7 @@
 #include <utility>
 #include <vector>
 #include <map>
+#include <mutex>
 #include <optional>
 #include <com/sun/star/task/XPasswordContainer2.hpp>
 #include <com/sun/star/task/PasswordRequestMode.hpp>
@@ -239,7 +240,7 @@ class PasswordContainer : public ::cppu::WeakImplHelper<
 private:
     PasswordMap      m_aContainer;
     std::optional<StorageItem> m_xStorageFile;
-    ::osl::Mutex mMutex;
+    std::mutex mMutex;
     OUString m_aMasterPassword; // master password is set when the string is 
not empty
     css::uno::Reference< css::lang::XComponent > mComponent;
     SysCredentialsConfig mUrlContainer;
@@ -385,6 +386,9 @@ public:
     virtual css::uno::Sequence< OUString > SAL_CALL getUrls( sal_Bool 
OnlyPersistent ) override;
 
     void            Notify();
+private:
+    void removeAllPersistent(std::unique_lock<std::mutex>& rGuard);
+    void removeMasterPassword(std::unique_lock<std::mutex>& rGuard);
 };
 
 

Reply via email to