| Index: components/autofill/core/browser/autofill_manager.cc | 
| diff --git a/components/autofill/core/browser/autofill_manager.cc b/components/autofill/core/browser/autofill_manager.cc | 
| index 4c66699b8191cea5b268df8cd24d28ee40465556..7f3c3ad2ca1f0490ef456dc16b555a0e07ebc738 100644 | 
| --- a/components/autofill/core/browser/autofill_manager.cc | 
| +++ b/components/autofill/core/browser/autofill_manager.cc | 
| @@ -20,8 +20,6 @@ | 
| #include "base/strings/string_util.h" | 
| #include "base/strings/utf_string_conversions.h" | 
| #include "base/threading/sequenced_worker_pool.h" | 
| -#include "components/autofill/content/browser/autocheckout/whitelist_manager.h" | 
| -#include "components/autofill/content/browser/autocheckout_manager.h" | 
| #include "components/autofill/core/browser/autocomplete_history_manager.h" | 
| #include "components/autofill/core/browser/autofill_data_model.h" | 
| #include "components/autofill/core/browser/autofill_driver.h" | 
| @@ -190,7 +188,6 @@ AutofillManager::AutofillManager( | 
| personal_data_(delegate->GetPersonalDataManager()), | 
| autocomplete_history_manager_( | 
| new AutocompleteHistoryManager(driver, delegate)), | 
| -      autocheckout_manager_(this), | 
| metric_logger_(new AutofillMetrics), | 
| has_logged_autofill_enabled_(false), | 
| has_logged_address_suggestions_count_(false), | 
| @@ -262,8 +259,7 @@ bool AutofillManager::OnFormSubmitted(const FormData& form, | 
| return false; | 
|  | 
| // Grab a copy of the form data. | 
| -  scoped_ptr<FormStructure> submitted_form( | 
| -      new FormStructure(form, GetAutocheckoutURLPrefix())); | 
| +  scoped_ptr<FormStructure> submitted_form(new FormStructure(form)); | 
|  | 
| // Disregard forms that we wouldn't ever autofill in the first place. | 
| if (!submitted_form->ShouldBeParsed(true)) | 
| @@ -276,9 +272,7 @@ bool AutofillManager::OnFormSubmitted(const FormData& form, | 
| return false; | 
|  | 
| submitted_form->UpdateFromCache(*cached_submitted_form); | 
| -  // Don't prompt the user to save data entered by Autocheckout. | 
| -  if (submitted_form->IsAutofillable(true) && | 
| -      !submitted_form->filled_by_autocheckout()) | 
| +  if (submitted_form->IsAutofillable(true)) | 
| ImportFormData(*submitted_form); | 
|  | 
| // Only upload server statistics and UMA metrics if at least some local data | 
| @@ -328,34 +322,14 @@ void AutofillManager::OnFormsSeen(const std::vector<FormData>& forms, | 
| const TimeTicks& timestamp, | 
| autofill::FormsSeenState state) { | 
| bool is_post_document_load = state == autofill::DYNAMIC_FORMS_SEEN; | 
| -  bool has_more_forms = state == autofill::PARTIAL_FORMS_SEEN; | 
| -  // If new forms were added dynamically, and the autocheckout manager | 
| -  // doesn't tell us to ignore ajax on this page, treat as a new page. | 
| -  if (is_post_document_load) { | 
| -    if (autocheckout_manager_.ShouldIgnoreAjax()) | 
| -      return; | 
| - | 
| +  // If new forms were added dynamically, treat as a new page. | 
| +  if (is_post_document_load) | 
| Reset(); | 
| -  } | 
|  | 
| RenderViewHost* host = driver_->GetWebContents()->GetRenderViewHost(); | 
| if (!host) | 
| return; | 
|  | 
| -  if (!GetAutocheckoutURLPrefix().empty()) { | 
| -    // If whitelisted URL, fetch all the forms. | 
| -    if (has_more_forms) | 
| -      host->Send(new AutofillMsg_GetAllForms(host->GetRoutingID())); | 
| -    if (!is_post_document_load) { | 
| -      host->Send( | 
| -          new AutofillMsg_AutocheckoutSupported(host->GetRoutingID())); | 
| -    } | 
| -    // Now return early, as OnFormsSeen will get called again with all forms. | 
| -    if (has_more_forms) | 
| -      return; | 
| -  } | 
| - | 
| -  autocheckout_manager_.OnFormsSeen(); | 
| bool enabled = IsAutofillEnabled(); | 
| if (!has_logged_autofill_enabled_) { | 
| metric_logger_->LogIsAutofillEnabledAtPageLoad(enabled); | 
| @@ -378,7 +352,6 @@ void AutofillManager::OnTextFieldDidChange(const FormData& form, | 
| return; | 
|  | 
| if (!user_did_type_) { | 
| -    autocheckout_manager_.set_should_show_bubble(false); | 
| user_did_type_ = true; | 
| metric_logger_->LogUserHappinessMetric(AutofillMetrics::USER_DID_TYPE); | 
| } | 
| @@ -403,9 +376,6 @@ void AutofillManager::OnQueryFormFieldAutofill(int query_id, | 
| const FormFieldData& field, | 
| const gfx::RectF& bounding_box, | 
| bool display_warning) { | 
| -  if (autocheckout_manager_.is_autocheckout_bubble_showing()) | 
| -    return; | 
| - | 
| std::vector<base::string16> values; | 
| std::vector<base::string16> labels; | 
| std::vector<base::string16> icons; | 
| @@ -616,7 +586,6 @@ void AutofillManager::OnHideAutofillUI() { | 
| return; | 
|  | 
| manager_delegate_->HideAutofillPopup(); | 
| -  manager_delegate_->HideAutocheckoutBubble(); | 
| } | 
|  | 
| void AutofillManager::RemoveAutofillProfileOrCreditCard(int unique_id) { | 
| @@ -735,28 +704,11 @@ void AutofillManager::ReturnAutocompleteData( | 
|  | 
| void AutofillManager::OnLoadedServerPredictions( | 
| const std::string& response_xml) { | 
| -  scoped_ptr<autofill::AutocheckoutPageMetaData> page_meta_data( | 
| -      new autofill::AutocheckoutPageMetaData()); | 
| - | 
| // Parse and store the server predictions. | 
| FormStructure::ParseQueryResponse(response_xml, | 
| form_structures_.get(), | 
| -                                    page_meta_data.get(), | 
| *metric_logger_); | 
|  | 
| -  if (page_meta_data->IsInAutofillableFlow()) { | 
| -    RenderViewHost* host = driver_->GetWebContents()->GetRenderViewHost(); | 
| -    if (host) | 
| -      host->Send(new AutofillMsg_AutocheckoutSupported(host->GetRoutingID())); | 
| -  } | 
| - | 
| -  // TODO(ahutter): Remove this once Autocheckout is implemented on other | 
| -  // platforms. See http://crbug.com/173416. | 
| -#if defined(TOOLKIT_VIEWS) | 
| -  if (!GetAutocheckoutURLPrefix().empty()) | 
| -    autocheckout_manager_.OnLoadedPageMetaData(page_meta_data.Pass()); | 
| -#endif  // #if defined(TOOLKIT_VIEWS) | 
| - | 
| // If the corresponding flag is set, annotate forms with the predicted types. | 
| driver_->SendAutofillTypePredictionsToRenderer(form_structures_.get()); | 
| } | 
| @@ -765,22 +717,6 @@ void AutofillManager::OnDidEndTextFieldEditing() { | 
| external_delegate_->DidEndTextFieldEditing(); | 
| } | 
|  | 
| -void AutofillManager::OnAutocheckoutPageCompleted( | 
| -    autofill::AutocheckoutStatus status) { | 
| -  autocheckout_manager_.OnAutocheckoutPageCompleted(status); | 
| -} | 
| - | 
| -std::string AutofillManager::GetAutocheckoutURLPrefix() const { | 
| -  if (!driver_->GetWebContents()) | 
| -    return std::string(); | 
| - | 
| -  autofill::autocheckout::WhitelistManager* whitelist_manager = | 
| -      manager_delegate_->GetAutocheckoutWhitelistManager(); | 
| - | 
| -  return whitelist_manager ? whitelist_manager->GetMatchedURLPrefix( | 
| -      driver_->GetWebContents()->GetURL()) : std::string(); | 
| -} | 
| - | 
| bool AutofillManager::IsAutofillEnabled() const { | 
| return manager_delegate_->GetPrefs()->GetBoolean(prefs::kAutofillEnabled); | 
| } | 
| @@ -819,26 +755,6 @@ void AutofillManager::UploadFormDataAsyncCallback( | 
| UploadFormData(*submitted_form); | 
| } | 
|  | 
| -void AutofillManager::OnMaybeShowAutocheckoutBubble( | 
| -    const FormData& form, | 
| -    const gfx::RectF& bounding_box) { | 
| -  if (!IsAutofillEnabled()) | 
| -    return; | 
| - | 
| -  // Don't show bubble if corresponding FormStructure doesn't have anything to | 
| -  // autofill. | 
| -  FormStructure* cached_form; | 
| -  if (!FindCachedForm(form, &cached_form)) | 
| -    return; | 
| - | 
| -  // Don't offer Autocheckout bubble if Autofill server is not aware of this | 
| -  // form in the context of Autocheckout experiment. | 
| -  if (!HasServerSpecifiedFieldTypes(*cached_form)) | 
| -    return; | 
| - | 
| -  autocheckout_manager_.MaybeShowAutocheckoutBubble(form.origin, bounding_box); | 
| -} | 
| - | 
| void AutofillManager::UploadFormData(const FormStructure& submitted_form) { | 
| if (!download_manager_) | 
| return; | 
| @@ -883,7 +799,6 @@ AutofillManager::AutofillManager(AutofillDriver* driver, | 
| personal_data_(personal_data), | 
| autocomplete_history_manager_( | 
| new AutocompleteHistoryManager(driver, delegate)), | 
| -      autocheckout_manager_(this), | 
| metric_logger_(new AutofillMetrics), | 
| has_logged_autofill_enabled_(false), | 
| has_logged_address_suggestions_count_(false), | 
| @@ -983,7 +898,7 @@ bool AutofillManager::GetCachedFormAndField(const FormData& form, | 
| // If we do not have this form in our cache but it is parseable, we'll add it | 
| // in the call to |UpdateCachedForm()|. | 
| if (!FindCachedForm(form, form_structure) && | 
| -      !FormStructure(form, GetAutocheckoutURLPrefix()).ShouldBeParsed(false)) { | 
| +      !FormStructure(form).ShouldBeParsed(false)) { | 
| return false; | 
| } | 
|  | 
| @@ -1030,8 +945,7 @@ bool AutofillManager::UpdateCachedForm(const FormData& live_form, | 
| return false; | 
|  | 
| // Add the new or updated form to our cache. | 
| -  form_structures_.push_back( | 
| -      new FormStructure(live_form, GetAutocheckoutURLPrefix())); | 
| +  form_structures_.push_back(new FormStructure(live_form)); | 
| *updated_form = *form_structures_.rbegin(); | 
| (*updated_form)->DetermineHeuristicTypes(*metric_logger_); | 
|  | 
| @@ -1107,11 +1021,9 @@ void AutofillManager::GetCreditCardSuggestions( | 
|  | 
| void AutofillManager::ParseForms(const std::vector<FormData>& forms) { | 
| std::vector<FormStructure*> non_queryable_forms; | 
| -  std::string autocheckout_url_prefix = GetAutocheckoutURLPrefix(); | 
| for (std::vector<FormData>::const_iterator iter = forms.begin(); | 
| iter != forms.end(); ++iter) { | 
| -    scoped_ptr<FormStructure> form_structure( | 
| -        new FormStructure(*iter, autocheckout_url_prefix)); | 
| +    scoped_ptr<FormStructure> form_structure(new FormStructure(*iter)); | 
| if (!form_structure->ShouldBeParsed(false)) | 
| continue; | 
|  | 
| @@ -1125,13 +1037,7 @@ void AutofillManager::ParseForms(const std::vector<FormData>& forms) { | 
| non_queryable_forms.push_back(form_structure.release()); | 
| } | 
|  | 
| -  if (form_structures_.empty()) { | 
| -    // Call OnLoadedPageMetaData with no page metadata immediately if there is | 
| -    // no form in the page. This give |autocheckout_manager| a chance to | 
| -    // terminate Autocheckout and send Autocheckout status. | 
| -    autocheckout_manager_.OnLoadedPageMetaData( | 
| -        scoped_ptr<autofill::AutocheckoutPageMetaData>()); | 
| -  } else if (download_manager_) { | 
| +  if (!form_structures_.empty() && download_manager_) { | 
| // Query the server if we have at least one of the forms were parsed. | 
| download_manager_->StartQueryRequest(form_structures_.get(), | 
| *metric_logger_); | 
|  |