| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/pdf/pdf_tab_helper.h" | 5 #include "chrome/browser/ui/pdf/pdf_tab_helper.h" |
| 6 | 6 |
| 7 #include "components/web_modal/web_contents_modal_dialog_host.h" | 7 #include "chrome/browser/ui/views/constrained_window_views.h" |
| 8 #include "components/web_modal/web_contents_modal_dialog_manager.h" | |
| 9 #include "components/web_modal/web_contents_modal_dialog_manager_delegate.h" | |
| 10 #include "content/public/browser/web_contents.h" | 8 #include "content/public/browser/web_contents.h" |
| 11 #include "grit/generated_resources.h" | 9 #include "grit/generated_resources.h" |
| 12 #include "ui/base/l10n/l10n_util.h" | 10 #include "ui/base/l10n/l10n_util.h" |
| 13 #include "ui/views/controls/message_box_view.h" | 11 #include "ui/views/controls/message_box_view.h" |
| 14 #include "ui/views/controls/textfield/textfield.h" | 12 #include "ui/views/controls/textfield/textfield.h" |
| 15 #include "ui/views/layout/layout_constants.h" | 13 #include "ui/views/layout/layout_constants.h" |
| 16 #include "ui/views/widget/widget.h" | 14 #include "ui/views/widget/widget.h" |
| 17 #include "ui/views/window/dialog_delegate.h" | 15 #include "ui/views/window/dialog_delegate.h" |
| 18 | 16 |
| 19 namespace { | 17 namespace { |
| 20 | 18 |
| 21 // PDFPasswordDialogViews runs a tab-modal dialog that asks the user for a | 19 // Runs a tab-modal dialog that asks the user for a password. |
| 22 // password. | |
| 23 class PDFPasswordDialogViews : public views::DialogDelegate { | 20 class PDFPasswordDialogViews : public views::DialogDelegate { |
| 24 public: | 21 public: |
| 25 PDFPasswordDialogViews(content::WebContents* web_contents, | 22 PDFPasswordDialogViews(content::WebContents* web_contents, |
| 26 const base::string16& prompt, | 23 const base::string16& prompt, |
| 27 const PasswordDialogClosedCallback& callback); | 24 const PasswordDialogClosedCallback& callback); |
| 28 virtual ~PDFPasswordDialogViews(); | 25 virtual ~PDFPasswordDialogViews(); |
| 29 | 26 |
| 30 // views::DialogDelegate: | 27 // views::DialogDelegate: |
| 31 virtual base::string16 GetWindowTitle() const OVERRIDE; | 28 virtual base::string16 GetWindowTitle() const OVERRIDE; |
| 32 virtual base::string16 GetDialogButtonLabel( | 29 virtual base::string16 GetDialogButtonLabel( |
| 33 ui::DialogButton button) const OVERRIDE; | 30 ui::DialogButton button) const OVERRIDE; |
| 34 virtual bool Cancel() OVERRIDE; | 31 virtual bool Cancel() OVERRIDE; |
| 35 virtual bool Accept() OVERRIDE; | 32 virtual bool Accept() OVERRIDE; |
| 36 | 33 |
| 37 // views::WidgetDelegate: | 34 // views::WidgetDelegate: |
| 38 virtual views::View* GetInitiallyFocusedView() OVERRIDE; | 35 virtual views::View* GetInitiallyFocusedView() OVERRIDE; |
| 39 virtual views::View* GetContentsView() OVERRIDE; | 36 virtual views::View* GetContentsView() OVERRIDE; |
| 40 virtual views::Widget* GetWidget() OVERRIDE; | 37 virtual views::Widget* GetWidget() OVERRIDE; |
| 41 virtual const views::Widget* GetWidget() const OVERRIDE; | 38 virtual const views::Widget* GetWidget() const OVERRIDE; |
| 42 virtual void DeleteDelegate() OVERRIDE; | 39 virtual void DeleteDelegate() OVERRIDE; |
| 43 virtual ui::ModalType GetModalType() const OVERRIDE; | 40 virtual ui::ModalType GetModalType() const OVERRIDE; |
| 44 | 41 |
| 45 private: | 42 private: |
| 46 // The message box view whose commands we handle. | 43 // The message box view whose commands we handle. |
| 47 views::MessageBoxView* message_box_view_; | 44 views::MessageBoxView* message_box_view_; |
| 48 | 45 |
| 49 views::Widget* dialog_; | |
| 50 | |
| 51 PasswordDialogClosedCallback callback_; | 46 PasswordDialogClosedCallback callback_; |
| 52 | 47 |
| 53 DISALLOW_COPY_AND_ASSIGN(PDFPasswordDialogViews); | 48 DISALLOW_COPY_AND_ASSIGN(PDFPasswordDialogViews); |
| 54 }; | 49 }; |
| 55 | 50 |
| 56 PDFPasswordDialogViews::PDFPasswordDialogViews( | 51 PDFPasswordDialogViews::PDFPasswordDialogViews( |
| 57 content::WebContents* web_contents, | 52 content::WebContents* web_contents, |
| 58 const base::string16& prompt, | 53 const base::string16& prompt, |
| 59 const PasswordDialogClosedCallback& callback) | 54 const PasswordDialogClosedCallback& callback) |
| 60 : message_box_view_(NULL), | 55 : message_box_view_(NULL), |
| 61 dialog_(NULL), | |
| 62 callback_(callback) { | 56 callback_(callback) { |
| 63 views::MessageBoxView::InitParams init_params(prompt); | 57 views::MessageBoxView::InitParams init_params(prompt); |
| 64 init_params.options = views::MessageBoxView::HAS_PROMPT_FIELD; | 58 init_params.options = views::MessageBoxView::HAS_PROMPT_FIELD; |
| 65 init_params.inter_row_vertical_spacing = | 59 init_params.inter_row_vertical_spacing = |
| 66 views::kUnrelatedControlVerticalSpacing; | 60 views::kUnrelatedControlVerticalSpacing; |
| 67 message_box_view_ = new views::MessageBoxView(init_params); | 61 message_box_view_ = new views::MessageBoxView(init_params); |
| 68 message_box_view_->text_box()->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD); | 62 message_box_view_->text_box()->SetTextInputType(ui::TEXT_INPUT_TYPE_PASSWORD); |
| 69 | 63 ShowWebModalDialogViews(this, web_contents); |
| 70 web_modal::WebContentsModalDialogManager* web_contents_modal_dialog_manager = | |
| 71 web_modal::WebContentsModalDialogManager::FromWebContents(web_contents); | |
| 72 web_modal::WebContentsModalDialogManagerDelegate* modal_delegate = | |
| 73 web_contents_modal_dialog_manager->delegate(); | |
| 74 DCHECK(modal_delegate); | |
| 75 dialog_ = views::Widget::CreateWindowAsFramelessChild( | |
| 76 this, modal_delegate->GetWebContentsModalDialogHost()->GetHostView()); | |
| 77 web_contents_modal_dialog_manager->ShowModalDialog( | |
| 78 dialog_->GetNativeView()); | |
| 79 } | 64 } |
| 80 | 65 |
| 81 PDFPasswordDialogViews::~PDFPasswordDialogViews() { | 66 PDFPasswordDialogViews::~PDFPasswordDialogViews() { |
| 82 if (!callback_.is_null()) { | 67 if (!callback_.is_null()) { |
| 83 // This dialog was torn down without either OK or cancel being clicked; be | 68 // This dialog was torn down without either OK or cancel being clicked; be |
| 84 // considerate and at least do the callback. | 69 // considerate and at least do the callback. |
| 85 callback_.Run(false, base::string16()); | 70 callback_.Run(false, base::string16()); |
| 86 } | 71 } |
| 87 } | 72 } |
| 88 | 73 |
| (...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 131 | 116 |
| 132 const views::Widget* PDFPasswordDialogViews::GetWidget() const { | 117 const views::Widget* PDFPasswordDialogViews::GetWidget() const { |
| 133 return message_box_view_->GetWidget(); | 118 return message_box_view_->GetWidget(); |
| 134 } | 119 } |
| 135 | 120 |
| 136 void PDFPasswordDialogViews::DeleteDelegate() { | 121 void PDFPasswordDialogViews::DeleteDelegate() { |
| 137 delete this; | 122 delete this; |
| 138 } | 123 } |
| 139 | 124 |
| 140 ui::ModalType PDFPasswordDialogViews::GetModalType() const { | 125 ui::ModalType PDFPasswordDialogViews::GetModalType() const { |
| 141 #if defined(USE_ASH) | |
| 142 return ui::MODAL_TYPE_CHILD; | 126 return ui::MODAL_TYPE_CHILD; |
| 143 #else | |
| 144 return views::WidgetDelegate::GetModalType(); | |
| 145 #endif | |
| 146 } | 127 } |
| 147 | 128 |
| 148 } // namespace | 129 } // namespace |
| 149 | 130 |
| 150 void ShowPDFPasswordDialog(content::WebContents* web_contents, | 131 void ShowPDFPasswordDialog(content::WebContents* web_contents, |
| 151 const base::string16& prompt, | 132 const base::string16& prompt, |
| 152 const PasswordDialogClosedCallback& callback) { | 133 const PasswordDialogClosedCallback& callback) { |
| 153 new PDFPasswordDialogViews(web_contents, prompt, callback); | 134 new PDFPasswordDialogViews(web_contents, prompt, callback); |
| 154 } | 135 } |
| OLD | NEW |