Home | History | Annotate | Download | only in autofill
      1 // Copyright (c) 2012 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/autofill/autofill_dialog_types.h"
      6 
      7 #include "base/logging.h"
      8 #include "grit/generated_resources.h"
      9 #include "ui/base/l10n/l10n_util.h"
     10 #include "ui/base/resource/resource_bundle.h"
     11 
     12 namespace autofill {
     13 
     14 int const kSplashDisplayDurationMs = 1200;
     15 int const kSplashFadeOutDurationMs = 200;
     16 int const kSplashFadeInDialogDurationMs = 150;
     17 
     18 DialogNotification::DialogNotification() : type_(NONE) {}
     19 
     20 DialogNotification::DialogNotification(Type type, const string16& display_text)
     21     : type_(type),
     22       display_text_(display_text),
     23       checked_(false),
     24       interactive_(true) {}
     25 
     26 SkColor DialogNotification::GetBackgroundColor() const {
     27   switch (type_) {
     28     case DialogNotification::AUTOCHECKOUT_SUCCESS:
     29     case DialogNotification::EXPLANATORY_MESSAGE:
     30     case DialogNotification::WALLET_USAGE_CONFIRMATION:
     31       return SkColorSetRGB(0xf5, 0xf5, 0xf5);
     32     case DialogNotification::REQUIRED_ACTION:
     33     case DialogNotification::WALLET_ERROR:
     34     case DialogNotification::AUTOCHECKOUT_ERROR:
     35       return SkColorSetRGB(0xfc, 0xf3, 0xbf);
     36     case DialogNotification::DEVELOPER_WARNING:
     37     case DialogNotification::SECURITY_WARNING:
     38     case DialogNotification::VALIDATION_ERROR:
     39       return kWarningColor;
     40     case DialogNotification::NONE:
     41       return SK_ColorTRANSPARENT;
     42   }
     43 
     44   NOTREACHED();
     45   return SK_ColorTRANSPARENT;
     46 }
     47 
     48 SkColor DialogNotification::GetBorderColor() const {
     49   switch (type_) {
     50     case DialogNotification::AUTOCHECKOUT_SUCCESS:
     51     case DialogNotification::EXPLANATORY_MESSAGE:
     52     case DialogNotification::WALLET_USAGE_CONFIRMATION:
     53       return SkColorSetRGB(0xe5, 0xe5, 0xe5);
     54     case DialogNotification::REQUIRED_ACTION:
     55     case DialogNotification::WALLET_ERROR:
     56     case DialogNotification::AUTOCHECKOUT_ERROR:
     57     case DialogNotification::DEVELOPER_WARNING:
     58     case DialogNotification::SECURITY_WARNING:
     59     case DialogNotification::VALIDATION_ERROR:
     60     case DialogNotification::NONE:
     61       return GetBackgroundColor();
     62   }
     63 
     64   NOTREACHED();
     65   return SK_ColorTRANSPARENT;
     66 }
     67 
     68 SkColor DialogNotification::GetTextColor() const {
     69   switch (type_) {
     70     case DialogNotification::REQUIRED_ACTION:
     71     case DialogNotification::WALLET_ERROR:
     72     case DialogNotification::AUTOCHECKOUT_ERROR:
     73     case DialogNotification::AUTOCHECKOUT_SUCCESS:
     74     case DialogNotification::EXPLANATORY_MESSAGE:
     75     case DialogNotification::WALLET_USAGE_CONFIRMATION:
     76       return SkColorSetRGB(102, 102, 102);
     77     case DialogNotification::DEVELOPER_WARNING:
     78     case DialogNotification::SECURITY_WARNING:
     79     case DialogNotification::VALIDATION_ERROR:
     80       return SK_ColorWHITE;
     81     case DialogNotification::NONE:
     82       return SK_ColorTRANSPARENT;
     83   }
     84 
     85   NOTREACHED();
     86   return SK_ColorTRANSPARENT;
     87 }
     88 
     89 bool DialogNotification::HasArrow() const {
     90   return type_ == DialogNotification::EXPLANATORY_MESSAGE ||
     91          type_ == DialogNotification::WALLET_ERROR ||
     92          type_ == DialogNotification::WALLET_USAGE_CONFIRMATION;
     93 }
     94 
     95 bool DialogNotification::HasCheckbox() const {
     96   return type_ == DialogNotification::WALLET_USAGE_CONFIRMATION;
     97 }
     98 
     99 DialogAutocheckoutStep::DialogAutocheckoutStep(AutocheckoutStepType type,
    100                                                AutocheckoutStepStatus status)
    101     : type_(type),
    102       status_(status) {}
    103 
    104 SkColor DialogAutocheckoutStep::GetTextColor() const {
    105   switch (status_) {
    106     case AUTOCHECKOUT_STEP_UNSTARTED:
    107       return SK_ColorGRAY;
    108 
    109     case AUTOCHECKOUT_STEP_STARTED:
    110     case AUTOCHECKOUT_STEP_COMPLETED:
    111       return SK_ColorBLACK;
    112 
    113     case AUTOCHECKOUT_STEP_FAILED:
    114       return SK_ColorRED;
    115   }
    116 
    117   NOTREACHED();
    118   return SK_ColorTRANSPARENT;
    119 }
    120 
    121 gfx::Font DialogAutocheckoutStep::GetTextFont() const {
    122   gfx::Font::FontStyle font_style = gfx::Font::NORMAL;
    123   switch (status_) {
    124     case AUTOCHECKOUT_STEP_UNSTARTED:
    125     case AUTOCHECKOUT_STEP_STARTED:
    126       font_style = gfx::Font::NORMAL;
    127       break;
    128 
    129     case AUTOCHECKOUT_STEP_COMPLETED:
    130     case AUTOCHECKOUT_STEP_FAILED:
    131       font_style = gfx::Font::BOLD;
    132       break;
    133   }
    134 
    135   return ui::ResourceBundle::GetSharedInstance().GetFont(
    136       ui::ResourceBundle::BaseFont).DeriveFont(0, font_style);
    137 }
    138 
    139 bool DialogAutocheckoutStep::IsIconVisible() const {
    140   return status_ == AUTOCHECKOUT_STEP_COMPLETED;
    141 }
    142 
    143 string16 DialogAutocheckoutStep::GetDisplayText() const {
    144   int description_id = -1;
    145   switch (status_) {
    146     case AUTOCHECKOUT_STEP_UNSTARTED:
    147       switch (type_) {
    148         case AUTOCHECKOUT_STEP_SHIPPING:
    149           description_id = IDS_AUTOFILL_STEP_SHIPPING_DETAILS_UNSTARTED;
    150           break;
    151 
    152         case AUTOCHECKOUT_STEP_DELIVERY:
    153           description_id = IDS_AUTOFILL_STEP_DELIVERY_DETAILS_UNSTARTED;
    154           break;
    155 
    156         case AUTOCHECKOUT_STEP_BILLING:
    157           description_id = IDS_AUTOFILL_STEP_BILLING_DETAILS_UNSTARTED;
    158           break;
    159 
    160         case AUTOCHECKOUT_STEP_PROXY_CARD:
    161           description_id = IDS_AUTOFILL_STEP_PROXY_CARD_UNSTARTED;
    162           break;
    163       }
    164       break;
    165 
    166     case AUTOCHECKOUT_STEP_STARTED:
    167       switch (type_) {
    168         case AUTOCHECKOUT_STEP_SHIPPING:
    169           description_id = IDS_AUTOFILL_STEP_SHIPPING_DETAILS_STARTED;
    170           break;
    171 
    172         case AUTOCHECKOUT_STEP_DELIVERY:
    173           description_id = IDS_AUTOFILL_STEP_DELIVERY_DETAILS_STARTED;
    174           break;
    175 
    176         case AUTOCHECKOUT_STEP_BILLING:
    177           description_id = IDS_AUTOFILL_STEP_BILLING_DETAILS_STARTED;
    178           break;
    179 
    180         case AUTOCHECKOUT_STEP_PROXY_CARD:
    181           description_id = IDS_AUTOFILL_STEP_PROXY_CARD_STARTED;
    182           break;
    183       }
    184       break;
    185 
    186     case AUTOCHECKOUT_STEP_COMPLETED:
    187       switch (type_) {
    188         case AUTOCHECKOUT_STEP_SHIPPING:
    189           description_id = IDS_AUTOFILL_STEP_SHIPPING_DETAILS_COMPLETE;
    190           break;
    191 
    192         case AUTOCHECKOUT_STEP_DELIVERY:
    193           description_id = IDS_AUTOFILL_STEP_DELIVERY_DETAILS_COMPLETE;
    194           break;
    195 
    196         case AUTOCHECKOUT_STEP_BILLING:
    197           description_id = IDS_AUTOFILL_STEP_BILLING_DETAILS_COMPLETE;
    198           break;
    199 
    200         case AUTOCHECKOUT_STEP_PROXY_CARD:
    201           description_id = IDS_AUTOFILL_STEP_PROXY_CARD_COMPLETE;
    202           break;
    203       }
    204       break;
    205 
    206     case AUTOCHECKOUT_STEP_FAILED:
    207       switch (type_) {
    208         case AUTOCHECKOUT_STEP_SHIPPING:
    209           description_id = IDS_AUTOFILL_STEP_SHIPPING_DETAILS_FAILED;
    210           break;
    211 
    212         case AUTOCHECKOUT_STEP_DELIVERY:
    213           description_id = IDS_AUTOFILL_STEP_DELIVERY_DETAILS_FAILED;
    214           break;
    215 
    216         case AUTOCHECKOUT_STEP_BILLING:
    217           description_id = IDS_AUTOFILL_STEP_BILLING_DETAILS_FAILED;
    218           break;
    219 
    220         case AUTOCHECKOUT_STEP_PROXY_CARD:
    221           description_id = IDS_AUTOFILL_STEP_PROXY_CARD_FAILED;
    222           break;
    223       }
    224       break;
    225   }
    226 
    227   return l10n_util::GetStringUTF16(description_id);
    228 }
    229 
    230 SkColor const kWarningColor = SkColorSetRGB(0xde, 0x49, 0x32);
    231 
    232 SuggestionState::SuggestionState()
    233     : visible(false) {}
    234 SuggestionState::SuggestionState(bool visible,
    235                                  const string16& vertically_compact_text,
    236                                  const string16& horizontally_compact_text,
    237                                  const gfx::Image& icon,
    238                                  const string16& extra_text,
    239                                  const gfx::Image& extra_icon)
    240     : visible(visible),
    241       vertically_compact_text(vertically_compact_text),
    242       horizontally_compact_text(horizontally_compact_text),
    243       icon(icon),
    244       extra_text(extra_text),
    245       extra_icon(extra_icon) {}
    246 SuggestionState::~SuggestionState() {}
    247 
    248 DialogOverlayString::DialogOverlayString() : alignment(gfx::ALIGN_LEFT) {}
    249 DialogOverlayString::~DialogOverlayString() {}
    250 
    251 DialogOverlayState::DialogOverlayState() {}
    252 DialogOverlayState::~DialogOverlayState() {}
    253 
    254 }  // namespace autofill
    255