| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/password_manager/password_store_mac.h" | 5 #include "chrome/browser/password_manager/password_store_mac.h" |
| 6 #include "chrome/browser/password_manager/password_store_mac_internal.h" | 6 #include "chrome/browser/password_manager/password_store_mac_internal.h" |
| 7 | 7 |
| 8 #include <CoreServices/CoreServices.h> | 8 #include <CoreServices/CoreServices.h> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 808 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 819 &attrList, 0, NULL); | 819 &attrList, 0, NULL); |
| 820 return result == noErr; | 820 return result == noErr; |
| 821 } | 821 } |
| 822 | 822 |
| 823 OSType MacKeychainPasswordFormAdapter::CreatorCodeForSearch() { | 823 OSType MacKeychainPasswordFormAdapter::CreatorCodeForSearch() { |
| 824 return finds_only_owned_ ? base::mac::CreatorCodeForApplication() : 0; | 824 return finds_only_owned_ ? base::mac::CreatorCodeForApplication() : 0; |
| 825 } | 825 } |
| 826 | 826 |
| 827 #pragma mark - | 827 #pragma mark - |
| 828 | 828 |
| 829 PasswordStoreMac::PasswordStoreMac(AppleKeychain* keychain, | 829 PasswordStoreMac::PasswordStoreMac( |
| 830 LoginDatabase* login_db) | 830 scoped_refptr<base::SingleThreadTaskRunner> main_thread_runner, |
| 831 : keychain_(keychain), login_metadata_db_(login_db) { | 831 scoped_refptr<base::SingleThreadTaskRunner> db_thread_runner, |
| 832 AppleKeychain* keychain, |
| 833 LoginDatabase* login_db) |
| 834 : PasswordStore(main_thread_runner, db_thread_runner), |
| 835 keychain_(keychain), |
| 836 login_metadata_db_(login_db) { |
| 832 DCHECK(keychain_.get()); | 837 DCHECK(keychain_.get()); |
| 833 DCHECK(login_metadata_db_.get()); | 838 DCHECK(login_metadata_db_.get()); |
| 834 } | 839 } |
| 835 | 840 |
| 836 PasswordStoreMac::~PasswordStoreMac() { | 841 PasswordStoreMac::~PasswordStoreMac() { |
| 837 if (thread_.get()) { | 842 if (thread_.get()) { |
| 838 thread_->message_loop()->DeleteSoon(FROM_HERE, | 843 thread_->message_loop()->DeleteSoon(FROM_HERE, |
| 839 notification_service_.release()); | 844 notification_service_.release()); |
| 840 } | 845 } |
| 841 } | 846 } |
| 842 | 847 |
| 843 bool PasswordStoreMac::Init() { | 848 bool PasswordStoreMac::Init() { |
| 844 thread_.reset(new base::Thread("Chrome_PasswordStore_Thread")); | 849 thread_.reset(new base::Thread("Chrome_PasswordStore_Thread")); |
| 845 | 850 |
| 846 if (!thread_->Start()) { | 851 if (!thread_->Start()) { |
| 847 thread_.reset(NULL); | 852 thread_.reset(NULL); |
| 848 return false; | 853 return false; |
| 849 } | 854 } |
| 850 ScheduleTask(base::Bind(&PasswordStoreMac::CreateNotificationService, this)); | 855 ScheduleTask(base::Bind(&PasswordStoreMac::CreateNotificationService, this)); |
| 851 return PasswordStore::Init(); | 856 return PasswordStore::Init(); |
| 852 } | 857 } |
| 853 | 858 |
| 854 void PasswordStoreMac::ShutdownOnUIThread() { | 859 void PasswordStoreMac::ShutdownOnUIThread() { |
| 855 } | 860 } |
| 856 | 861 |
| 857 // Mac stores passwords in the system keychain, which can block for an | 862 // Mac stores passwords in the system keychain, which can block for an |
| 858 // arbitrarily long time (most notably, it can block on user confirmation | 863 // arbitrarily long time (most notably, it can block on user confirmation |
| 859 // from a dialog). Run tasks on a dedicated thread to avoid blocking the DB | 864 // from a dialog). Run tasks on a dedicated thread to avoid blocking the DB |
| 860 // thread. | 865 // thread. |
| 861 scoped_refptr<base::SequencedTaskRunner> PasswordStoreMac::GetTaskRunner() { | 866 scoped_refptr<base::SequencedTaskRunner> |
| 867 PasswordStoreMac::GetBackgroundTaskRunner() { |
| 862 return (thread_.get()) ? thread_->message_loop_proxy() : NULL; | 868 return (thread_.get()) ? thread_->message_loop_proxy() : NULL; |
| 863 } | 869 } |
| 864 | 870 |
| 865 void PasswordStoreMac::ReportMetricsImpl() { | 871 void PasswordStoreMac::ReportMetricsImpl() { |
| 866 login_metadata_db_->ReportMetrics(); | 872 login_metadata_db_->ReportMetrics(); |
| 867 } | 873 } |
| 868 | 874 |
| 869 void PasswordStoreMac::AddLoginImpl(const PasswordForm& form) { | 875 void PasswordStoreMac::AddLoginImpl(const PasswordForm& form) { |
| 870 if (AddToKeychainIfNecessary(form)) { | 876 if (AddToKeychainIfNecessary(form)) { |
| 871 if (login_metadata_db_->AddLogin(form)) { | 877 if (login_metadata_db_->AddLogin(form)) { |
| (...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1138 owned_keychain_adapter.SetFindsOnlyOwnedItems(true); | 1144 owned_keychain_adapter.SetFindsOnlyOwnedItems(true); |
| 1139 for (std::vector<PasswordForm*>::const_iterator i = forms.begin(); | 1145 for (std::vector<PasswordForm*>::const_iterator i = forms.begin(); |
| 1140 i != forms.end(); ++i) { | 1146 i != forms.end(); ++i) { |
| 1141 owned_keychain_adapter.RemovePassword(**i); | 1147 owned_keychain_adapter.RemovePassword(**i); |
| 1142 } | 1148 } |
| 1143 } | 1149 } |
| 1144 | 1150 |
| 1145 void PasswordStoreMac::CreateNotificationService() { | 1151 void PasswordStoreMac::CreateNotificationService() { |
| 1146 notification_service_.reset(content::NotificationService::Create()); | 1152 notification_service_.reset(content::NotificationService::Create()); |
| 1147 } | 1153 } |
| OLD | NEW |