From c01ec9515d1892e2a62d3e4423a2bb37ac79e551 Mon Sep 17 00:00:00 2001 From: "stuartmorgan@chromium.org" Date: Sat, 30 May 2009 00:51:16 +0000 Subject: Re-land the password store work from bug 8205, with changes that should fix bug 12479. The Linux pieces are still disabled, however. BUG=8205 TEST=Password autofill should continue to work on Windows. Review URL: http://codereview.chromium.org/114057 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@17273 0039d316-1c4b-4281-b951-d872f2087c98 --- chrome/browser/profile.cc | 54 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) (limited to 'chrome/browser/profile.cc') diff --git a/chrome/browser/profile.cc b/chrome/browser/profile.cc index e5d007e..718b2c81 100644 --- a/chrome/browser/profile.cc +++ b/chrome/browser/profile.cc @@ -19,6 +19,7 @@ #include "chrome/browser/extensions/user_script_master.h" #include "chrome/browser/history/history.h" #include "chrome/browser/net/chrome_url_request_context.h" +#include "chrome/browser/password_manager/password_store_default.h" #include "chrome/browser/profile_manager.h" #include "chrome/browser/renderer_host/render_process_host.h" #include "chrome/browser/search_engines/template_url_fetcher.h" @@ -88,6 +89,14 @@ URLRequestContext* Profile::GetDefaultRequestContext() { return default_request_context_; } +#if defined(OS_LINUX) +// Temporarily disabled while we figure some stuff out. +// http://code.google.com/p/chromium/issues/detail?id=12351 +// #include "chrome/browser/password_manager/password_store_gnome.h" +// #include "chrome/browser/password_manager/password_store_kwallet.h" +#elif defined(OS_WIN) +#include "chrome/browser/password_manager/password_store_win.h" +#endif //////////////////////////////////////////////////////////////////////////////// // @@ -189,6 +198,15 @@ class OffTheRecordProfileImpl : public Profile, } } + virtual PasswordStore* GetPasswordStore(ServiceAccessType sat) { + if (sat == EXPLICIT_ACCESS) { + return profile_->GetPasswordStore(sat); + } else { + NOTREACHED() << "This profile is OffTheRecord"; + return NULL; + } + } + virtual PrefService* GetPrefs() { return profile_->GetPrefs(); } @@ -389,6 +407,7 @@ ProfileImpl::ProfileImpl(const FilePath& path) extensions_request_context_(NULL), history_service_created_(false), created_web_data_service_(false), + created_password_store_(false), created_download_manager_(false), created_theme_provider_(false), start_time_(Time::Now()), @@ -762,6 +781,41 @@ void ProfileImpl::CreateWebDataService() { web_data_service_.swap(wds); } +PasswordStore* ProfileImpl::GetPasswordStore(ServiceAccessType sat) { + if (!created_password_store_) + CreatePasswordStore(); + return password_store_.get(); +} + +void ProfileImpl::CreatePasswordStore() { + DCHECK(!created_password_store_ && password_store_.get() == NULL); + created_password_store_ = true; + scoped_refptr ps; +#if defined(OS_LINUX) +// Temporarily disabled while we figure some stuff out. +// http://code.google.com/p/chromium/issues/detail?id=12351 +// if (getenv("KDE_FULL_SESSION")) { +// ps = new PasswordStoreKWallet(); +// } else { +// ps = new PasswordStoreGnome(); +// } + NOTIMPLEMENTED(); +#elif defined(OS_WIN) + ps = new PasswordStoreWin(GetWebDataService(Profile::IMPLICIT_ACCESS)); +#else + NOTIMPLEMENTED(); +#endif + if (!ps || !ps->Init()) { + // Try falling back to the default password manager + LOG(WARNING) << "Could not initialise native password manager - " + "falling back to default"; + ps = new PasswordStoreDefault(GetWebDataService(Profile::IMPLICIT_ACCESS)); + if (!ps->Init()) + return; + } + password_store_.swap(ps); +} + DownloadManager* ProfileImpl::GetDownloadManager() { if (!created_download_manager_) { scoped_refptr dlm(new DownloadManager); -- cgit v1.1