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 "ui/views/window/dialog_delegate.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/logging.h" 82a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "grit/ui_strings.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/base/l10n/l10n_util.h" 102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/bubble/bubble_border.h" 112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/bubble/bubble_frame_view.h" 122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/controls/button/label_button.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h" 142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/widget/widget_observer.h" 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/window/dialog_client_view.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_AURA) 182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/corewm/shadow_types.h" 192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif 202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views { 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 23b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 24b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// DialogDelegate: 25b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 26b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)DialogDelegate::~DialogDelegate() { 27b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 28b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 29b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// static 30b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)Widget* DialogDelegate::CreateDialogWidget(DialogDelegate* dialog, 31b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) gfx::NativeWindow context, 32b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) gfx::NativeWindow parent) { 332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::Widget* widget = new views::Widget; 342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) views::Widget::InitParams params; 35b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) params.delegate = dialog; 36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) if (!dialog || dialog->UseNewStyleForThisDialog()) { 37eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch params.opacity = Widget::InitParams::TRANSLUCENT_WINDOW; 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) params.remove_standard_frame = true; 392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) params.context = context; 412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) params.parent = parent; 422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) params.top_level = true; 432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) widget->Init(params); 442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return widget; 452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 47a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateExtraView() { 48a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return NULL; 49a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 50a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 51a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateTitlebarExtraView() { 52a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return NULL; 53a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 54a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 55a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateFootnoteView() { 56a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return NULL; 57a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 58a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 59a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Cancel() { 60a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return true; 61a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 62a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 63a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Accept(bool window_closing) { 64a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return Accept(); 65a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 66a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 67a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Accept() { 68a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return true; 69a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 70a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 71a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)bool DialogDelegate::Close() { 72a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) int buttons = GetDialogButtons(); 73a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) if ((buttons & ui::DIALOG_BUTTON_CANCEL) || 74a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) (buttons == ui::DIALOG_BUTTON_NONE)) { 75a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return Cancel(); 76a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) } 77a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return Accept(true); 78a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)} 79a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) 80a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogLabel() const { 81a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return base::string16(); 82a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 83a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 84a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogTitle() const { 85a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles) return GetWindowTitle(); 86a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)} 87a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int DialogDelegate::GetDialogButtons() const { 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL; 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int DialogDelegate::GetDefaultDialogButton() const { 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (GetDialogButtons() & ui::DIALOG_BUTTON_OK) 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::DIALOG_BUTTON_OK; 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (GetDialogButtons() & ui::DIALOG_BUTTON_CANCEL) 965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::DIALOG_BUTTON_CANCEL; 975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::DIALOG_BUTTON_NONE; 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 100ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochbool DialogDelegate::ShouldDefaultButtonBeBlue() const { 101ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch return false; 102ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch} 103ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch 104a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogButtonLabel( 105a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) ui::DialogButton button) const { 1062a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (button == ui::DIALOG_BUTTON_OK) 1072a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF16(IDS_APP_OK); 1082a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (button == ui::DIALOG_BUTTON_CANCEL) { 1092a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (GetDialogButtons() & ui::DIALOG_BUTTON_OK) 1102a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF16(IDS_APP_CANCEL); 1112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return l10n_util::GetStringUTF16(IDS_APP_CLOSE); 1122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 1132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) NOTREACHED(); 114a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles) return base::string16(); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool DialogDelegate::IsDialogButtonEnabled(ui::DialogButton button) const { 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return true; 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)View* DialogDelegate::GetInitiallyFocusedView() { 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Focus the default button if any. 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const DialogClientView* dcv = GetDialogClientView(); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int default_button = GetDefaultDialogButton(); 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_button == ui::DIALOG_BUTTON_NONE) 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if ((default_button & GetDialogButtons()) == 0) { 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The default button is a button we don't have. 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_button & ui::DIALOG_BUTTON_OK) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return dcv->ok_button(); 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (default_button & ui::DIALOG_BUTTON_CANCEL) 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return dcv->cancel_button(); 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DialogDelegate* DialogDelegate::AsDialogDelegate() { 1422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return this; 1432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ClientView* DialogDelegate::CreateClientView(Widget* widget) { 1462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return new DialogClientView(widget, GetContentsView()); 1472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateNonClientFrameView(Widget* widget) { 150868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) if (UseNewStyleForThisDialog()) 151f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return CreateDialogFrameView(widget); 152868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) return WidgetDelegate::CreateNonClientFrameView(widget); 1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static 156f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateDialogFrameView(Widget* widget) { 157f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return CreateDialogFrameView(widget, false); 158b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)} 159b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) 160a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)// static 161f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateDialogFrameView( 162b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) Widget* widget, 163b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) bool force_opaque_border) { 164c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) BubbleFrameView* frame = new BubbleFrameView(gfx::Insets()); 1652a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const SkColor color = widget->GetNativeTheme()->GetSystemColor( 1662a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui::NativeTheme::kColorId_DialogBackground); 167b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) if (force_opaque_border) { 168b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) frame->SetBubbleBorder(new BubbleBorder( 169b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) BubbleBorder::NONE, 170b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) BubbleBorder::NO_SHADOW_OPAQUE_BORDER, 171b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) color)); 172b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } else { 173b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) frame->SetBubbleBorder(new BubbleBorder(BubbleBorder::FLOAT, 174b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) BubbleBorder::SMALL_SHADOW, 175b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) color)); 176b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) } 1772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) DialogDelegate* delegate = widget->widget_delegate()->AsDialogDelegate(); 1782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (delegate) { 1792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) View* titlebar_view = delegate->CreateTitlebarExtraView(); 1802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (titlebar_view) 1812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) frame->SetTitlebarExtraView(titlebar_view); 1822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) } 183b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) if (force_opaque_border) 184b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles) widget->set_frame_type(views::Widget::FRAME_TYPE_FORCE_CUSTOM); 1853551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#if defined(USE_AURA) 1863551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // TODO(msw): Add a matching shadow type and remove the bubble frame border? 1873551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) corewm::SetShadowType(widget->GetNativeWindow(), corewm::SHADOW_TYPE_NONE); 1883551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif 1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return frame; 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 192868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)bool DialogDelegate::UseNewStyleForThisDialog() const { 193f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles) return true; 194868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)} 195868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles) 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const DialogClientView* DialogDelegate::GetDialogClientView() const { 1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetWidget()->client_view()->AsDialogClientView(); 1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DialogClientView* DialogDelegate::GetDialogClientView() { 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return GetWidget()->client_view()->AsDialogClientView(); 2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ui::AccessibilityTypes::Role DialogDelegate::GetAccessibleWindowRole() const { 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return ui::AccessibilityTypes::ROLE_DIALOG; 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)//////////////////////////////////////////////////////////////////////////////// 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DialogDelegateView: 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DialogDelegateView::DialogDelegateView() { 2122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) // A WidgetDelegate should be deleted on DeleteDelegate. 2132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) set_owned_by_client(); 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DialogDelegateView::~DialogDelegateView() {} 2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DialogDelegateView::DeleteDelegate() { 2192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delete this; 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Widget* DialogDelegateView::GetWidget() { 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return View::GetWidget(); 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const Widget* DialogDelegateView::GetWidget() const { 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return View::GetWidget(); 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)View* DialogDelegateView::GetContentsView() { 2312a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return this; 2322a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 2332a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace views 235