Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(495)

Unified Diff: chrome/browser/autofill/autofill_manager.cc

Issue 10987100: Switch AutofillManager to be UserData on WebContents. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/autofill/autofill_manager.cc
diff --git a/chrome/browser/autofill/autofill_manager.cc b/chrome/browser/autofill/autofill_manager.cc
index 02f53aa847144af5426d9f9374797d36388d4378..efa9f5ea73fd80218c97decf2959e794d8ab408b 100644
--- a/chrome/browser/autofill/autofill_manager.cc
+++ b/chrome/browser/autofill/autofill_manager.cc
@@ -17,6 +17,7 @@
#include "base/logging.h"
#include "base/string16.h"
#include "base/string_util.h"
+#include "base/supports_user_data.h"
#include "base/threading/sequenced_worker_pool.h"
#include "base/utf_string_conversions.h"
#include "chrome/browser/api/infobars/infobar_service.h"
@@ -71,6 +72,8 @@ using webkit::forms::FormField;
namespace {
+const char* kAutofillManagerWebContentsUserDataKey = "web_contents_autofill";
+
// We only send a fraction of the forms to upload server.
// The rate for positive/negative matches potentially could be different.
const double kAutofillPositiveUploadRateDefaultValue = 0.20;
@@ -172,11 +175,29 @@ void DeterminePossibleFieldTypesForUpload(
} // namespace
-AutofillManager::AutofillManager(autofill::AutofillManagerDelegate* delegate,
- TabContents* tab_contents)
- : content::WebContentsObserver(tab_contents->web_contents()),
+// static
+void AutofillManager::CreateForWebContentsAndDelegate(
+ content::WebContents* contents,
+ autofill::AutofillManagerDelegate* delegate) {
+ if (FromWebContents(contents))
+ return;
+
+ contents->SetUserData(kAutofillManagerWebContentsUserDataKey,
+ new base::UserDataAdapter<AutofillManager>(
+ new AutofillManager(contents, delegate)));
+}
+
+// static
+AutofillManager* AutofillManager::FromWebContents(
+ content::WebContents* contents) {
+ return base::UserDataAdapter<AutofillManager>::Get(
+ contents, kAutofillManagerWebContentsUserDataKey);
+}
+
+AutofillManager::AutofillManager(content::WebContents* web_contents,
+ autofill::AutofillManagerDelegate* delegate)
+ : content::WebContentsObserver(web_contents),
manager_delegate_(delegate),
- tab_contents_(tab_contents),
personal_data_(NULL),
download_manager_(delegate->GetBrowserContext(), this),
disable_download_manager_requests_(false),
@@ -195,6 +216,7 @@ AutofillManager::AutofillManager(autofill::AutofillManagerDelegate* delegate,
RegisterWithSyncService();
registrar_.Init(manager_delegate_->GetPrefs());
registrar_.Add(prefs::kPasswordGenerationEnabled, this);
+ TabContents* tab_contents = TabContents::FromWebContents(web_contents);
notification_registrar_.Add(this,
chrome::NOTIFICATION_TAB_CONTENTS_DESTROYED,
content::Source<TabContents>(tab_contents));
@@ -354,7 +376,7 @@ bool AutofillManager::OnMessageReceived(const IPC::Message& message) {
bool AutofillManager::OnFormSubmitted(const FormData& form,
const TimeTicks& timestamp) {
// Let AutoComplete know as well.
- AutocompleteHistoryManager::FromWebContents(tab_contents_->web_contents())->
+ AutocompleteHistoryManager::FromWebContents(web_contents())->
OnFormSubmitted(form);
if (!IsAutofillEnabled())
@@ -557,7 +579,7 @@ void AutofillManager::OnQueryFormFieldAutofill(int query_id,
// Add the results from AutoComplete. They come back asynchronously, so we
// hand off what we generated and they will send the results back to the
// renderer.
- AutocompleteHistoryManager::FromWebContents(tab_contents_->web_contents())->
+ AutocompleteHistoryManager::FromWebContents(web_contents())->
OnGetAutocompleteSuggestions(
query_id, field.name, field.value, values, labels, icons, unique_ids);
}
@@ -883,12 +905,11 @@ void AutofillManager::Reset() {
external_delegate_->Reset();
}
-AutofillManager::AutofillManager(autofill::AutofillManagerDelegate* delegate,
- TabContents* tab_contents,
+AutofillManager::AutofillManager(content::WebContents* web_contents,
+ autofill::AutofillManagerDelegate* delegate,
PersonalDataManager* personal_data)
- : content::WebContentsObserver(tab_contents->web_contents()),
+ : content::WebContentsObserver(web_contents),
manager_delegate_(delegate),
- tab_contents_(tab_contents),
personal_data_(personal_data),
download_manager_(delegate->GetBrowserContext(), this),
disable_download_manager_requests_(true),
@@ -901,7 +922,6 @@ AutofillManager::AutofillManager(autofill::AutofillManagerDelegate* delegate,
user_did_edit_autofilled_field_(false),
password_generation_enabled_(false),
external_delegate_(NULL) {
- DCHECK(tab_contents_);
Jói 2012/10/01 10:45:19 Perhaps keep a DCHECK(web_contents_)?
Avi (use Gerrit) 2012/10/01 15:32:26 Done. I don't remember why I removed it.
DCHECK(manager_delegate_);
RegisterWithSyncService();
// Test code doesn't need registrar_.

Powered by Google App Engine
This is Rietveld 408576698