15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/views/sync/one_click_signin_bubble_view.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/callback_helpers.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/browser.h" 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/sync/one_click_signin_helper.h" 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "chrome/browser/ui/sync/one_click_signin_histogram.h" 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/url_constants.h" 131320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/chromium_strings.h" 141320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "chrome/grit/generated_resources.h" 156d86b77056ed63eb6871182f42a9fd5f07550f90Torne (Richard Coles)#include "components/google/core/browser/google_util.h" 161320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci#include "grit/components_strings.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/base/resource/resource_bundle.h" 19d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles)#include "ui/events/keycodes/keyboard_codes.h" 2003b57e008b61dfcb1fbad3aea950ae0e001748b0Torne (Richard Coles)#include "ui/resources/grit/ui_resources.h" 212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/controls/button/image_button.h" 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)#include "ui/views/controls/button/label_button.h" 232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/controls/image_view.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/label.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/controls/link.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/grid_layout.h" 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/layout/layout_constants.h" 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Minimum width of the the bubble. 315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)const int kMinBubbleWidth = 310; 325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Minimum width for the multi-line label. 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const int kMinimumDialogLabelWidth = 400; 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const int kMinimumLabelWidth = 240; 362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)const int kDialogMargin = 16; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)namespace { 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// The column set constants that can be used in the InitContent() function 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// to layout views. 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)enum OneClickSigninBubbleColumnTypes { 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) COLUMN_SET_FILL_ALIGN, 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) COLUMN_SET_CONTROLS, 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) COLUMN_SET_TITLE_BAR 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}; 472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} // namespace 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OneClickSigninBubbleView* OneClickSigninBubbleView::bubble_view_ = NULL; 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OneClickSigninBubbleView::ShowBubble( 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) BrowserWindow::OneClickSigninBubbleType type, 55a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& email, 56a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& error_message, 57a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<OneClickSigninBubbleDelegate> delegate, 58a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) views::View* anchor_view, 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const BrowserWindow::StartSyncCallback& start_sync) { 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (IsShowing()) 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 63c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) switch (type) { 64c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_BUBBLE: 65c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bubble_view_ = new OneClickSigninBubbleView( 66a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) error_message, base::string16(), delegate.Pass(), 67a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) anchor_view, start_sync, false); 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 69c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_MODAL_DIALOG: 70c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bubble_view_ = new OneClickSigninBubbleView( 71a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16(), base::string16(), delegate.Pass(), 72a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) anchor_view, start_sync, true); 73c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 74c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) case BrowserWindow::ONE_CLICK_SIGNIN_BUBBLE_TYPE_SAML_MODAL_DIALOG: 75c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bubble_view_ = new OneClickSigninBubbleView( 76a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16(), email, delegate.Pass(), 77a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) anchor_view, start_sync, true); 78c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) break; 79c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::BubbleDelegateView::CreateBubble(bubble_view_)->Show(); 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool OneClickSigninBubbleView::IsShowing() { 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return bubble_view_ != NULL; 875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// static 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OneClickSigninBubbleView::Hide() { 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (IsShowing()) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bubble_view_->GetWidget()->Close(); 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OneClickSigninBubbleView::OneClickSigninBubbleView( 96a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& error_message, 97a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) const base::string16& email, 98a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) scoped_ptr<OneClickSigninBubbleDelegate> delegate, 99a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) views::View* anchor_view, 100c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const BrowserWindow::StartSyncCallback& start_sync_callback, 101c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bool is_sync_dialog) 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : BubbleDelegateView(anchor_view, views::BubbleBorder::TOP_RIGHT), 103a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) delegate_(delegate.Pass()), 104c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) error_message_(error_message), 105c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) email_(email), 106c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) start_sync_callback_(start_sync_callback), 107c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) is_sync_dialog_(is_sync_dialog), 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) advanced_link_(NULL), 109c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) learn_more_link_(NULL), 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ok_button_(NULL), 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) undo_button_(NULL), 112c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) close_button_(NULL), 113a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) clicked_learn_more_(false) { 114c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (is_sync_dialog_) { 115c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK(!start_sync_callback_.is_null()); 116c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) set_arrow(views::BubbleBorder::NONE); 117c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) set_anchor_view_insets(gfx::Insets(0, 0, anchor_view->height() / 2, 0)); 118c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) set_close_on_deactivate(false); 119c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 1205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) int margin = is_sync_dialog_ ? kDialogMargin : views::kButtonVEdgeMarginNew; 1215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) set_margins(gfx::Insets(margin, margin, margin, margin)); 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)OneClickSigninBubbleView::~OneClickSigninBubbleView() { 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 127c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)ui::ModalType OneClickSigninBubbleView::GetModalType() const { 128c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return is_sync_dialog_? ui::MODAL_TYPE_CHILD : ui::MODAL_TYPE_NONE; 129c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 130c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OneClickSigninBubbleView::Init() { 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::GridLayout* layout = new views::GridLayout(this); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) SetLayoutManager(layout); 1345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) SetBorder(views::Border::CreateEmptyBorder(8, 8, 8, 8)); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Column set for descriptive text and link. 1382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::ColumnSet* cs = layout->AddColumnSet(COLUMN_SET_FILL_ALIGN); 1392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cs->AddColumn(views::GridLayout::FILL, views::GridLayout::CENTER, 1, 1402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::GridLayout::USE_PREF, 0, 0); 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Column set for buttons at bottom of bubble. 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) cs = layout->AddColumnSet(COLUMN_SET_CONTROLS); 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0, 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::GridLayout::USE_PREF, 0, 0); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cs->AddPaddingColumn(1, views::kUnrelatedControlHorizontalSpacing); 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0, 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::GridLayout::USE_PREF, 0, 0); 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0, 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) views::GridLayout::USE_PREF, 0, 0); 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 152c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) is_sync_dialog_ ? InitDialogContent(layout) : InitBubbleContent(layout); 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // Add controls at the bottom. 15590dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) // Don't display the advanced link for the error bubble. 15690dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) if (is_sync_dialog_ || error_message_.empty()) { 15790dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) InitAdvancedLink(); 15890dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) layout->StartRow(0, COLUMN_SET_CONTROLS); 15990dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) layout->AddView(advanced_link_); 16090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } 161c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 162c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) InitButtons(layout); 163c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ok_button_->SetIsDefault(true); 1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, 0)); 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1672a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 168c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void OneClickSigninBubbleView::InitBubbleContent(views::GridLayout* layout) { 1695d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->set_minimum_size(gfx::Size(kMinBubbleWidth, 0)); 1705d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1715d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) // If no error occurred, add title message. 1725d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) if (error_message_.empty()) { 1735d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::ColumnSet* cs = layout->AddColumnSet(COLUMN_SET_TITLE_BAR); 1745d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::LEADING, 0, 1755d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::GridLayout::USE_PREF, 0, 0); 1765d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) { 1775d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->StartRow(0, COLUMN_SET_TITLE_BAR); 1785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 1805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) views::Label* label = new views::Label( 1815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE_NEW), 1825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) rb.GetFontList(ui::ResourceBundle::MediumFont)); 1835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) label->SetHorizontalAlignment(gfx::ALIGN_LEFT); 1845d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->AddView(label); 1855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1865d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1875d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->AddPaddingRow(0, views::kUnrelatedControlLargeVerticalSpacing); 1885d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) } 1895d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Add main text description. 191c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->StartRow(0, COLUMN_SET_FILL_ALIGN); 192c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 193c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::Label* label = !error_message_.empty() ? 194c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new views::Label(error_message_) : 195c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) new views::Label( 196c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_BUBBLE_MESSAGE)); 197c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) label->SetMultiLine(true); 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) label->SetHorizontalAlignment(gfx::ALIGN_LEFT); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) label->SizeToFit(kMinimumLabelWidth); 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) layout->AddView(label); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing); 2045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 205c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->StartRow(0, COLUMN_SET_CONTROLS); 206c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 207c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) InitLearnMoreLink(); 208c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddView(learn_more_link_); 2092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 211c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void OneClickSigninBubbleView::InitDialogContent(views::GridLayout* layout) { 212c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OneClickSigninHelper::LogConfirmHistogramValue( 213c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_SHOWN); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 215c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Column set for title bar. 216c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::ColumnSet* cs = layout->AddColumnSet(COLUMN_SET_TITLE_BAR); 217c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) cs->AddColumn(views::GridLayout::LEADING, views::GridLayout::CENTER, 0, 218c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::GridLayout::USE_PREF, 0, 0); 219c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) cs->AddPaddingColumn(1, views::kUnrelatedControlHorizontalSpacing); 220c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) cs->AddColumn(views::GridLayout::TRAILING, views::GridLayout::CENTER, 0, 221c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::GridLayout::USE_PREF, 0, 0); 222c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 223c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); 224c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 225c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 226c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->StartRow(0, COLUMN_SET_TITLE_BAR); 227c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch views::Label* label = new views::Label( 2295d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_TITLE_NEW), 2305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) rb.GetFontList(ui::ResourceBundle::MediumBoldFont)); 231c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) label->SetHorizontalAlignment(gfx::ALIGN_LEFT); 232c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddView(label); 233c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 234c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) close_button_ = new views::ImageButton(this); 235c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) close_button_->SetImage(views::ImageButton::STATE_NORMAL, 236c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) rb.GetImageNamed(IDR_CLOSE_2).ToImageSkia()); 237c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) close_button_->SetImage(views::ImageButton::STATE_HOVERED, 238c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) rb.GetImageNamed(IDR_CLOSE_2_H).ToImageSkia()); 239c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) close_button_->SetImage(views::ImageButton::STATE_PRESSED, 240c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) rb.GetImageNamed(IDR_CLOSE_2_P).ToImageSkia()); 241c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 242c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddView(close_button_); 243c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 244c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 245c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing); 246c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 247c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) { 248c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->StartRow(0, COLUMN_SET_FILL_ALIGN); 249c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 2507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch views::Label* label = new views::Label( 251c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) l10n_util::GetStringFUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_MESSAGE_NEW, 252c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) email_)); 253c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) label->SetMultiLine(true); 254c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) label->SetHorizontalAlignment(gfx::ALIGN_LEFT); 255c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) label->SizeToFit(kMinimumDialogLabelWidth); 256c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddView(label); 257c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 258c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->StartRow(0, COLUMN_SET_FILL_ALIGN); 259c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 260c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) InitLearnMoreLink(); 261c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddView(learn_more_link_, 1, 1, views::GridLayout::TRAILING, 262c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::GridLayout::CENTER); 263c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 264c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 265c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddPaddingRow(0, views::kUnrelatedControlVerticalSpacing); 2662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 268c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void OneClickSigninBubbleView::InitButtons(views::GridLayout* layout) { 269c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) GetButtons(&ok_button_, &undo_button_); 270c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddView(ok_button_); 271c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 272c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (is_sync_dialog_) 273c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) layout->AddView(undo_button_); 2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 276c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void OneClickSigninBubbleView::GetButtons(views::LabelButton** ok_button, 277c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) views::LabelButton** undo_button) { 2785d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) base::string16 ok_label = !error_message_.empty() ? 2795d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_OK) : 2805d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_OK_BUTTON); 2815d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 2825d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) *ok_button = new views::LabelButton(this, ok_label); 2835d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) (*ok_button)->SetStyle(views::Button::STYLE_BUTTON); 2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 285c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // The default size of the buttons is too large. To allow them to be smaller 286c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // ignore the minimum default size., 2875f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (*ok_button)->SetMinSize(gfx::Size()); 288c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 289c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (is_sync_dialog_) { 290a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) *undo_button = new views::LabelButton(this, base::string16()); 2915d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) (*undo_button)->SetStyle(views::Button::STYLE_BUTTON); 2925f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) (*undo_button)->SetMinSize(gfx::Size()); 293c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 294a3f6a49ab37290eeeb8db0f41ec0f1cb74a68be7Torne (Richard Coles) base::string16 undo_label = 295c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_UNDO_BUTTON); 296c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) (*undo_button)->SetText(undo_label); 2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 300c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void OneClickSigninBubbleView::InitAdvancedLink() { 30190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) advanced_link_ = new views::Link( 30290dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_ONE_CLICK_SIGNIN_DIALOG_ADVANCED)); 303c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 304c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) advanced_link_->set_listener(this); 305c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) advanced_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 306c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 307c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 308c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void OneClickSigninBubbleView::InitLearnMoreLink() { 309c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) learn_more_link_ = new views::Link( 310c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) l10n_util::GetStringUTF16(IDS_LEARN_MORE)); 311c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) learn_more_link_->set_listener(this); 312c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) learn_more_link_->SetHorizontalAlignment(gfx::ALIGN_LEFT); 313c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 314c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool OneClickSigninBubbleView::AcceleratorPressed( 316c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) const ui::Accelerator& accelerator) { 3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (accelerator.key_code() == ui::VKEY_RETURN || 3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) accelerator.key_code() == ui::VKEY_ESCAPE) { 319c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OneClickSigninBubbleView::Hide(); 320c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 321c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (is_sync_dialog_) { 322c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (accelerator.key_code() == ui::VKEY_RETURN) { 323c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OneClickSigninHelper::LogConfirmHistogramValue( 324c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) clicked_learn_more_ ? 325c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_RETURN : 326c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_RETURN); 327c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 328c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::ResetAndReturn(&start_sync_callback_).Run( 3293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS); 330c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else if (accelerator.key_code() == ui::VKEY_ESCAPE) { 331c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OneClickSigninHelper::LogConfirmHistogramValue( 332c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) clicked_learn_more_ ? 333c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_ESCAPE : 334c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_ESCAPE); 335c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 3363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) base::ResetAndReturn(&start_sync_callback_).Run( 3373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) OneClickSigninSyncStarter::UNDO_SYNC); 338c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return BubbleDelegateView::AcceleratorPressed(accelerator); 3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OneClickSigninBubbleView::LinkClicked(views::Link* source, 3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int event_flags) { 349c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (source == learn_more_link_) { 350c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (is_sync_dialog_ && !clicked_learn_more_) { 351c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OneClickSigninHelper::LogConfirmHistogramValue( 352c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE); 353c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) clicked_learn_more_ = true; 354c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 355a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) delegate_->OnLearnMoreLinkClicked(is_sync_dialog_); 356c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 357c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // don't hide the modal dialog, as this is an informational link 358c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (is_sync_dialog_) 359c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return; 36090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles) } else if (advanced_link_ && source == advanced_link_) { 361c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (is_sync_dialog_) { 362c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OneClickSigninHelper::LogConfirmHistogramValue( 363c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) clicked_learn_more_ ? 364c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_ADVANCED : 365c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_ADVANCED); 366c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 367c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::ResetAndReturn(&start_sync_callback_).Run( 3683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) OneClickSigninSyncStarter::CONFIGURE_SYNC_FIRST); 369c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } else { 370a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) delegate_->OnAdvancedLinkClicked(); 371c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 372c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 373c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 374c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Hide(); 3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void OneClickSigninBubbleView::ButtonPressed(views::Button* sender, 3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const ui::Event& event) { 379c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) Hide(); 380c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 381c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (is_sync_dialog_) { 382c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (sender == ok_button_) 383c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OneClickSigninHelper::LogConfirmHistogramValue( 384c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) clicked_learn_more_ ? 385c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_OK : 386c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_OK); 387c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 388c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (sender == undo_button_) 389c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OneClickSigninHelper::LogConfirmHistogramValue( 390c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) clicked_learn_more_ ? 391c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_UNDO : 392c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_UNDO); 393c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 394c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (sender == close_button_) 395c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) OneClickSigninHelper::LogConfirmHistogramValue( 396c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) clicked_learn_more_ ? 397c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_LEARN_MORE_CLOSE : 398c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) one_click_signin::HISTOGRAM_CONFIRM_CLOSE); 399c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 400c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::ResetAndReturn(&start_sync_callback_).Run((sender == ok_button_) ? 4012a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OneClickSigninSyncStarter::SYNC_WITH_DEFAULT_SETTINGS : 4022a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) OneClickSigninSyncStarter::UNDO_SYNC); 403c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 404c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 405c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 406c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)void OneClickSigninBubbleView::WindowClosing() { 407c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // We have to reset |bubble_view_| here, not in our destructor, because 408c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // we'll be destroyed asynchronously and the shown state will be checked 409c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // before then. 410c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) DCHECK_EQ(bubble_view_, this); 411c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) bubble_view_ = NULL; 412c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 413c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (is_sync_dialog_ && !start_sync_callback_.is_null()) { 414c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) base::ResetAndReturn(&start_sync_callback_).Run( 415f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) OneClickSigninSyncStarter::UNDO_SYNC); 416c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 418