dialog_delegate.cc revision 90dce4d38c5ff5333bea97d859d4e484e27edf0c
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"
10b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)#include "ui/base/ui_base_switches_util.h"
112a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/bubble/bubble_border.h"
122a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/bubble/bubble_frame_view.h"
132a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/controls/button/label_button.h"
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h"
152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/widget/widget_observer.h"
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/window/dialog_client_view.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_AURA)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/corewm/shadow_types.h"
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views {
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
24b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)////////////////////////////////////////////////////////////////////////////////
25b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// DialogDelegate:
26b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
27b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)DialogDelegate::~DialogDelegate() {
28b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
29b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
30b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// static
31b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)bool DialogDelegate::UseNewStyle() {
32b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  return switches::IsNewDialogStyleEnabled();
33b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
35b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// static
36b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)Widget* DialogDelegate::CreateDialogWidget(DialogDelegate* dialog,
37b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                           gfx::NativeWindow context,
38b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                           gfx::NativeWindow parent) {
392a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  views::Widget* widget = new views::Widget;
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  views::Widget::InitParams params;
41b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  params.delegate = dialog;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (DialogDelegate::UseNewStyle()) {
43c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // Note: Transparent widgets cannot host native Windows textfield controls.
44c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    params.transparent = true;
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    params.remove_standard_frame = true;
462a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
472a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  params.context = context;
482a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  params.parent = parent;
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  params.top_level = true;
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  widget->Init(params);
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (DialogDelegate::UseNewStyle()) {
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_AURA)
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // TODO(msw): Add a matching shadow type and remove the bubble frame border?
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    corewm::SetShadowType(widget->GetNativeWindow(), corewm::SHADOW_TYPE_NONE);
552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return widget;
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
60a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateExtraView() {
61a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return NULL;
62a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
63a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
64a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateTitlebarExtraView() {
65a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return NULL;
66a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
67a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
68a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateFootnoteView() {
69a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return NULL;
70a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
71a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
72a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Cancel() {
73a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return true;
74a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
75a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
76a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Accept(bool window_closing) {
77a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return Accept();
78a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
79a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
80a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Accept() {
81a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return true;
82a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
83a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
84a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogLabel() const {
85a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return base::string16();
86a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
87a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
88a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogTitle() const {
89a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return base::string16();
90a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
91a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int DialogDelegate::GetDialogButtons() const {
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int DialogDelegate::GetDefaultDialogButton() const {
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (GetDialogButtons() & ui::DIALOG_BUTTON_OK)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return ui::DIALOG_BUTTON_OK;
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (GetDialogButtons() & ui::DIALOG_BUTTON_CANCEL)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return ui::DIALOG_BUTTON_CANCEL;
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ui::DIALOG_BUTTON_NONE;
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
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)
121a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::OnDialogButtonActivated(ui::DialogButton button) {
122a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  if (button == ui::DIALOG_BUTTON_OK)
123a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)    return Accept();
124a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  if (button == ui::DIALOG_BUTTON_CANCEL)
125a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)    return Cancel();
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return true;
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)View* DialogDelegate::GetInitiallyFocusedView() {
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  // Focus the default button if any.
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  const DialogClientView* dcv = GetDialogClientView();
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  int default_button = GetDefaultDialogButton();
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (default_button == ui::DIALOG_BUTTON_NONE)
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return NULL;
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if ((default_button & GetDialogButtons()) == 0) {
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    // The default button is a button we don't have.
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    NOTREACHED();
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return NULL;
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  }
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (default_button & ui::DIALOG_BUTTON_OK)
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return dcv->ok_button();
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (default_button & ui::DIALOG_BUTTON_CANCEL)
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return dcv->cancel_button();
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return NULL;
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DialogDelegate* DialogDelegate::AsDialogDelegate() {
1502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return this;
1512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)ClientView* DialogDelegate::CreateClientView(Widget* widget) {
1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return new DialogClientView(widget, GetContentsView());
1552a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateNonClientFrameView(Widget* widget) {
1582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return UseNewStyle() ? CreateNewStyleFrameView(widget) :
1592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)                         WidgetDelegate::CreateNonClientFrameView(widget);
1602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateNewStyleFrameView(Widget* widget) {
164b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  return CreateNewStyleFrameView(widget, false);
165b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
166b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
167b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateNewStyleFrameView(
168b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    Widget* widget,
169b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    bool force_opaque_border) {
170c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  BubbleFrameView* frame = new BubbleFrameView(gfx::Insets());
1712a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const SkColor color = widget->GetNativeTheme()->GetSystemColor(
1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      ui::NativeTheme::kColorId_DialogBackground);
173b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  if (force_opaque_border) {
174b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    frame->SetBubbleBorder(new BubbleBorder(
175b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        BubbleBorder::NONE,
176b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        BubbleBorder::NO_SHADOW_OPAQUE_BORDER,
177b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        color));
178b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  } else {
179b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    frame->SetBubbleBorder(new BubbleBorder(BubbleBorder::FLOAT,
180b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                            BubbleBorder::SMALL_SHADOW,
181b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                            color));
182b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  }
1832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  frame->SetTitle(widget->widget_delegate()->GetWindowTitle());
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DialogDelegate* delegate = widget->widget_delegate()->AsDialogDelegate();
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (delegate) {
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    View* titlebar_view = delegate->CreateTitlebarExtraView();
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (titlebar_view)
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      frame->SetTitlebarExtraView(titlebar_view);
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
19090dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  frame->SetShowCloseButton(widget->widget_delegate()->ShouldShowCloseButton());
191b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  if (force_opaque_border)
192b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    widget->set_frame_type(views::Widget::FRAME_TYPE_FORCE_CUSTOM);
1932a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return frame;
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (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