Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(300)

Side by Side Diff: ui/views/controls/webview/web_dialog_view.cc

Issue 2871073002: cros: Bind hangup red button on remote controller to close web dialog (Closed)
Patch Set: nits Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ui/views/controls/webview/web_dialog_view.h ('k') | ui/views/test/widget_test.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "ui/views/controls/webview/web_dialog_view.h" 5 #include "ui/views/controls/webview/web_dialog_view.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/strings/utf_string_conversions.h" 9 #include "base/strings/utf_string_conversions.h"
10 #include "content/public/browser/browser_context.h" 10 #include "content/public/browser/browser_context.h"
(...skipping 18 matching lines...) Expand all
29 using content::WebUIMessageHandler; 29 using content::WebUIMessageHandler;
30 using ui::WebDialogDelegate; 30 using ui::WebDialogDelegate;
31 using ui::WebDialogUI; 31 using ui::WebDialogUI;
32 using ui::WebDialogWebContentsDelegate; 32 using ui::WebDialogWebContentsDelegate;
33 33
34 namespace views { 34 namespace views {
35 35
36 //////////////////////////////////////////////////////////////////////////////// 36 ////////////////////////////////////////////////////////////////////////////////
37 // WebDialogView, public: 37 // WebDialogView, public:
38 38
39 WebDialogView::WebDialogView( 39 WebDialogView::WebDialogView(content::BrowserContext* context,
40 content::BrowserContext* context, 40 WebDialogDelegate* delegate,
41 WebDialogDelegate* delegate, 41 WebContentsHandler* handler)
42 WebContentsHandler* handler) 42 : ClientView(nullptr, nullptr),
43 : ClientView(NULL, NULL),
44 WebDialogWebContentsDelegate(context, handler), 43 WebDialogWebContentsDelegate(context, handler),
45 delegate_(delegate), 44 delegate_(delegate),
46 web_view_(new views::WebView(context)), 45 web_view_(new views::WebView(context)) {
47 is_attempting_close_dialog_(false),
48 before_unload_fired_(false),
49 closed_via_webui_(false),
50 close_contents_called_(false) {
51 web_view_->set_allow_accelerators(true); 46 web_view_->set_allow_accelerators(true);
52 AddChildView(web_view_); 47 AddChildView(web_view_);
53 set_contents_view(web_view_); 48 set_contents_view(web_view_);
54 SetLayoutManager(new views::FillLayout); 49 SetLayoutManager(new views::FillLayout);
55 // Pressing the ESC key will close the dialog. 50 // Pressing the ESC key will close the dialog.
56 AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE)); 51 AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
52
53 if (delegate_) {
54 for (const auto& accelerator : delegate_->GetAccelerators())
55 AddAccelerator(accelerator);
56 }
57 } 57 }
58 58
59 WebDialogView::~WebDialogView() { 59 WebDialogView::~WebDialogView() {
60 } 60 }
61 61
62 content::WebContents* WebDialogView::web_contents() { 62 content::WebContents* WebDialogView::web_contents() {
63 return web_view_->web_contents(); 63 return web_view_->web_contents();
64 } 64 }
65 65
66 //////////////////////////////////////////////////////////////////////////////// 66 ////////////////////////////////////////////////////////////////////////////////
67 // WebDialogView, views::View implementation: 67 // WebDialogView, views::View implementation:
68 68
69 gfx::Size WebDialogView::GetPreferredSize() const { 69 gfx::Size WebDialogView::GetPreferredSize() const {
70 gfx::Size out; 70 gfx::Size out;
71 if (delegate_) 71 if (delegate_)
72 delegate_->GetDialogSize(&out); 72 delegate_->GetDialogSize(&out);
73 return out; 73 return out;
74 } 74 }
75 75
76 gfx::Size WebDialogView::GetMinimumSize() const { 76 gfx::Size WebDialogView::GetMinimumSize() const {
77 gfx::Size out; 77 gfx::Size out;
78 if (delegate_) 78 if (delegate_)
79 delegate_->GetMinimumDialogSize(&out); 79 delegate_->GetMinimumDialogSize(&out);
80 return out; 80 return out;
81 } 81 }
82 82
83 bool WebDialogView::AcceleratorPressed(const ui::Accelerator& accelerator) { 83 bool WebDialogView::AcceleratorPressed(const ui::Accelerator& accelerator) {
84 if (delegate_ && delegate_->AcceleratorPressed(accelerator))
85 return true;
86
84 // Pressing ESC closes the dialog. 87 // Pressing ESC closes the dialog.
85 DCHECK_EQ(ui::VKEY_ESCAPE, accelerator.key_code()); 88 DCHECK_EQ(ui::VKEY_ESCAPE, accelerator.key_code());
86 if (GetWidget()) 89 if (GetWidget())
87 GetWidget()->Close(); 90 GetWidget()->Close();
88 return true; 91 return true;
89 } 92 }
90 93
91 void WebDialogView::ViewHierarchyChanged( 94 void WebDialogView::ViewHierarchyChanged(
92 const ViewHierarchyChangedDetails& details) { 95 const ViewHierarchyChangedDetails& details) {
93 if (details.is_add && GetWidget()) 96 if (details.is_add && GetWidget())
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
227 if (delegate_) { 230 if (delegate_) {
228 // Store the dialog content area size. 231 // Store the dialog content area size.
229 delegate_->StoreDialogSize(GetContentsBounds().size()); 232 delegate_->StoreDialogSize(GetContentsBounds().size());
230 } 233 }
231 234
232 if (GetWidget()) 235 if (GetWidget())
233 GetWidget()->Close(); 236 GetWidget()->Close();
234 237
235 if (delegate_) { 238 if (delegate_) {
236 delegate_->OnDialogClosed(json_retval); 239 delegate_->OnDialogClosed(json_retval);
237 delegate_ = NULL; // We will not communicate further with the delegate. 240 delegate_ = nullptr; // We will not communicate further with the delegate.
238 } 241 }
239 } 242 }
240 243
241 void WebDialogView::OnDialogCloseFromWebUI(const std::string& json_retval) { 244 void WebDialogView::OnDialogCloseFromWebUI(const std::string& json_retval) {
242 closed_via_webui_ = true; 245 closed_via_webui_ = true;
243 dialog_close_retval_ = json_retval; 246 dialog_close_retval_ = json_retval;
244 if (GetWidget()) 247 if (GetWidget())
245 GetWidget()->Close(); 248 GetWidget()->Close();
246 } 249 }
247 250
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after
289 close_contents_called_ = true; 292 close_contents_called_ = true;
290 bool close_dialog = false; 293 bool close_dialog = false;
291 OnCloseContents(source, &close_dialog); 294 OnCloseContents(source, &close_dialog);
292 if (close_dialog) 295 if (close_dialog)
293 OnDialogClosed(closed_via_webui_ ? dialog_close_retval_ : std::string()); 296 OnDialogClosed(closed_via_webui_ ? dialog_close_retval_ : std::string());
294 } 297 }
295 298
296 content::WebContents* WebDialogView::OpenURLFromTab( 299 content::WebContents* WebDialogView::OpenURLFromTab(
297 content::WebContents* source, 300 content::WebContents* source,
298 const content::OpenURLParams& params) { 301 const content::OpenURLParams& params) {
299 content::WebContents* new_contents = NULL; 302 content::WebContents* new_contents = nullptr;
300 if (delegate_ && 303 if (delegate_ &&
301 delegate_->HandleOpenURLFromTab(source, params, &new_contents)) { 304 delegate_->HandleOpenURLFromTab(source, params, &new_contents)) {
302 return new_contents; 305 return new_contents;
303 } 306 }
304 return WebDialogWebContentsDelegate::OpenURLFromTab(source, params); 307 return WebDialogWebContentsDelegate::OpenURLFromTab(source, params);
305 } 308 }
306 309
307 void WebDialogView::AddNewContents(content::WebContents* source, 310 void WebDialogView::AddNewContents(content::WebContents* source,
308 content::WebContents* new_contents, 311 content::WebContents* new_contents,
309 WindowOpenDisposition disposition, 312 WindowOpenDisposition disposition,
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
360 web_contents->SetDelegate(this); 363 web_contents->SetDelegate(this);
361 364
362 // Set the delegate. This must be done before loading the page. See 365 // Set the delegate. This must be done before loading the page. See
363 // the comment above WebDialogUI in its header file for why. 366 // the comment above WebDialogUI in its header file for why.
364 WebDialogUI::SetDelegate(web_contents, this); 367 WebDialogUI::SetDelegate(web_contents, this);
365 368
366 web_view_->LoadInitialURL(GetDialogContentURL()); 369 web_view_->LoadInitialURL(GetDialogContentURL());
367 } 370 }
368 371
369 } // namespace views 372 } // namespace views
OLDNEW
« no previous file with comments | « ui/views/controls/webview/web_dialog_view.h ('k') | ui/views/test/widget_test.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698