| Index: chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc
|
| diff --git a/chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc b/chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc
|
| index ca704334132c0ee2c197c084fb46b9c8c335f1bf..19f1fd9f89ede4f8655675b8993b7c037a7a46f6 100644
|
| --- a/chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc
|
| +++ b/chrome/browser/ui/views/sync/one_click_signin_bubble_view.cc
|
| @@ -7,7 +7,6 @@
|
| #include "base/callback_helpers.h"
|
| #include "base/logging.h"
|
| #include "base/message_loop.h"
|
| -#include "base/utf_string_conversions.h"
|
| #include "chrome/browser/google/google_util.h"
|
| #include "chrome/browser/ui/browser.h"
|
| #include "chrome/common/url_constants.h"
|
| @@ -28,7 +27,7 @@
|
| #include "ui/views/layout/layout_constants.h"
|
| #include "ui/views/widget/widget.h"
|
|
|
| -// Minimum width for the mutli-line label.
|
| +// Minimum width for the multi-line label.
|
| const int kMinimumDialogLabelWidth = 400;
|
| const int kMinimumLabelWidth = 240;
|
| const int kDialogMargin = 16;
|
| @@ -42,164 +41,8 @@ enum OneClickSigninBubbleColumnTypes {
|
| COLUMN_SET_CONTROLS,
|
| COLUMN_SET_TITLE_BAR
|
| };
|
| -
|
| -class OneClickSigninDialogView : public OneClickSigninBubbleView {
|
| - public:
|
| - OneClickSigninDialogView(
|
| - content::WebContents* web_content,
|
| - views::View* anchor_view,
|
| - const string16& email,
|
| - const BrowserWindow::StartSyncCallback& start_sync_callback);
|
| -
|
| - private:
|
| - // Overridden from views::WidgetDelegate:
|
| - virtual ui::ModalType GetModalType() const OVERRIDE;
|
| -
|
| - // Overridden from OneClickSigninBubbleView:
|
| - virtual void InitContent(views::GridLayout* layout) OVERRIDE;
|
| - virtual void GetButtons(views::LabelButton** ok_button,
|
| - views::LabelButton** undo_button) OVERRIDE;
|
| - virtual views::Link* GetAdvancedLink() OVERRIDE;
|
| -
|
| - // Overridden from views::LinkListener:
|
| - virtual void LinkClicked(views::Link* source, int event_flags) OVERRIDE;
|
| -
|
| - const string16 email_;
|
| - content::WebContents* web_content_;
|
| - views::Link* learn_more_link_;
|
| - views::ImageButton* close_button_;
|
| -
|
| - DISALLOW_COPY_AND_ASSIGN(OneClickSigninDialogView);
|
| -};
|
| -
|
| -OneClickSigninDialogView::OneClickSigninDialogView(
|
| - content::WebContents* web_content,
|
| - views::View* anchor_view,
|
| - const string16& email,
|
| - const BrowserWindow::StartSyncCallback& start_sync_callback)
|
| - : OneClickSigninBubbleView(anchor_view, start_sync_callback),
|
| - email_(email),
|
| - web_content_(web_content),
|
| - learn_more_link_(NULL),
|
| - close_button_(NULL) {
|
| - set_arrow(views::BubbleBorder::NONE);
|
| - set_anchor_view_insets(gfx::Insets(0, 0, anchor_view->height() / 2, 0));
|
| - set_close_on_deactivate(false);
|
| - set_margins(gfx::Insets(kDialogMargin, kDialogMargin, kDialogMargin,
|
| - kDialogMargin));
|
| -}
|
| -
|
| -ui::ModalType OneClickSigninDialogView::GetModalType() const {
|
| - return ui::MODAL_TYPE_CHILD;
|
| -}
|
| -
|
| -void OneClickSigninDialogView::InitContent(views::GridLayout* layout) {
|
| - // Column set for title bar.
|
| - views::ColumnSet* cs = layout->AddColumnSet(COLUMN_SET_TITLE_BAR);
|
| - cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0,
|
| - views::GridLayout::USE_PREF, 0, 0);
|
| - cs->AddPaddingColumn(1, views::kUnrelatedControlHorizontalSpacing);
|
| - cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| - views::GridLayout::USE_PREF, 0, 0);
|
| -
|
| - ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| -
|
| - {
|
| - layout->StartRow(0, COLUMN_SET_TITLE_BAR);
|
| -
|
| - views::Label* label = new views::Label(email_.empty() ?
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE) :
|
| - l10n_util::GetStringFUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE_NEW,
|
| - email_));
|
| - label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - label->SetFont(label->font().DeriveFont(3, gfx::Font::BOLD));
|
| - layout->AddView(label);
|
| -
|
| - close_button_ = new views::ImageButton(this);
|
| - close_button_->SetImage(views::ImageButton::STATE_NORMAL,
|
| - rb.GetImageNamed(IDR_CLOSE_2).ToImageSkia());
|
| - close_button_->SetImage(views::ImageButton::STATE_HOVERED,
|
| - rb.GetImageNamed(IDR_CLOSE_2_H).ToImageSkia());
|
| - close_button_->SetImage(views::ImageButton::STATE_PRESSED,
|
| - rb.GetImageNamed(IDR_CLOSE_2_P).ToImageSkia());
|
| - layout->AddView(close_button_);
|
| - }
|
| -
|
| - layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
|
| -
|
| - {
|
| - layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| -
|
| - views::Label* label = new views::Label(email_.empty() ?
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE) :
|
| - l10n_util::GetStringFUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE_NEW,
|
| - email_));
|
| - label->SetMultiLine(true);
|
| - label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - label->SizeToFit(kMinimumDialogLabelWidth);
|
| - layout->AddView(label);
|
| -
|
| - layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| -
|
| - learn_more_link_ = new views::Link(
|
| - l10n_util::GetStringUTF16(IDS_LEARN_MORE));
|
| - learn_more_link_->set_listener(this);
|
| - learn_more_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - layout->AddView(learn_more_link_, 1, 1, views::GridLayout::TRAILING,
|
| - views::GridLayout::CENTER);
|
| - }
|
| -
|
| - layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
|
| -}
|
| -
|
| -void OneClickSigninDialogView::GetButtons(views::LabelButton** ok_button,
|
| - views::LabelButton** undo_button) {
|
| - *ok_button = new views::LabelButton(this, string16());
|
| - (*ok_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
| -
|
| - *undo_button = new views::LabelButton(this, string16());
|
| - (*undo_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
| -
|
| - // The default size of the buttons is too large. To allow them to be smaller
|
| - // ignore the minimum default size. Furthermore, to make sure they are the
|
| - // same size, SetText() is called with both strings on both buttons.
|
| - (*ok_button)->set_min_size(gfx::Size());
|
| - (*undo_button)->set_min_size(gfx::Size());
|
| - string16 ok_label =
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_OK_BUTTON);
|
| - string16 undo_label =
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_UNDO_BUTTON);
|
| - (*ok_button)->SetText(undo_label);
|
| - (*ok_button)->SetText(ok_label);
|
| - (*undo_button)->SetText(ok_label);
|
| - (*undo_button)->SetText(undo_label);
|
| -}
|
| -
|
| -views::Link* OneClickSigninDialogView::GetAdvancedLink() {
|
| - views::Link* advanced_link= new views::Link(
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_ADVANCED));
|
| - advanced_link->set_listener(this);
|
| - advanced_link->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - return advanced_link;
|
| -}
|
| -
|
| -void OneClickSigninDialogView::LinkClicked(views::Link* source,
|
| - int event_flags) {
|
| - if (source == learn_more_link_) {
|
| - content::OpenURLParams params(
|
| - GURL(chrome::kChromeSyncLearnMoreURL), content::Referrer(),
|
| - NEW_WINDOW, content::PAGE_TRANSITION_LINK, false);
|
| - web_content_->OpenURL(params);
|
| - return;
|
| - }
|
| -
|
| - OneClickSigninBubbleView::LinkClicked(source, event_flags);
|
| -}
|
| -
|
| } // namespace
|
|
|
| -// OneClickSigninBubbleView ----------------------------------------------------
|
| -
|
| // static
|
| OneClickSigninBubbleView* OneClickSigninBubbleView::bubble_view_ = NULL;
|
|
|
| @@ -207,6 +50,7 @@ OneClickSigninBubbleView* OneClickSigninBubbleView::bubble_view_ = NULL;
|
| void OneClickSigninBubbleView::ShowBubble(
|
| BrowserWindow::OneClickSigninBubbleType type,
|
| const string16& email,
|
| + const string16& error_message,
|
| ToolbarView* toolbar_view,
|
| const BrowserWindow::StartSyncCallback& start_sync) {
|
| if (IsShowing())
|
| @@ -214,18 +58,19 @@ void OneClickSigninBubbleView::ShowBubble(
|
|
|
| switch (type) {
|
| case BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE:
|
| - bubble_view_ = new OneClickSigninBubbleView(toolbar_view->app_menu(),
|
| - start_sync);
|
| + bubble_view_ = new OneClickSigninBubbleView(
|
| + toolbar_view->GetWebContents(), toolbar_view->app_menu(),
|
| + error_message, string16(), start_sync, false);
|
| break;
|
| case BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG:
|
| - bubble_view_ = new OneClickSigninDialogView(
|
| + bubble_view_ = new OneClickSigninBubbleView(
|
| toolbar_view->GetWebContents(), toolbar_view->location_bar(),
|
| - string16(), start_sync);
|
| + string16(), string16(), start_sync, true);
|
| break;
|
| case BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_SAML_MODAL_DIALOG:
|
| - bubble_view_ = new OneClickSigninDialogView(
|
| + bubble_view_ = new OneClickSigninBubbleView(
|
| toolbar_view->GetWebContents(), toolbar_view->location_bar(),
|
| - email, start_sync);
|
| + string16(), email, start_sync, true);
|
| break;
|
| }
|
|
|
| @@ -244,20 +89,41 @@ void OneClickSigninBubbleView::Hide() {
|
| }
|
|
|
| OneClickSigninBubbleView::OneClickSigninBubbleView(
|
| + content::WebContents* web_contents,
|
| views::View* anchor_view,
|
| - const BrowserWindow::StartSyncCallback& start_sync_callback)
|
| + const string16& error_message,
|
| + const string16& email,
|
| + const BrowserWindow::StartSyncCallback& start_sync_callback,
|
| + bool is_sync_dialog)
|
| : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT),
|
| + web_contents_(web_contents),
|
| + error_message_(error_message),
|
| + email_(email),
|
| + start_sync_callback_(start_sync_callback),
|
| + is_sync_dialog_(is_sync_dialog),
|
| advanced_link_(NULL),
|
| + learn_more_link_(NULL),
|
| ok_button_(NULL),
|
| undo_button_(NULL),
|
| - start_sync_callback_(start_sync_callback),
|
| + close_button_(NULL),
|
| message_loop_for_testing_(NULL) {
|
| - DCHECK(!start_sync_callback_.is_null());
|
| + if (is_sync_dialog_) {
|
| + DCHECK(!start_sync_callback_.is_null());
|
| + set_arrow(views::BubbleBorder::NONE);
|
| + set_anchor_view_insets(gfx::Insets(0, 0, anchor_view->height() / 2, 0));
|
| + set_close_on_deactivate(false);
|
| + set_margins(gfx::Insets(kDialogMargin, kDialogMargin, kDialogMargin,
|
| + kDialogMargin));
|
| + }
|
| }
|
|
|
| OneClickSigninBubbleView::~OneClickSigninBubbleView() {
|
| }
|
|
|
| +ui::ModalType OneClickSigninBubbleView::GetModalType() const {
|
| + return is_sync_dialog_? ui::MODAL_TYPE_CHILD : ui::MODAL_TYPE_NONE;
|
| +}
|
| +
|
| void OneClickSigninBubbleView::AnimationEnded(const ui::Animation* animation) {
|
| views::BubbleDelegateView::AnimationEnded(animation);
|
| if (message_loop_for_testing_)
|
| @@ -285,33 +151,103 @@ void OneClickSigninBubbleView::Init() {
|
| cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| views::GridLayout::USE_PREF, 0, 0);
|
|
|
| - InitContent(layout);
|
| + is_sync_dialog_ ? InitDialogContent(layout) : InitBubbleContent(layout);
|
|
|
| // Add controls at the bottom.
|
| - advanced_link_= GetAdvancedLink();
|
| - GetButtons(&ok_button_, &undo_button_);
|
| - ok_button_->SetIsDefault(true);
|
| + InitAdvancedLink();
|
|
|
| layout->StartRow(0, COLUMN_SET_CONTROLS);
|
| layout->AddView(advanced_link_);
|
| - layout->AddView(ok_button_);
|
| - layout->AddView(undo_button_);
|
| +
|
| + InitButtons(layout);
|
| + ok_button_->SetIsDefault(true);
|
|
|
| AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, 0));
|
| }
|
|
|
| -void OneClickSigninBubbleView::InitContent(views::GridLayout* layout) {
|
| +void OneClickSigninBubbleView::InitBubbleContent(views::GridLayout* layout) {
|
| // Add main text description.
|
| - views::Label* label = new views::Label(
|
| - l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_BUBBLE_MESSAGE));
|
| + layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| +
|
| + views::Label* label = !error_message_.empty() ?
|
| + new views::Label(error_message_) :
|
| + new views::Label(
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_BUBBLE_MESSAGE));
|
| +
|
| label->SetMultiLine(true);
|
| label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| label->SizeToFit(kMinimumLabelWidth);
|
| -
|
| - layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| layout->AddView(label);
|
|
|
| - layout->AddPaddingRow(0, views::kRelatedControlSmallVerticalSpacing);
|
| + layout->StartRow(0, COLUMN_SET_CONTROLS);
|
| +
|
| + InitLearnMoreLink();
|
| + layout->AddView(learn_more_link_);
|
| +}
|
| +
|
| +void OneClickSigninBubbleView::InitDialogContent(views::GridLayout* layout) {
|
| + // Column set for title bar.
|
| + views::ColumnSet* cs = layout->AddColumnSet(COLUMN_SET_TITLE_BAR);
|
| + cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0,
|
| + views::GridLayout::USE_PREF, 0, 0);
|
| + cs->AddPaddingColumn(1, views::kUnrelatedControlHorizontalSpacing);
|
| + cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0,
|
| + views::GridLayout::USE_PREF, 0, 0);
|
| +
|
| + ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance();
|
| +
|
| + {
|
| + layout->StartRow(0, COLUMN_SET_TITLE_BAR);
|
| +
|
| + views::Label* label = new views::Label(email_.empty() ?
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE) :
|
| + l10n_util::GetStringFUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE_NEW,
|
| + email_));
|
| + label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + label->SetFont(label->font().DeriveFont(3, gfx::Font::BOLD));
|
| + layout->AddView(label);
|
| +
|
| + close_button_ = new views::ImageButton(this);
|
| + close_button_->SetImage(views::ImageButton::STATE_NORMAL,
|
| + rb.GetImageNamed(IDR_CLOSE_2).ToImageSkia());
|
| + close_button_->SetImage(views::ImageButton::STATE_HOVERED,
|
| + rb.GetImageNamed(IDR_CLOSE_2_H).ToImageSkia());
|
| + close_button_->SetImage(views::ImageButton::STATE_PRESSED,
|
| + rb.GetImageNamed(IDR_CLOSE_2_P).ToImageSkia());
|
| +
|
| + layout->AddView(close_button_);
|
| + }
|
| +
|
| + layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
|
| +
|
| + {
|
| + layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| +
|
| + views::Label* label = new views::Label(email_.empty() ?
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE) :
|
| + l10n_util::GetStringFUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE_NEW,
|
| + email_));
|
| + label->SetMultiLine(true);
|
| + label->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| + label->SizeToFit(kMinimumDialogLabelWidth);
|
| + layout->AddView(label);
|
| +
|
| + layout->StartRow(0, COLUMN_SET_FILL_ALIGN);
|
| +
|
| + InitLearnMoreLink();
|
| + layout->AddView(learn_more_link_, 1, 1, views::GridLayout::TRAILING,
|
| + views::GridLayout::CENTER);
|
| + }
|
| +
|
| + layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing);
|
| +}
|
| +
|
| +void OneClickSigninBubbleView::InitButtons(views::GridLayout* layout) {
|
| + GetButtons(&ok_button_, &undo_button_);
|
| + layout->AddView(ok_button_);
|
| +
|
| + if (is_sync_dialog_)
|
| + layout->AddView(undo_button_);
|
| }
|
|
|
| void OneClickSigninBubbleView::GetButtons(views::LabelButton** ok_button,
|
| @@ -319,53 +255,64 @@ void OneClickSigninBubbleView::GetButtons(views::LabelButton** ok_button,
|
| *ok_button = new views::LabelButton(this, string16());
|
| (*ok_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
|
|
| - *undo_button = new views::LabelButton(this, string16());
|
| - (*undo_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
| -
|
| // The default size of the buttons is too large. To allow them to be smaller
|
| - // ignore the minimum default size. Furthermore, to make sure they are the
|
| - // same size, SetText() is called with both strings on both buttons.
|
| + // ignore the minimum default size.,
|
| (*ok_button)->set_min_size(gfx::Size());
|
| - (*undo_button)->set_min_size(gfx::Size());
|
| - string16 ok_label = l10n_util::GetStringUTF16(IDS_OK);
|
| - string16 undo_label = l10n_util::GetStringUTF16(IDS_ONE_CLICK_BUBBLE_UNDO);
|
| - (*ok_button)->SetText(undo_label);
|
| - (*ok_button)->SetText(ok_label);
|
| - (*undo_button)->SetText(ok_label);
|
| - (*undo_button)->SetText(undo_label);
|
| -}
|
|
|
| -views::Link* OneClickSigninBubbleView::GetAdvancedLink() {
|
| - views::Link* advanced_link= new views::Link(
|
| - l10n_util::GetStringUTF16(IDS_SYNC_PROMO_NTP_BUBBLE_ADVANCED));
|
| - advanced_link->set_listener(this);
|
| - advanced_link->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| - return advanced_link;
|
| + string16 ok_label;
|
| +
|
| + if (is_sync_dialog_) {
|
| + *undo_button = new views::LabelButton(this, string16());
|
| + (*undo_button)->SetStyle(views::Button::STYLE_NATIVE_TEXTBUTTON);
|
| + (*undo_button)->set_min_size(gfx::Size());
|
| +
|
| + ok_label = l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_OK_BUTTON);
|
| + string16 undo_label =
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_UNDO_BUTTON);
|
| +
|
| + // To make sure they are the same size, SetText() is called
|
| + // with both strings on both buttons.
|
| + (*ok_button)->SetText(undo_label);
|
| + (*ok_button)->SetText(ok_label);
|
| + (*undo_button)->SetText(ok_label);
|
| + (*undo_button)->SetText(undo_label);
|
| + } else {
|
| + ok_label = l10n_util::GetStringUTF16(IDS_OK);
|
| + (*ok_button)->SetText(ok_label);
|
| + }
|
| }
|
|
|
| -void OneClickSigninBubbleView::WindowClosing() {
|
| - // We have to reset |bubble_view_| here, not in our destructor, because
|
| - // we'll be destroyed asynchronously and the shown state will be checked
|
| - // before then.
|
| - DCHECK_EQ(bubble_view_, this);
|
| - bubble_view_ = NULL;
|
| +void OneClickSigninBubbleView::InitAdvancedLink() {
|
| + advanced_link_ = is_sync_dialog_ ?
|
| + new views::Link(
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_ADVANCED)):
|
| + new views::Link(
|
| + l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_ADVANCED));
|
|
|
| - if (!start_sync_callback_.is_null()) {
|
| - base::ResetAndReturn(&start_sync_callback_).Run(
|
| - OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
|
| - }
|
| + advanced_link_->set_listener(this);
|
| + advanced_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| +}
|
| +
|
| +void OneClickSigninBubbleView::InitLearnMoreLink() {
|
| + learn_more_link_ = new views::Link(
|
| + l10n_util::GetStringUTF16(IDS_LEARN_MORE));
|
| + learn_more_link_->set_listener(this);
|
| + learn_more_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT);
|
| }
|
|
|
| bool OneClickSigninBubbleView::AcceleratorPressed(
|
| - const ui::Accelerator& accelerator) {
|
| + const ui::Accelerator& accelerator) {
|
| if (accelerator.key_code() == ui::VKEY_RETURN ||
|
| accelerator.key_code() == ui::VKEY_ESCAPE) {
|
| - StartFade(false);
|
| - if (accelerator.key_code() == ui::VKEY_RETURN) {
|
| - base::ResetAndReturn(&start_sync_callback_).Run(
|
| + OneClickSigninBubbleView::Hide();
|
| +
|
| + if (is_sync_dialog_) {
|
| + if (accelerator.key_code() == ui::VKEY_RETURN) {
|
| + base::ResetAndReturn(&start_sync_callback_).Run(
|
| OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
|
| - } else {
|
| - start_sync_callback_.Reset();
|
| + } else {
|
| + start_sync_callback_.Reset();
|
| + }
|
| }
|
|
|
| return true;
|
| @@ -376,15 +323,53 @@ bool OneClickSigninBubbleView::AcceleratorPressed(
|
|
|
| void OneClickSigninBubbleView::LinkClicked(views::Link* source,
|
| int event_flags) {
|
| - StartFade(false);
|
| - base::ResetAndReturn(&start_sync_callback_).Run(
|
| + if (source == learn_more_link_) {
|
| + WindowOpenDisposition location =
|
| + is_sync_dialog_ ? NEW_WINDOW : NEW_FOREGROUND_TAB;
|
| +
|
| + content::OpenURLParams params(
|
| + GURL(chrome::kChromeSyncLearnMoreURL), content::Referrer(),
|
| + location, content::PAGE_TRANSITION_LINK, false);
|
| + web_contents_->OpenURL(params);
|
| +
|
| + // don't hide the modal dialog, as this is an informational link
|
| + if (is_sync_dialog_)
|
| + return;
|
| + } else if (source == advanced_link_) {
|
| + if (is_sync_dialog_) {
|
| + base::ResetAndReturn(&start_sync_callback_).Run(
|
| OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST);
|
| + } else {
|
| + content::OpenURLParams params(
|
| + GURL(chrome::kChromeUISettingsURL), content::Referrer(),
|
| + CURRENT_TAB, content::PAGE_TRANSITION_LINK, false);
|
| + web_contents_->OpenURL(params);
|
| + }
|
| + }
|
| +
|
| + Hide();
|
| }
|
|
|
| void OneClickSigninBubbleView::ButtonPressed(views::Button* sender,
|
| const ui::Event& event) {
|
| - StartFade(false);
|
| - base::ResetAndReturn(&start_sync_callback_).Run((sender == ok_button_) ?
|
| + Hide();
|
| +
|
| + if (is_sync_dialog_) {
|
| + base::ResetAndReturn(&start_sync_callback_).Run((sender == ok_button_) ?
|
| OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS :
|
| OneClickSigninSyncStarter::UNDO_SYNC);
|
| + }
|
| +}
|
| +
|
| +void OneClickSigninBubbleView::WindowClosing() {
|
| + // We have to reset |bubble_view_| here, not in our destructor, because
|
| + // we'll be destroyed asynchronously and the shown state will be checked
|
| + // before then.
|
| + DCHECK_EQ(bubble_view_, this);
|
| + bubble_view_ = NULL;
|
| +
|
| + if (is_sync_dialog_ && !start_sync_callback_.is_null()) {
|
| + base::ResetAndReturn(&start_sync_callback_).Run(
|
| + OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS);
|
| + }
|
| }
|
|
|