| Index: chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc | 
| diff --git a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc | 
| index 3fec283cb0ceef3c310a5b699ccc806f2fc4ca33..c4f8a6d688f3dce16f5783cde947375d8120dac7 100644 | 
| --- a/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc | 
| +++ b/chrome/browser/ui/autofill/autofill_dialog_controller_impl.cc | 
| @@ -442,12 +442,6 @@ AutofillDialogControllerImpl::~AutofillDialogControllerImpl() { | 
|  | 
| GetMetricLogger().LogDialogInitialUserState( | 
| GetDialogType(), initial_user_state_); | 
| - | 
| -  if (deemphasized_render_view_ && web_contents()) { | 
| -    web_contents()->GetRenderViewHost()->Send( | 
| -        new ChromeViewMsg_SetVisuallyDeemphasized( | 
| -            web_contents()->GetRenderViewHost()->GetRoutingID(), false)); | 
| -  } | 
| } | 
|  | 
| // static | 
| @@ -610,68 +604,10 @@ void AutofillDialogControllerImpl::TabActivated() { | 
| } | 
| } | 
|  | 
| -void AutofillDialogControllerImpl::OnAutocheckoutError() { | 
| -  DCHECK_EQ(AUTOCHECKOUT_IN_PROGRESS, autocheckout_state_); | 
| -  GetMetricLogger().LogAutocheckoutDuration( | 
| -      base::Time::Now() - autocheckout_started_timestamp_, | 
| -      AutofillMetrics::AUTOCHECKOUT_FAILED); | 
| -  SetAutocheckoutState(AUTOCHECKOUT_ERROR); | 
| -  autocheckout_started_timestamp_ = base::Time(); | 
| -} | 
| - | 
| -void AutofillDialogControllerImpl::OnAutocheckoutSuccess() { | 
| -  DCHECK_EQ(AUTOCHECKOUT_IN_PROGRESS, autocheckout_state_); | 
| -  GetMetricLogger().LogAutocheckoutDuration( | 
| -      base::Time::Now() - autocheckout_started_timestamp_, | 
| -      AutofillMetrics::AUTOCHECKOUT_SUCCEEDED); | 
| -  SetAutocheckoutState(AUTOCHECKOUT_SUCCESS); | 
| -  autocheckout_started_timestamp_ = base::Time(); | 
| -} | 
| - | 
| - | 
| TestableAutofillDialogView* AutofillDialogControllerImpl::GetTestableView() { | 
| return view_ ? view_->GetTestableView() : NULL; | 
| } | 
|  | 
| -void AutofillDialogControllerImpl::AddAutocheckoutStep( | 
| -    AutocheckoutStepType step_type) { | 
| -  for (size_t i = 0; i < steps_.size(); ++i) { | 
| -    if (steps_[i].type() == step_type) | 
| -      return; | 
| -  } | 
| -  steps_.push_back( | 
| -      DialogAutocheckoutStep(step_type, AUTOCHECKOUT_STEP_UNSTARTED)); | 
| -} | 
| - | 
| -void AutofillDialogControllerImpl::UpdateAutocheckoutStep( | 
| -    AutocheckoutStepType step_type, | 
| -    AutocheckoutStepStatus step_status) { | 
| -  ScopedViewUpdates updates(view_.get()); | 
| - | 
| -  int total_steps = 0; | 
| -  int completed_steps = 0; | 
| -  for (size_t i = 0; i < steps_.size(); ++i) { | 
| -    ++total_steps; | 
| -    if (steps_[i].status() == AUTOCHECKOUT_STEP_COMPLETED) | 
| -      ++completed_steps; | 
| -    if (steps_[i].type() == step_type && steps_[i].status() != step_status) | 
| -      steps_[i] = DialogAutocheckoutStep(step_type, step_status); | 
| -  } | 
| -  if (view_) { | 
| -    view_->UpdateAutocheckoutStepsArea(); | 
| -    view_->UpdateProgressBar(1.0 * completed_steps / total_steps); | 
| -  } | 
| -} | 
| - | 
| -std::vector<DialogAutocheckoutStep> | 
| -    AutofillDialogControllerImpl::CurrentAutocheckoutSteps() const { | 
| -  if (autocheckout_state_ != AUTOCHECKOUT_NOT_STARTED) | 
| -    return steps_; | 
| - | 
| -  std::vector<DialogAutocheckoutStep> empty_steps; | 
| -  return empty_steps; | 
| -} | 
| - | 
| //////////////////////////////////////////////////////////////////////////////// | 
| // AutofillDialogViewDelegate implementation. | 
|  | 
| @@ -688,11 +624,6 @@ string16 AutofillDialogControllerImpl::CancelButtonText() const { | 
| } | 
|  | 
| string16 AutofillDialogControllerImpl::ConfirmButtonText() const { | 
| -  if (autocheckout_state_ == AUTOCHECKOUT_ERROR) | 
| -    return l10n_util::GetStringUTF16(IDS_OK); | 
| -  if (autocheckout_state_ == AUTOCHECKOUT_SUCCESS) | 
| -    return l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_CONTINUE_BUTTON); | 
| - | 
| return l10n_util::GetStringUTF16(IsSubmitPausedOn(wallet::VERIFY_CVV) ? | 
| IDS_AUTOFILL_DIALOG_VERIFY_BUTTON : IDS_AUTOFILL_DIALOG_SUBMIT_BUTTON); | 
| } | 
| @@ -706,7 +637,7 @@ string16 AutofillDialogControllerImpl::SaveLocallyTooltip() const { | 
| } | 
|  | 
| string16 AutofillDialogControllerImpl::LegalDocumentsText() { | 
| -  if (!IsPayingWithWallet() || autocheckout_state_ != AUTOCHECKOUT_NOT_STARTED) | 
| +  if (!IsPayingWithWallet()) | 
| return string16(); | 
|  | 
| EnsureLegalDocumentsText(); | 
| @@ -755,16 +686,11 @@ bool AutofillDialogControllerImpl::ShouldOfferToSaveInChrome() const { | 
| return !IsPayingWithWallet() && | 
| !profile_->IsOffTheRecord() && | 
| IsManuallyEditingAnySection() && | 
| -      ShouldShowDetailArea() && | 
| !ShouldShowSpinner(); | 
| } | 
|  | 
| int AutofillDialogControllerImpl::GetDialogButtons() const { | 
| -  if (autocheckout_state_ == AUTOCHECKOUT_IN_PROGRESS) | 
| -    return ui::DIALOG_BUTTON_CANCEL; | 
| -  if (autocheckout_state_ == AUTOCHECKOUT_NOT_STARTED) | 
| -    return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL; | 
| -  return ui::DIALOG_BUTTON_OK; | 
| +  return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL; | 
| } | 
|  | 
| bool AutofillDialogControllerImpl::IsDialogButtonEnabled( | 
| @@ -773,14 +699,9 @@ bool AutofillDialogControllerImpl::IsDialogButtonEnabled( | 
| if (IsSubmitPausedOn(wallet::VERIFY_CVV)) | 
| return true; | 
|  | 
| -    if (ShouldShowSpinner()) | 
| +    if (ShouldShowSpinner() || is_submitting_) | 
| return false; | 
|  | 
| -    if (is_submitting_) { | 
| -      return autocheckout_state_ == AUTOCHECKOUT_SUCCESS || | 
| -             autocheckout_state_ == AUTOCHECKOUT_ERROR; | 
| -    } | 
| - | 
| return true; | 
| } | 
|  | 
| @@ -1221,20 +1142,8 @@ gfx::Image AutofillDialogControllerImpl::AccountChooserImage() { | 
| return icon; | 
| } | 
|  | 
| -bool AutofillDialogControllerImpl::ShouldShowDetailArea() const { | 
| -  // Hide the detail area when Autocheckout is running or there was an error (as | 
| -  // there's nothing they can do after an error but cancel). | 
| -  return autocheckout_state_ == AUTOCHECKOUT_NOT_STARTED; | 
| -} | 
| - | 
| -bool AutofillDialogControllerImpl::ShouldShowProgressBar() const { | 
| -  // Show the progress bar while Autocheckout is running but hide it on errors, | 
| -  // as there's no use leaving it up if the flow has failed. | 
| -  return autocheckout_state_ == AUTOCHECKOUT_IN_PROGRESS; | 
| -} | 
| - | 
| gfx::Image AutofillDialogControllerImpl::ButtonStripImage() const { | 
| -  if (ShouldShowDetailArea() && IsPayingWithWallet()) { | 
| +  if (IsPayingWithWallet()) { | 
| return ui::ResourceBundle::GetSharedInstance().GetImageNamed( | 
| IDR_WALLET_LOGO); | 
| } | 
| @@ -1795,9 +1704,6 @@ gfx::Image AutofillDialogControllerImpl::SplashPageImage() const { | 
| void AutofillDialogControllerImpl::ViewClosed() { | 
| GetManager()->RemoveObserver(this); | 
|  | 
| -  // TODO(ahutter): Once a user can cancel Autocheckout mid-flow, log that | 
| -  // metric here. | 
| - | 
| // Called from here rather than in ~AutofillDialogControllerImpl as this | 
| // relies on virtual methods that change to their base class in the dtor. | 
| MaybeShowCreditCardBubble(); | 
| @@ -1843,18 +1749,6 @@ std::vector<DialogNotification> AutofillDialogControllerImpl:: | 
| l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_VERIFY_CVV))); | 
| } | 
|  | 
| -  if (autocheckout_state_ == AUTOCHECKOUT_ERROR) { | 
| -    notifications.push_back(DialogNotification( | 
| -        DialogNotification::AUTOCHECKOUT_ERROR, | 
| -        l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_ERROR))); | 
| -  } | 
| - | 
| -  if (autocheckout_state_ == AUTOCHECKOUT_SUCCESS) { | 
| -    notifications.push_back(DialogNotification( | 
| -        DialogNotification::AUTOCHECKOUT_SUCCESS, | 
| -        l10n_util::GetStringUTF16(IDS_AUTOFILL_DIALOG_AUTOCHECKOUT_SUCCESS))); | 
| -  } | 
| - | 
| if (!wallet_server_validation_recoverable_) { | 
| notifications.push_back(DialogNotification( | 
| DialogNotification::REQUIRED_ACTION, | 
| @@ -1869,8 +1763,7 @@ std::vector<DialogNotification> AutofillDialogControllerImpl:: | 
| IDS_AUTOFILL_DIALOG_CHOOSE_DIFFERENT_WALLET_INSTRUMENT))); | 
| } | 
|  | 
| -  if (should_show_wallet_promo_ && ShouldShowDetailArea() && | 
| -      notifications.empty()) { | 
| +  if (should_show_wallet_promo_ && notifications.empty()) { | 
| if (IsPayingWithWallet() && HasCompleteWallet()) { | 
| notifications.push_back(DialogNotification( | 
| DialogNotification::EXPLANATORY_MESSAGE, | 
| @@ -1946,43 +1839,16 @@ void AutofillDialogControllerImpl::OverlayButtonPressed() { | 
|  | 
| bool AutofillDialogControllerImpl::OnCancel() { | 
| HidePopup(); | 
| -  if (autocheckout_state_ == AUTOCHECKOUT_NOT_STARTED && !is_submitting_) | 
| +  if (!is_submitting_) | 
| LogOnCancelMetrics(); | 
| -  if (autocheckout_state_ == AUTOCHECKOUT_IN_PROGRESS) { | 
| -    GetMetricLogger().LogAutocheckoutDuration( | 
| -        base::Time::Now() - autocheckout_started_timestamp_, | 
| -        AutofillMetrics::AUTOCHECKOUT_CANCELLED); | 
| -  } | 
| callback_.Run(NULL, std::string()); | 
| return true; | 
| } | 
|  | 
| bool AutofillDialogControllerImpl::OnAccept() { | 
| -  // If autocheckout has already started, the only thing left to do is to | 
| -  // close the dialog. | 
| -  if (autocheckout_state_ != AUTOCHECKOUT_NOT_STARTED) | 
| -    return true; | 
| - | 
| choose_another_instrument_or_address_ = false; | 
| wallet_server_validation_recoverable_ = true; | 
| HidePopup(); | 
| -  if (IsPayingWithWallet()) { | 
| -    bool has_proxy_card_step = false; | 
| -    for (size_t i = 0; i < steps_.size(); ++i) { | 
| -      if (steps_[i].type() == AUTOCHECKOUT_STEP_PROXY_CARD) { | 
| -        has_proxy_card_step = true; | 
| -        break; | 
| -      } | 
| -    } | 
| -    if (!has_proxy_card_step) { | 
| -      steps_.insert(steps_.begin(), | 
| -                    DialogAutocheckoutStep(AUTOCHECKOUT_STEP_PROXY_CARD, | 
| -                                           AUTOCHECKOUT_STEP_UNSTARTED)); | 
| -    } | 
| -  } | 
| - | 
| -  if (GetDialogType() == DIALOG_TYPE_AUTOCHECKOUT) | 
| -    DeemphasizeRenderView(); | 
|  | 
| SetIsSubmitting(true); | 
| if (IsSubmitPausedOn(wallet::VERIFY_CVV)) { | 
| @@ -2167,14 +2033,10 @@ void AutofillDialogControllerImpl::OnDidGetFullWallet( | 
| full_wallet_ = full_wallet.Pass(); | 
|  | 
| if (full_wallet_->required_actions().empty()) { | 
| -    UpdateAutocheckoutStep(AUTOCHECKOUT_STEP_PROXY_CARD, | 
| -                           AUTOCHECKOUT_STEP_COMPLETED); | 
| FinishSubmit(); | 
| return; | 
| } | 
|  | 
| -  SetAutocheckoutState(AUTOCHECKOUT_NOT_STARTED); | 
| - | 
| switch (full_wallet_->required_actions()[0]) { | 
| case wallet::CHOOSE_ANOTHER_INSTRUMENT_OR_ADDRESS: | 
| choose_another_instrument_or_address_ = true; | 
| @@ -2345,7 +2207,7 @@ AutofillDialogControllerImpl::AutofillDialogControllerImpl( | 
| profile_(Profile::FromBrowserContext(contents->GetBrowserContext())), | 
| initial_user_state_(AutofillMetrics::DIALOG_USER_STATE_UNKNOWN), | 
| dialog_type_(dialog_type), | 
| -      form_structure_(form_structure, std::string()), | 
| +      form_structure_(form_structure), | 
| invoked_from_same_origin_(true), | 
| source_url_(source_url), | 
| callback_(callback), | 
| @@ -2368,9 +2230,7 @@ AutofillDialogControllerImpl::AutofillDialogControllerImpl( | 
| choose_another_instrument_or_address_(false), | 
| wallet_server_validation_recoverable_(true), | 
| data_was_passed_back_(false), | 
| -      autocheckout_state_(AUTOCHECKOUT_NOT_STARTED), | 
| -      was_ui_latency_logged_(false), | 
| -      deemphasized_render_view_(false) { | 
| +      was_ui_latency_logged_(false) { | 
| // TODO(estade): remove duplicates from |form_structure|? | 
| DCHECK(!callback_.is_null()); | 
| } | 
| @@ -2464,14 +2324,6 @@ void AutofillDialogControllerImpl::DisableWallet( | 
| wallet_items_.reset(); | 
| wallet_errors_.clear(); | 
| GetWalletClient()->CancelRequests(); | 
| -  SetAutocheckoutState(AUTOCHECKOUT_NOT_STARTED); | 
| -  for (std::vector<DialogAutocheckoutStep>::iterator it = steps_.begin(); | 
| -      it != steps_.end(); ++it) { | 
| -    if (it->type() == AUTOCHECKOUT_STEP_PROXY_CARD) { | 
| -      steps_.erase(it); | 
| -      break; | 
| -    } | 
| -  } | 
| SetIsSubmitting(false); | 
| account_chooser_model_.SetHadWalletError(WalletErrorMessage(error_type)); | 
| } | 
| @@ -3051,11 +2903,6 @@ void AutofillDialogControllerImpl::SubmitWithWallet() { | 
| DCHECK(!active_address_id_.empty()); | 
| } | 
|  | 
| -  if (GetDialogType() == DIALOG_TYPE_AUTOCHECKOUT) { | 
| -    DCHECK_EQ(AUTOCHECKOUT_NOT_STARTED, autocheckout_state_); | 
| -    SetAutocheckoutState(AUTOCHECKOUT_IN_PROGRESS); | 
| -  } | 
| - | 
| scoped_ptr<wallet::Instrument> inputted_instrument = | 
| CreateTransientInstrument(); | 
| if (inputted_instrument && IsEditingExistingData(SECTION_CC_BILLING)) { | 
| @@ -3140,9 +2987,6 @@ void AutofillDialogControllerImpl::GetFullWallet() { | 
| std::vector<wallet::WalletClient::RiskCapability> capabilities; | 
| capabilities.push_back(wallet::WalletClient::VERIFY_CVC); | 
|  | 
| -  UpdateAutocheckoutStep(AUTOCHECKOUT_STEP_PROXY_CARD, | 
| -                         AUTOCHECKOUT_STEP_STARTED); | 
| - | 
| GetWalletClient()->GetFullWallet(wallet::WalletClient::FullWalletRequest( | 
| active_instrument_id_, | 
| active_address_id_, | 
| @@ -3166,7 +3010,6 @@ void AutofillDialogControllerImpl::HandleSaveOrUpdateRequiredActions( | 
| DisableWallet(wallet::WalletClient::UNKNOWN_ERROR); | 
| } | 
| } | 
| -  SetAutocheckoutState(AUTOCHECKOUT_NOT_STARTED); | 
| SetIsSubmitting(false); | 
| } | 
|  | 
| @@ -3235,14 +3078,6 @@ void AutofillDialogControllerImpl::FinishSubmit() { | 
| !account_chooser_model_.WalletIsSelected()); | 
| } | 
|  | 
| -  if (GetDialogType() == DIALOG_TYPE_AUTOCHECKOUT) { | 
| -    // Stop observing PersonalDataManager to avoid the dialog redrawing while | 
| -    // in an Autocheckout flow. | 
| -    GetManager()->RemoveObserver(this); | 
| -    autocheckout_started_timestamp_ = base::Time::Now(); | 
| -    SetAutocheckoutState(AUTOCHECKOUT_IN_PROGRESS); | 
| -  } | 
| - | 
| LogOnFinishSubmitMetrics(); | 
|  | 
| // Callback should be called as late as possible. | 
| @@ -3393,28 +3228,6 @@ void AutofillDialogControllerImpl::LogDialogLatencyToShow() { | 
| was_ui_latency_logged_ = true; | 
| } | 
|  | 
| -void AutofillDialogControllerImpl::SetAutocheckoutState( | 
| -    AutocheckoutState autocheckout_state) { | 
| -  if (autocheckout_state_ == autocheckout_state) | 
| -    return; | 
| - | 
| -  autocheckout_state_ = autocheckout_state; | 
| -  if (view_) { | 
| -    ScopedViewUpdates updates(view_.get()); | 
| -    view_->UpdateDetailArea(); | 
| -    view_->UpdateButtonStrip(); | 
| -    view_->UpdateAutocheckoutStepsArea(); | 
| -    view_->UpdateNotificationArea(); | 
| -  } | 
| -} | 
| - | 
| -void AutofillDialogControllerImpl::DeemphasizeRenderView() { | 
| -  web_contents()->GetRenderViewHost()->Send( | 
| -      new ChromeViewMsg_SetVisuallyDeemphasized( | 
| -          web_contents()->GetRenderViewHost()->GetRoutingID(), true)); | 
| -  deemphasized_render_view_ = true; | 
| -} | 
| - | 
| AutofillMetrics::DialogInitialUserStateMetric | 
| AutofillDialogControllerImpl::GetInitialUserState() const { | 
| // Consider a user to be an Autofill user if the user has any credit cards | 
| @@ -3478,12 +3291,6 @@ void AutofillDialogControllerImpl::MaybeShowCreditCardBubble() { | 
| if (!full_wallet_ || !full_wallet_->billing_address()) | 
| return; | 
|  | 
| -  // Don't show GeneratedCardBubble if Autocheckout failed. | 
| -  if (GetDialogType() == DIALOG_TYPE_AUTOCHECKOUT && | 
| -      autocheckout_state_ != AUTOCHECKOUT_SUCCESS) { | 
| -    return; | 
| -  } | 
| - | 
| base::string16 backing_last_four; | 
| if (ActiveInstrument()) { | 
| backing_last_four = ActiveInstrument()->TypeAndLastFourDigits(); | 
|  |