diff options
author | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-16 19:36:16 +0000 |
---|---|---|
committer | erg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-07-16 19:36:16 +0000 |
commit | e768baf6ebf5a49cc19d58d1761321b175c82c18 (patch) | |
tree | c29fb1ebcef46d9ad929ed1fd68f954a04f97b06 /chrome/browser/password_manager | |
parent | a850e9592bb1a8c43275116ff565c91b4b1cb66b (diff) | |
download | chromium_src-e768baf6ebf5a49cc19d58d1761321b175c82c18.zip chromium_src-e768baf6ebf5a49cc19d58d1761321b175c82c18.tar.gz chromium_src-e768baf6ebf5a49cc19d58d1761321b175c82c18.tar.bz2 |
Separate the PasswordManagerDelegate out of PasswordManager.
Previously, anyone who included tab_contents.h would bring in a bunch of
implementation details of the password manager from webkit_glue. This breaks
the delegate interface out of the rest of password manager system and makes
FillData not an inner-class so anyone can forward declare FillData instead of
having to include the header to meet a delegate interface.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/2877022
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@52726 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/password_manager')
4 files changed, 53 insertions, 33 deletions
diff --git a/chrome/browser/password_manager/password_manager.cc b/chrome/browser/password_manager/password_manager.cc index fbebafc..258a254 100644 --- a/chrome/browser/password_manager/password_manager.cc +++ b/chrome/browser/password_manager/password_manager.cc @@ -13,6 +13,7 @@ #include "base/utf_string_conversions.h" #include "chrome/browser/metrics/user_metrics.h" #include "chrome/browser/password_manager/password_form_manager.h" +#include "chrome/browser/password_manager/password_manager_delegate.h" #include "chrome/browser/pref_service.h" #include "chrome/browser/profile.h" #include "chrome/common/notification_registrar.h" @@ -49,7 +50,7 @@ static void ReportMetrics(bool password_manager_enabled) { UserMetrics::RecordAction(UserMetricsAction("PasswordManager_Disabled")); } -PasswordManager::PasswordManager(Delegate* delegate) +PasswordManager::PasswordManager(PasswordManagerDelegate* delegate) : login_managers_deleter_(&pending_login_managers_), delegate_(delegate), observer_(NULL) { @@ -195,7 +196,7 @@ void PasswordManager::Autofill( case PasswordForm::SCHEME_HTML: { // Note the check above is required because the observer_ for a non-HTML // schemed password form may have been freed, so we need to distinguish. - webkit_glue::PasswordFormDomManager::FillData fill_data; + webkit_glue::PasswordFormFillData fill_data; webkit_glue::PasswordFormDomManager::InitFillData(form_for_autofill, best_matches, preferred_match, diff --git a/chrome/browser/password_manager/password_manager.h b/chrome/browser/password_manager/password_manager.h index a4eaafb..22447bb 100644 --- a/chrome/browser/password_manager/password_manager.h +++ b/chrome/browser/password_manager/password_manager.h @@ -13,6 +13,7 @@ #include "webkit/glue/password_form.h" #include "webkit/glue/password_form_dom_manager.h" +class PasswordManagerDelegate; class PasswordFormManager; class PrefService; @@ -22,37 +23,10 @@ class PrefService; // for purposes of supporting HTTP authentication dialogs. class PasswordManager : public LoginModel { public: - // An abstraction of operations in the external environment (TabContents) - // that the PasswordManager depends on. This allows for more targeted - // unit testing. - class Delegate { - public: - Delegate() {} - virtual ~Delegate() {} - - // Fill forms matching |form_data| in |tab_contents|. By default, goes - // through the RenderViewHost to FillPasswordForm. Tests can override this - // to sever the dependency on the entire rendering stack. - virtual void FillPasswordForm( - const webkit_glue::PasswordFormDomManager::FillData& form_data) = 0; - - // A mechanism to show an infobar in the current tab at our request. - virtual void AddSavePasswordInfoBar(PasswordFormManager* form_to_save) = 0; - - // Get the profile for which we are managing passwords. - virtual Profile* GetProfileForPasswordManager() = 0; - - // If any SSL certificate errors were encountered as a result of the last - // page load. - virtual bool DidLastPageLoadEncounterSSLErrors() = 0; - private: - DISALLOW_COPY_AND_ASSIGN(Delegate); - }; - static void RegisterUserPrefs(PrefService* prefs); // The delegate passed in is required to outlive the PasswordManager. - explicit PasswordManager(Delegate* delegate); + explicit PasswordManager(PasswordManagerDelegate* delegate); ~PasswordManager(); // Called by a PasswordFormManager when it decides a form can be autofilled @@ -122,7 +96,7 @@ class PasswordManager : public LoginModel { // Our delegate for carrying out external operations. This is typically the // containing TabContents. - Delegate* delegate_; + PasswordManagerDelegate* delegate_; // The LoginModelObserver (i.e LoginView) requiring autofill. LoginModelObserver* observer_; diff --git a/chrome/browser/password_manager/password_manager_delegate.h b/chrome/browser/password_manager/password_manager_delegate.h new file mode 100644 index 0000000..830121b --- /dev/null +++ b/chrome/browser/password_manager/password_manager_delegate.h @@ -0,0 +1,44 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_MANAGER_DELEGATE_H_ +#define CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_MANAGER_DELEGATE_H_ + +namespace webkit_glue { +struct PasswordFormFillData; +} // namespace webkit_glue + +class PasswordFormManager; +class Profile; + +// An abstraction of operations in the external environment (TabContents) +// that the PasswordManager depends on. This allows for more targeted +// unit testing. +class PasswordManagerDelegate { + public: + PasswordManagerDelegate() {} + virtual ~PasswordManagerDelegate() {} + + // Fill forms matching |form_data| in |tab_contents|. By default, goes + // through the RenderViewHost to FillPasswordForm. Tests can override this + // to sever the dependency on the entire rendering stack. + virtual void FillPasswordForm( + const webkit_glue::PasswordFormFillData& form_data) = 0; + + // A mechanism to show an infobar in the current tab at our request. + virtual void AddSavePasswordInfoBar(PasswordFormManager* form_to_save) = 0; + + // Get the profile for which we are managing passwords. + virtual Profile* GetProfileForPasswordManager() = 0; + + // If any SSL certificate errors were encountered as a result of the last + // page load. + virtual bool DidLastPageLoadEncounterSSLErrors() = 0; + + private: + DISALLOW_COPY_AND_ASSIGN(PasswordManagerDelegate); +}; + + +#endif // CHROME_BROWSER_PASSWORD_MANAGER_PASSWORD_MANAGER_DELEGATE_H_ diff --git a/chrome/browser/password_manager/password_manager_unittest.cc b/chrome/browser/password_manager/password_manager_unittest.cc index e8430f7..9f5acc3 100644 --- a/chrome/browser/password_manager/password_manager_unittest.cc +++ b/chrome/browser/password_manager/password_manager_unittest.cc @@ -5,6 +5,7 @@ #include "base/file_path.h" #include "base/string_util.h" #include "chrome/browser/password_manager/password_manager.h" +#include "chrome/browser/password_manager/password_manager_delegate.h" #include "chrome/browser/password_manager/password_store.h" #include "chrome/browser/pref_service.h" #include "chrome/common/url_constants.h" @@ -19,10 +20,10 @@ using ::testing::Exactly; using ::testing::WithArg; using ::testing::Return; -class MockPasswordManagerDelegate : public PasswordManager::Delegate { +class MockPasswordManagerDelegate : public PasswordManagerDelegate { public: MOCK_METHOD1(FillPasswordForm, void( - const webkit_glue::PasswordFormDomManager::FillData&)); + const webkit_glue::PasswordFormFillData&)); MOCK_METHOD1(AddSavePasswordInfoBar, void(PasswordFormManager*)); MOCK_METHOD0(GetProfileForPasswordManager, Profile*()); MOCK_METHOD0(DidLastPageLoadEncounterSSLErrors, bool()); |