| OLD | NEW | 
| (Empty) |  | 
 |   1 // Copyright 2017 The Chromium Authors. All rights reserved. | 
 |   2 // Use of this source code is governed by a BSD-style license that can be | 
 |   3 // found in the LICENSE file. | 
 |   4  | 
 |   5 #include "chrome/browser/ui/views/payments/validating_combobox.h" | 
 |   6  | 
 |   7 #include <utility> | 
 |   8  | 
 |   9 namespace payments { | 
 |  10  | 
 |  11 ValidatingCombobox::ValidatingCombobox( | 
 |  12     std::unique_ptr<ui::ComboboxModel> model, | 
 |  13     std::unique_ptr<ValidationDelegate> delegate) | 
 |  14     : Combobox(std::move(model)), | 
 |  15       delegate_(std::move(delegate)), | 
 |  16       was_blurred_(false) {} | 
 |  17  | 
 |  18 ValidatingCombobox::~ValidatingCombobox() {} | 
 |  19  | 
 |  20 void ValidatingCombobox::OnBlur() { | 
 |  21   Combobox::OnBlur(); | 
 |  22  | 
 |  23   // The first validation should be on a blur. The subsequent validations will | 
 |  24   // occur when the content changes. | 
 |  25   if (!was_blurred_) { | 
 |  26     was_blurred_ = true; | 
 |  27     Validate(); | 
 |  28   } | 
 |  29 } | 
 |  30  | 
 |  31 void ValidatingCombobox::OnContentsChanged() { | 
 |  32   // Validation on every keystroke only happens if the field has been validated | 
 |  33   // before as part of a blur. | 
 |  34   if (!was_blurred_) | 
 |  35     return; | 
 |  36  | 
 |  37   Validate(); | 
 |  38 } | 
 |  39  | 
 |  40 void ValidatingCombobox::Validate() { | 
 |  41   // ValidateCombobox may have side-effects, such as displaying errors. | 
 |  42   SetInvalid(!delegate_->ValidateCombobox(this)); | 
 |  43 } | 
 |  44  | 
 |  45 }  // namespace payments | 
| OLD | NEW |