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