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

Side by Side Diff: chrome/browser/ui/views/content_setting_bubble_contents.cc

Issue 23537029: Save password functionality added to the save password bubble (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Review 5 Created 7 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 unified diff | Download patch
« no previous file with comments | « chrome/browser/ui/views/content_setting_bubble_contents.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/ui/views/content_setting_bubble_contents.h" 5 #include "chrome/browser/ui/views/content_setting_bubble_contents.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <set> 8 #include <set>
9 #include <string> 9 #include <string>
10 #include <vector> 10 #include <vector>
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after
139 // ContentSettingBubbleContents ----------------------------------------------- 139 // ContentSettingBubbleContents -----------------------------------------------
140 140
141 ContentSettingBubbleContents::ContentSettingBubbleContents( 141 ContentSettingBubbleContents::ContentSettingBubbleContents(
142 ContentSettingBubbleModel* content_setting_bubble_model, 142 ContentSettingBubbleModel* content_setting_bubble_model,
143 WebContents* web_contents, 143 WebContents* web_contents,
144 views::View* anchor_view, 144 views::View* anchor_view,
145 views::BubbleBorder::Arrow arrow) 145 views::BubbleBorder::Arrow arrow)
146 : BubbleDelegateView(anchor_view, arrow), 146 : BubbleDelegateView(anchor_view, arrow),
147 content_setting_bubble_model_(content_setting_bubble_model), 147 content_setting_bubble_model_(content_setting_bubble_model),
148 web_contents_(web_contents), 148 web_contents_(web_contents),
149 cancel_button_(NULL),
150 save_button_(NULL),
149 custom_link_(NULL), 151 custom_link_(NULL),
150 manage_link_(NULL), 152 manage_link_(NULL),
151 close_button_(NULL), 153 close_button_(NULL) {
152 never_button_(NULL),
153 save_button_(NULL) {
154 // Compensate for built-in vertical padding in the anchor view's image. 154 // Compensate for built-in vertical padding in the anchor view's image.
155 set_anchor_view_insets(gfx::Insets(5, 0, 5, 0)); 155 set_anchor_view_insets(gfx::Insets(5, 0, 5, 0));
156 156
157 registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED, 157 registrar_.Add(this, content::NOTIFICATION_WEB_CONTENTS_DESTROYED,
158 content::Source<WebContents>(web_contents)); 158 content::Source<WebContents>(web_contents));
159 } 159 }
160 160
161 ContentSettingBubbleContents::~ContentSettingBubbleContents() { 161 ContentSettingBubbleContents::~ContentSettingBubbleContents() {
162 STLDeleteValues(&media_menus_); 162 STLDeleteValues(&media_menus_);
163 } 163 }
(...skipping 212 matching lines...) Expand 10 before | Expand all | Expand 10 after
376 custom_link_ = new views::Link(UTF8ToUTF16(bubble_content.custom_link)); 376 custom_link_ = new views::Link(UTF8ToUTF16(bubble_content.custom_link));
377 custom_link_->SetEnabled(bubble_content.custom_link_enabled); 377 custom_link_->SetEnabled(bubble_content.custom_link_enabled);
378 custom_link_->set_listener(this); 378 custom_link_->set_listener(this);
379 if (!bubble_content_empty) 379 if (!bubble_content_empty)
380 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 380 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
381 layout->StartRow(0, kSingleColumnSetId); 381 layout->StartRow(0, kSingleColumnSetId);
382 layout->AddView(custom_link_); 382 layout->AddView(custom_link_);
383 bubble_content_empty = false; 383 bubble_content_empty = false;
384 } 384 }
385 385
386 if (!bubble_content_empty) { 386 const int kDoubleColumnSetId = 1;
387 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing); 387 views::ColumnSet* double_column_set =
388 layout->StartRow(0, kSingleColumnSetId); 388 layout->AddColumnSet(kDoubleColumnSetId);
389 layout->AddView(new views::Separator(views::Separator::HORIZONTAL), 1, 1,
390 GridLayout::FILL, GridLayout::FILL);
391 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
392 }
393
394 if (content_setting_bubble_model_->content_type() == 389 if (content_setting_bubble_model_->content_type() ==
395 CONTENT_SETTINGS_TYPE_SAVE_PASSWORD) { 390 CONTENT_SETTINGS_TYPE_SAVE_PASSWORD) {
396 const int kDoubleColumnSetId = 2;
397 views::ColumnSet* double_column_set =
398 layout->AddColumnSet(kDoubleColumnSetId);
399 double_column_set->AddColumn(GridLayout::TRAILING, GridLayout::CENTER, 1, 391 double_column_set->AddColumn(GridLayout::TRAILING, GridLayout::CENTER, 1,
400 GridLayout::USE_PREF, 0, 0); 392 GridLayout::USE_PREF, 0, 0);
401 double_column_set->AddPaddingColumn( 393 double_column_set->AddPaddingColumn(
402 0, views::kRelatedControlSmallVerticalSpacing); 394 0, views::kRelatedControlSmallVerticalSpacing);
403 double_column_set->AddColumn(GridLayout::TRAILING, GridLayout::CENTER, 0, 395 double_column_set->AddColumn(GridLayout::TRAILING, GridLayout::CENTER, 0,
404 GridLayout::USE_PREF, 0, 0); 396 GridLayout::USE_PREF, 0, 0);
405 397
406 const int kSingleColumnRightSetId = 1; 398 const int kSingleColumnRightSetId = 2;
407 views::ColumnSet* right_column_set = 399 views::ColumnSet* right_column_set =
408 layout->AddColumnSet(kSingleColumnRightSetId); 400 layout->AddColumnSet(kSingleColumnRightSetId);
409 right_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1, 401 right_column_set->AddColumn(GridLayout::LEADING, GridLayout::FILL, 1,
410 GridLayout::USE_PREF, 0, 0); 402 GridLayout::USE_PREF, 0, 0);
411 403
412 never_button_ = new views::LabelButton( 404 cancel_button_ = new views::LabelButton(
413 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_BLACKLIST_BUTTON)); 405 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_BLACKLIST_BUTTON));
414 never_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON); 406 cancel_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
415 save_button_ = new views::LabelButton( 407 save_button_ = new views::LabelButton(
416 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SAVE_BUTTON)); 408 this, l10n_util::GetStringUTF16(IDS_PASSWORD_MANAGER_SAVE_BUTTON));
417 save_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON); 409 save_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
418 manage_link_ = new views::Link(UTF8ToUTF16(bubble_content.manage_link)); 410 manage_link_ = new views::Link(UTF8ToUTF16(bubble_content.manage_link));
419 manage_link_->set_listener(this); 411 manage_link_->set_listener(this);
420 412
421 // Buttons row 413 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
414
422 layout->StartRow(0, kDoubleColumnSetId); 415 layout->StartRow(0, kDoubleColumnSetId);
423 layout->AddView(never_button_); 416 layout->AddView(cancel_button_);
424 layout->AddView(save_button_); 417 layout->AddView(save_button_);
425 418
426 // Manage link row 419 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
420 layout->StartRow(0, kSingleColumnSetId);
421 layout->AddView(new views::Separator(views::Separator::HORIZONTAL), 1, 1,
422 GridLayout::FILL, GridLayout::FILL);
423 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
424
427 layout->StartRow(0, kSingleColumnRightSetId); 425 layout->StartRow(0, kSingleColumnRightSetId);
428 layout->AddView(manage_link_); 426 layout->AddView(manage_link_);
429 } else { 427 } else {
430 const int kDoubleColumnSetId = 1; 428 if (!bubble_content_empty) {
431 views::ColumnSet* double_column_set = 429 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
432 layout->AddColumnSet(kDoubleColumnSetId); 430 layout->StartRow(0, kSingleColumnSetId);
431 layout->AddView(new views::Separator(views::Separator::HORIZONTAL), 1, 1,
432 GridLayout::FILL, GridLayout::FILL);
433 layout->AddPaddingRow(0, views::kRelatedControlVerticalSpacing);
434 }
435
433 double_column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 1, 436 double_column_set->AddColumn(GridLayout::LEADING, GridLayout::CENTER, 1,
434 GridLayout::USE_PREF, 0, 0); 437 GridLayout::USE_PREF, 0, 0);
435 double_column_set->AddPaddingColumn( 438 double_column_set->AddPaddingColumn(
436 0, views::kUnrelatedControlHorizontalSpacing); 439 0, views::kUnrelatedControlHorizontalSpacing);
437 double_column_set->AddColumn(GridLayout::TRAILING, GridLayout::CENTER, 0, 440 double_column_set->AddColumn(GridLayout::TRAILING, GridLayout::CENTER, 0,
438 GridLayout::USE_PREF, 0, 0); 441 GridLayout::USE_PREF, 0, 0);
439 442
440 layout->StartRow(0, kDoubleColumnSetId); 443 layout->StartRow(0, kDoubleColumnSetId);
441 manage_link_ = new views::Link(UTF8ToUTF16(bubble_content.manage_link)); 444 manage_link_ = new views::Link(UTF8ToUTF16(bubble_content.manage_link));
442 manage_link_->set_listener(this); 445 manage_link_->set_listener(this);
443 layout->AddView(manage_link_); 446 layout->AddView(manage_link_);
444 447
445 close_button_ = 448 close_button_ =
446 new views::LabelButton(this, l10n_util::GetStringUTF16(IDS_DONE)); 449 new views::LabelButton(this, l10n_util::GetStringUTF16(IDS_DONE));
447 close_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON); 450 close_button_->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
448 layout->AddView(close_button_); 451 layout->AddView(close_button_);
449 } 452 }
450 } 453 }
451 454
452 void ContentSettingBubbleContents::ButtonPressed(views::Button* sender, 455 void ContentSettingBubbleContents::ButtonPressed(views::Button* sender,
453 const ui::Event& event) { 456 const ui::Event& event) {
454 if (sender == save_button_) { 457 RadioGroup::const_iterator i(
455 content_setting_bubble_model_->OnSaveClicked(); 458 std::find(radio_group_.begin(), radio_group_.end(), sender));
456 StartFade(false); 459 if (i != radio_group_.end()) {
457 return; 460 content_setting_bubble_model_->OnRadioClicked(i - radio_group_.begin());
458 }
459 if (sender == never_button_) {
460 content_setting_bubble_model_->OnCancelClicked();
461 StartFade(false);
462 return;
463 }
464 if (sender == close_button_) {
465 content_setting_bubble_model_->OnDoneClicked();
466 StartFade(false);
467 return; 461 return;
468 } 462 }
469 463
470 for (RadioGroup::const_iterator i(radio_group_.begin()); 464 if (sender == save_button_)
471 i != radio_group_.end(); ++i) { 465 content_setting_bubble_model_->OnSaveClicked();
472 if (sender == *i) { 466 else if (sender == cancel_button_)
473 content_setting_bubble_model_->OnRadioClicked(i - radio_group_.begin()); 467 content_setting_bubble_model_->OnCancelClicked();
474 return; 468 else if (sender == close_button_)
475 } 469 content_setting_bubble_model_->OnDoneClicked();
476 } 470 else
477 NOTREACHED() << "unknown radio"; 471 NOTREACHED();
472 StartFade(false);
478 } 473 }
479 474
480 void ContentSettingBubbleContents::LinkClicked(views::Link* source, 475 void ContentSettingBubbleContents::LinkClicked(views::Link* source,
481 int event_flags) { 476 int event_flags) {
482 if (source == custom_link_) { 477 if (source == custom_link_) {
483 content_setting_bubble_model_->OnCustomLinkClicked(); 478 content_setting_bubble_model_->OnCustomLinkClicked();
484 StartFade(false); 479 StartFade(false);
485 return; 480 return;
486 } 481 }
487 if (source == manage_link_) { 482 if (source == manage_link_) {
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
534 int width = button->GetPreferredSize().width(); 529 int width = button->GetPreferredSize().width();
535 for (int i = 0; i < menu_model->GetItemCount(); ++i) { 530 for (int i = 0; i < menu_model->GetItemCount(); ++i) {
536 button->SetText(menu_model->GetLabelAt(i)); 531 button->SetText(menu_model->GetLabelAt(i));
537 width = std::max(width, button->GetPreferredSize().width()); 532 width = std::max(width, button->GetPreferredSize().width());
538 } 533 }
539 534
540 // Recover the title for the menu button. 535 // Recover the title for the menu button.
541 button->SetText(title); 536 button->SetText(title);
542 return width; 537 return width;
543 } 538 }
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/content_setting_bubble_contents.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698