dialog_delegate.cc revision ca12bfac764ba476d6cd062bf1dde12cc64c3f40
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"
147dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "ui/views/controls/textfield/textfield.h"
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/widget/widget.h"
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/widget/widget_observer.h"
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/views/window/dialog_client_view.h"
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_AURA)
202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/views/corewm/shadow_types.h"
212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace views {
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
25b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)////////////////////////////////////////////////////////////////////////////////
26b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// DialogDelegate:
27b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
28b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)DialogDelegate::~DialogDelegate() {
29b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
30b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
31b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// static
32b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)bool DialogDelegate::UseNewStyle() {
337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch  return switches::IsNewDialogStyleEnabled() &&
347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch         Textfield::IsViewsTextfieldEnabled();
35b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
37b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)// static
38b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)Widget* DialogDelegate::CreateDialogWidget(DialogDelegate* dialog,
39b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                           gfx::NativeWindow context,
40b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                           gfx::NativeWindow parent) {
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  views::Widget* widget = new views::Widget;
422a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  views::Widget::InitParams params;
43b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  params.delegate = dialog;
44868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  const bool use_new_style = dialog ?
45868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)      dialog->UseNewStyleForThisDialog() : DialogDelegate::UseNewStyle();
46868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  if (use_new_style) {
47c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)    // Note: Transparent widgets cannot host native Windows textfield controls.
48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    params.opacity = Widget::InitParams::TRANSLUCENT_WINDOW;
492a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    params.remove_standard_frame = true;
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  params.context = context;
522a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  params.parent = parent;
532a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  params.top_level = true;
542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  widget->Init(params);
55868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  if (use_new_style) {
562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#if defined(USE_AURA)
572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    // TODO(msw): Add a matching shadow type and remove the bubble frame border?
582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    corewm::SetShadowType(widget->GetNativeWindow(), corewm::SHADOW_TYPE_NONE);
592a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#endif
602a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return widget;
622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
64a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateExtraView() {
65a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return NULL;
66a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
67a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
68a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateTitlebarExtraView() {
69a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return NULL;
70a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
71a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
72a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)View* DialogDelegate::CreateFootnoteView() {
73a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return NULL;
74a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
75a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
76a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Cancel() {
77a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return true;
78a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
79a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
80a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Accept(bool window_closing) {
81a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return Accept();
82a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
83a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
84a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)bool DialogDelegate::Accept() {
85a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return true;
86a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
87a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
88a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogLabel() const {
89a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return base::string16();
90a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
91a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
92a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogTitle() const {
93a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return base::string16();
94a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)}
95a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int DialogDelegate::GetDialogButtons() const {
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ui::DIALOG_BUTTON_OK | ui::DIALOG_BUTTON_CANCEL;
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)int DialogDelegate::GetDefaultDialogButton() const {
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (GetDialogButtons() & ui::DIALOG_BUTTON_OK)
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return ui::DIALOG_BUTTON_OK;
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  if (GetDialogButtons() & ui::DIALOG_BUTTON_CANCEL)
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    return ui::DIALOG_BUTTON_CANCEL;
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ui::DIALOG_BUTTON_NONE;
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
108ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdochbool DialogDelegate::ShouldDefaultButtonBeBlue() const {
109ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch  return false;
110ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch}
111ca12bfac764ba476d6cd062bf1dde12cc64c3f40Ben Murdoch
112a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)base::string16 DialogDelegate::GetDialogButtonLabel(
113a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)    ui::DialogButton button) const {
1142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (button == ui::DIALOG_BUTTON_OK)
1152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return l10n_util::GetStringUTF16(IDS_APP_OK);
1162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (button == ui::DIALOG_BUTTON_CANCEL) {
1172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (GetDialogButtons() & ui::DIALOG_BUTTON_OK)
1182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      return l10n_util::GetStringUTF16(IDS_APP_CANCEL);
1192a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    return l10n_util::GetStringUTF16(IDS_APP_CLOSE);
1202a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
1212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  NOTREACHED();
122a93a17c8d99d686bd4a1511e5504e5e6cc9fcadfTorne (Richard Coles)  return base::string16();
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool DialogDelegate::IsDialogButtonEnabled(ui::DialogButton button) const {
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) {
158868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  if (UseNewStyleForThisDialog())
159868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)    return CreateNewStyleFrameView(widget);
160868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  return WidgetDelegate::CreateNonClientFrameView(widget);
1612a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
1622a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
1632a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// static
1642a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateNewStyleFrameView(Widget* widget) {
165b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  return CreateNewStyleFrameView(widget, false);
166b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)}
167b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)
168b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)NonClientFrameView* DialogDelegate::CreateNewStyleFrameView(
169b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    Widget* widget,
170b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    bool force_opaque_border) {
171c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)  BubbleFrameView* frame = new BubbleFrameView(gfx::Insets());
1722a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  const SkColor color = widget->GetNativeTheme()->GetSystemColor(
1732a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      ui::NativeTheme::kColorId_DialogBackground);
174b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  if (force_opaque_border) {
175b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    frame->SetBubbleBorder(new BubbleBorder(
176b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        BubbleBorder::NONE,
177b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        BubbleBorder::NO_SHADOW_OPAQUE_BORDER,
178b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)        color));
179b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  } else {
180b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    frame->SetBubbleBorder(new BubbleBorder(BubbleBorder::FLOAT,
181b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                            BubbleBorder::SMALL_SHADOW,
182b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)                                            color));
183b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  }
1842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  frame->SetTitle(widget->widget_delegate()->GetWindowTitle());
1852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  DialogDelegate* delegate = widget->widget_delegate()->AsDialogDelegate();
1862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  if (delegate) {
1872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    View* titlebar_view = delegate->CreateTitlebarExtraView();
1882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)    if (titlebar_view)
1892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)      frame->SetTitlebarExtraView(titlebar_view);
1902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  }
19190dce4d38c5ff5333bea97d859d4e484e27edf0cTorne (Richard Coles)  frame->SetShowCloseButton(widget->widget_delegate()->ShouldShowCloseButton());
192b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)  if (force_opaque_border)
193b2df76ea8fec9e32f6f3718986dba0d95315b29cTorne (Richard Coles)    widget->set_frame_type(views::Widget::FRAME_TYPE_FORCE_CUSTOM);
1942a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return frame;
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
197868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)bool DialogDelegate::UseNewStyleForThisDialog() const {
198868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)  return UseNewStyle();
199868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)}
200868fa2fe829687343ffae624259930155e16dbd8Torne (Richard Coles)
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const DialogClientView* DialogDelegate::GetDialogClientView() const {
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetWidget()->client_view()->AsDialogClientView();
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DialogClientView* DialogDelegate::GetDialogClientView() {
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return GetWidget()->client_view()->AsDialogClientView();
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)ui::AccessibilityTypes::Role DialogDelegate::GetAccessibleWindowRole() const {
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return ui::AccessibilityTypes::ROLE_DIALOG;
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)////////////////////////////////////////////////////////////////////////////////
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// DialogDelegateView:
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)DialogDelegateView::DialogDelegateView() {
2172a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  // A WidgetDelegate should be deleted on DeleteDelegate.
2182a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  set_owned_by_client();
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2212a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DialogDelegateView::~DialogDelegateView() {}
2222a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2232a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)void DialogDelegateView::DeleteDelegate() {
2242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  delete this;
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)Widget* DialogDelegateView::GetWidget() {
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return View::GetWidget();
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)const Widget* DialogDelegateView::GetWidget() const {
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)  return View::GetWidget();
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)View* DialogDelegateView::GetContentsView() {
2362a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  return this;
2372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
2382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}  // namespace views
240