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

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

Issue 851853002: It is time. (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: Trying to reup because the last upload failed. Created 5 years, 11 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
OLDNEW
(Empty)
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
3 // found in the LICENSE file.
4
5 #ifndef UI_VIEWS_CONTROLS_WEBVIEW_WEB_DIALOG_VIEW_H_
6 #define UI_VIEWS_CONTROLS_WEBVIEW_WEB_DIALOG_VIEW_H_
7
8 #include <string>
9 #include <vector>
10
11 #include "base/gtest_prod_util.h"
12 #include "base/memory/scoped_ptr.h"
13 #include "ui/gfx/size.h"
14 #include "ui/views/controls/webview/webview_export.h"
15 #include "ui/views/widget/widget_delegate.h"
16 #include "ui/views/window/client_view.h"
17 #include "ui/web_dialogs/web_dialog_delegate.h"
18 #include "ui/web_dialogs/web_dialog_web_contents_delegate.h"
19
20 namespace content {
21 class BrowserContext;
22 }
23
24 namespace views {
25 class WebView;
26
27 ////////////////////////////////////////////////////////////////////////////////
28 //
29 // WebDialogView is a view used to display an web dialog to the user. The
30 // content of the dialogs is determined by the delegate
31 // (ui::WebDialogDelegate), but is basically a file URL along with a
32 // JSON input string. The HTML is supposed to show a UI to the user and is
33 // expected to send back a JSON file as a return value.
34 //
35 ////////////////////////////////////////////////////////////////////////////////
36 //
37 // TODO(akalin): Make WebDialogView contain an WebDialogWebContentsDelegate
38 // instead of inheriting from it to avoid violating the "no multiple
39 // inheritance" rule.
40 class WEBVIEW_EXPORT WebDialogView : public views::ClientView,
41 public ui::WebDialogWebContentsDelegate,
42 public ui::WebDialogDelegate,
43 public views::WidgetDelegate {
44 public:
45 // |handler| must not be NULL and this class takes the ownership.
46 WebDialogView(content::BrowserContext* context,
47 ui::WebDialogDelegate* delegate,
48 WebContentsHandler* handler);
49 virtual ~WebDialogView();
50
51 // For testing.
52 content::WebContents* web_contents();
53
54 // Overridden from views::ClientView:
55 virtual gfx::Size GetPreferredSize() const override;
56 virtual gfx::Size GetMinimumSize() const override;
57 virtual bool AcceleratorPressed(const ui::Accelerator& accelerator)
58 override;
59 virtual void ViewHierarchyChanged(
60 const ViewHierarchyChangedDetails& details) override;
61 virtual bool CanClose() override;
62
63 // Overridden from views::WidgetDelegate:
64 virtual bool CanResize() const override;
65 virtual ui::ModalType GetModalType() const override;
66 virtual base::string16 GetWindowTitle() const override;
67 virtual std::string GetWindowName() const override;
68 virtual void WindowClosing() override;
69 virtual views::View* GetContentsView() override;
70 virtual ClientView* CreateClientView(views::Widget* widget) override;
71 virtual views::View* GetInitiallyFocusedView() override;
72 virtual bool ShouldShowWindowTitle() const override;
73 virtual views::Widget* GetWidget() override;
74 virtual const views::Widget* GetWidget() const override;
75
76 // Overridden from ui::WebDialogDelegate:
77 virtual ui::ModalType GetDialogModalType() const override;
78 virtual base::string16 GetDialogTitle() const override;
79 virtual GURL GetDialogContentURL() const override;
80 virtual void GetWebUIMessageHandlers(
81 std::vector<content::WebUIMessageHandler*>* handlers) const override;
82 virtual void GetDialogSize(gfx::Size* size) const override;
83 virtual void GetMinimumDialogSize(gfx::Size* size) const override;
84 virtual std::string GetDialogArgs() const override;
85 virtual void OnDialogShown(
86 content::WebUI* webui,
87 content::RenderViewHost* render_view_host) override;
88 virtual void OnDialogClosed(const std::string& json_retval) override;
89 virtual void OnDialogCloseFromWebUI(
90 const std::string& json_retval) override;
91 virtual void OnCloseContents(content::WebContents* source,
92 bool* out_close_dialog) override;
93 virtual bool ShouldShowDialogTitle() const override;
94 virtual bool HandleContextMenu(
95 const content::ContextMenuParams& params) override;
96
97 // Overridden from content::WebContentsDelegate:
98 virtual void MoveContents(content::WebContents* source,
99 const gfx::Rect& pos) override;
100 virtual void HandleKeyboardEvent(
101 content::WebContents* source,
102 const content::NativeWebKeyboardEvent& event) override;
103 virtual void CloseContents(content::WebContents* source) override;
104 virtual content::WebContents* OpenURLFromTab(
105 content::WebContents* source,
106 const content::OpenURLParams& params) override;
107 virtual void AddNewContents(content::WebContents* source,
108 content::WebContents* new_contents,
109 WindowOpenDisposition disposition,
110 const gfx::Rect& initial_pos,
111 bool user_gesture,
112 bool* was_blocked) override;
113 virtual void LoadingStateChanged(content::WebContents* source,
114 bool to_different_document) override;
115 virtual void BeforeUnloadFired(content::WebContents* tab,
116 bool proceed,
117 bool* proceed_to_fire_unload) override;
118
119 private:
120 FRIEND_TEST_ALL_PREFIXES(WebDialogBrowserTest, WebContentRendered);
121
122 // Initializes the contents of the dialog.
123 void InitDialog();
124
125 // This view is a delegate to the HTML content since it needs to get notified
126 // about when the dialog is closing. For all other actions (besides dialog
127 // closing) we delegate to the creator of this view, which we keep track of
128 // using this variable.
129 ui::WebDialogDelegate* delegate_;
130
131 views::WebView* web_view_;
132
133 // Whether user is attempting to close the dialog and we are processing
134 // beforeunload event.
135 bool is_attempting_close_dialog_;
136
137 // Whether beforeunload event has been fired and we have finished processing
138 // beforeunload event.
139 bool before_unload_fired_;
140
141 // Whether the dialog is closed from WebUI in response to a "dialogClose"
142 // message.
143 bool closed_via_webui_;
144
145 // A json string returned to WebUI from a "dialogClose" message.
146 std::string dialog_close_retval_;
147
148 // Whether CloseContents() has been called.
149 bool close_contents_called_;
150
151 DISALLOW_COPY_AND_ASSIGN(WebDialogView);
152 };
153
154 } // namespace views
155
156 #endif // UI_VIEWS_CONTROLS_WEBVIEW_WEB_DIALOG_VIEW_H_
OLDNEW
« no previous file with comments | « ui/views/controls/webview/unhandled_keyboard_event_handler_win.cc ('k') | ui/views/controls/webview/web_dialog_view.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698