summaryrefslogtreecommitdiffstats
path: root/chrome/browser/password_manager
diff options
context:
space:
mode:
authorerg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-16 19:36:16 +0000
committererg@chromium.org <erg@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-07-16 19:36:16 +0000
commite768baf6ebf5a49cc19d58d1761321b175c82c18 (patch)
treec29fb1ebcef46d9ad929ed1fd68f954a04f97b06 /chrome/browser/password_manager
parenta850e9592bb1a8c43275116ff565c91b4b1cb66b (diff)
downloadchromium_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')
-rw-r--r--chrome/browser/password_manager/password_manager.cc5
-rw-r--r--chrome/browser/password_manager/password_manager.h32
-rw-r--r--chrome/browser/password_manager/password_manager_delegate.h44
-rw-r--r--chrome/browser/password_manager/password_manager_unittest.cc5
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());