OLD | NEW |
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 #ifndef CHROME_BROWSER_PRINTING_PRINT_DIALOG_CLOUD_INTERNAL_H_ | 5 #ifndef CHROME_BROWSER_PRINTING_PRINT_DIALOG_CLOUD_INTERNAL_H_ |
6 #define CHROME_BROWSER_PRINTING_PRINT_DIALOG_CLOUD_INTERNAL_H_ | 6 #define CHROME_BROWSER_PRINTING_PRINT_DIALOG_CLOUD_INTERNAL_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <string> | 9 #include <string> |
10 #include <vector> | 10 #include <vector> |
11 | 11 |
12 #include "base/callback.h" | 12 #include "base/callback.h" |
13 #include "base/file_path.h" | 13 #include "base/file_path.h" |
14 #include "base/memory/scoped_ptr.h" | 14 #include "base/memory/scoped_ptr.h" |
15 #include "base/synchronization/lock.h" | 15 #include "base/synchronization/lock.h" |
16 #include "chrome/browser/ui/webui/html_dialog_ui.h" | 16 #include "chrome/browser/ui/webui/web_dialog_ui.h" |
17 #include "content/public/browser/notification_observer.h" | 17 #include "content/public/browser/notification_observer.h" |
18 #include "content/public/browser/notification_registrar.h" | 18 #include "content/public/browser/notification_registrar.h" |
19 #include "content/public/browser/web_ui_message_handler.h" | 19 #include "content/public/browser/web_ui_message_handler.h" |
20 | 20 |
21 class GURL; | 21 class GURL; |
22 class CloudPrintHtmlDialogDelegateTest; | 22 class CloudPrintWebDialogDelegateTest; |
23 | 23 |
24 namespace base { | 24 namespace base { |
25 class ListValue; | 25 class ListValue; |
26 class StringValue; | 26 class StringValue; |
27 class Value; | 27 class Value; |
28 } | 28 } |
29 | 29 |
30 namespace internal_cloud_print_helpers { | 30 namespace internal_cloud_print_helpers { |
31 | 31 |
32 // Small class to virtualize a few functions to aid with unit testing. | 32 // Small class to virtualize a few functions to aid with unit testing. |
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
86 base::Lock lock_; | 86 base::Lock lock_; |
87 CloudPrintDataSenderHelper* volatile helper_; | 87 CloudPrintDataSenderHelper* volatile helper_; |
88 scoped_ptr<base::StringValue> print_data_; | 88 scoped_ptr<base::StringValue> print_data_; |
89 string16 print_job_title_; | 89 string16 print_job_title_; |
90 string16 print_ticket_; | 90 string16 print_ticket_; |
91 std::string file_type_; | 91 std::string file_type_; |
92 | 92 |
93 DISALLOW_COPY_AND_ASSIGN(CloudPrintDataSender); | 93 DISALLOW_COPY_AND_ASSIGN(CloudPrintDataSender); |
94 }; | 94 }; |
95 | 95 |
96 class CloudPrintHtmlDialogDelegate; | 96 class CloudPrintWebDialogDelegate; |
97 | 97 |
98 // The CloudPrintFlowHandler connects the state machine (the UI delegate) | 98 // The CloudPrintFlowHandler connects the state machine (the UI delegate) |
99 // to the dialog backing HTML and JS by providing WebUIMessageHandler | 99 // to the dialog backing HTML and JS by providing WebUIMessageHandler |
100 // functions for the JS to use. This include refreshing the page | 100 // functions for the JS to use. This include refreshing the page |
101 // setup parameters (which will cause a re-generation of the PDF in | 101 // setup parameters (which will cause a re-generation of the PDF in |
102 // the renderer process - do we want a progress throbber shown? | 102 // the renderer process - do we want a progress throbber shown? |
103 // Probably..), and packing up the PDF and job parameters and sending | 103 // Probably..), and packing up the PDF and job parameters and sending |
104 // them to the cloud. | 104 // them to the cloud. |
105 class CloudPrintFlowHandler : public content::WebUIMessageHandler, | 105 class CloudPrintFlowHandler : public content::WebUIMessageHandler, |
106 public content::NotificationObserver { | 106 public content::NotificationObserver { |
(...skipping 12 matching lines...) Expand all Loading... |
119 // content::NotificationObserver implementation. | 119 // content::NotificationObserver implementation. |
120 virtual void Observe(int type, | 120 virtual void Observe(int type, |
121 const content::NotificationSource& source, | 121 const content::NotificationSource& source, |
122 const content::NotificationDetails& details) OVERRIDE; | 122 const content::NotificationDetails& details) OVERRIDE; |
123 | 123 |
124 // Callbacks from the page. | 124 // Callbacks from the page. |
125 void HandleShowDebugger(const base::ListValue* args); | 125 void HandleShowDebugger(const base::ListValue* args); |
126 void HandleSendPrintData(const base::ListValue* args); | 126 void HandleSendPrintData(const base::ListValue* args); |
127 void HandleSetPageParameters(const base::ListValue* args); | 127 void HandleSetPageParameters(const base::ListValue* args); |
128 | 128 |
129 virtual void SetDialogDelegate(CloudPrintHtmlDialogDelegate *delegate); | 129 virtual void SetDialogDelegate(CloudPrintWebDialogDelegate *delegate); |
130 void StoreDialogClientSize() const; | 130 void StoreDialogClientSize() const; |
131 | 131 |
132 private: | 132 private: |
133 virtual scoped_refptr<CloudPrintDataSender> CreateCloudPrintDataSender(); | 133 virtual scoped_refptr<CloudPrintDataSender> CreateCloudPrintDataSender(); |
134 | 134 |
135 // Call to get the debugger loaded on our hosted dialog page | 135 // Call to get the debugger loaded on our hosted dialog page |
136 // specifically. Since we're not in an official browser tab, only | 136 // specifically. Since we're not in an official browser tab, only |
137 // way to get the debugger going. | 137 // way to get the debugger going. |
138 void ShowDebugger(); | 138 void ShowDebugger(); |
139 | 139 |
140 void CancelAnyRunningTask(); | 140 void CancelAnyRunningTask(); |
141 | 141 |
142 CloudPrintHtmlDialogDelegate* dialog_delegate_; | 142 CloudPrintWebDialogDelegate* dialog_delegate_; |
143 content::NotificationRegistrar registrar_; | 143 content::NotificationRegistrar registrar_; |
144 FilePath path_to_file_; | 144 FilePath path_to_file_; |
145 string16 print_job_title_; | 145 string16 print_job_title_; |
146 string16 print_ticket_; | 146 string16 print_ticket_; |
147 std::string file_type_; | 147 std::string file_type_; |
148 scoped_refptr<CloudPrintDataSender> print_data_sender_; | 148 scoped_refptr<CloudPrintDataSender> print_data_sender_; |
149 scoped_ptr<CloudPrintDataSenderHelper> print_data_helper_; | 149 scoped_ptr<CloudPrintDataSenderHelper> print_data_helper_; |
150 bool close_after_signin_; | 150 bool close_after_signin_; |
151 base::Closure callback_; | 151 base::Closure callback_; |
152 | 152 |
153 DISALLOW_COPY_AND_ASSIGN(CloudPrintFlowHandler); | 153 DISALLOW_COPY_AND_ASSIGN(CloudPrintFlowHandler); |
154 }; | 154 }; |
155 | 155 |
156 // State machine used to run the printing dialog. This class is used | 156 // State machine used to run the printing dialog. This class is used |
157 // to open and run the html dialog and deletes itself when the dialog | 157 // to open and run the web dialog and deletes itself when the dialog |
158 // is closed. | 158 // is closed. |
159 class CloudPrintHtmlDialogDelegate : public HtmlDialogUIDelegate { | 159 class CloudPrintWebDialogDelegate : public WebDialogDelegate { |
160 public: | 160 public: |
161 CloudPrintHtmlDialogDelegate(const FilePath& path_to_file, | 161 CloudPrintWebDialogDelegate(const FilePath& path_to_file, |
162 int width, int height, | 162 int width, int height, |
163 const std::string& json_arguments, | 163 const std::string& json_arguments, |
164 const string16& print_job_title, | 164 const string16& print_job_title, |
165 const string16& print_ticket, | 165 const string16& print_ticket, |
166 const std::string& file_type, | 166 const std::string& file_type, |
167 bool modal, | 167 bool modal, |
168 bool delete_on_close, | 168 bool delete_on_close, |
169 bool close_after_signin, | 169 bool close_after_signin, |
170 const base::Closure& callback); | 170 const base::Closure& callback); |
171 virtual ~CloudPrintHtmlDialogDelegate(); | 171 virtual ~CloudPrintWebDialogDelegate(); |
172 | 172 |
173 // HTMLDialogUIDelegate implementation: | 173 // WebDialogDelegate implementation: |
174 virtual ui::ModalType GetDialogModalType() const OVERRIDE; | 174 virtual ui::ModalType GetDialogModalType() const OVERRIDE; |
175 virtual string16 GetDialogTitle() const OVERRIDE; | 175 virtual string16 GetDialogTitle() const OVERRIDE; |
176 virtual GURL GetDialogContentURL() const OVERRIDE; | 176 virtual GURL GetDialogContentURL() const OVERRIDE; |
177 virtual void GetWebUIMessageHandlers( | 177 virtual void GetWebUIMessageHandlers( |
178 std::vector<content::WebUIMessageHandler*>* handlers) const OVERRIDE; | 178 std::vector<content::WebUIMessageHandler*>* handlers) const OVERRIDE; |
179 virtual void GetDialogSize(gfx::Size* size) const OVERRIDE; | 179 virtual void GetDialogSize(gfx::Size* size) const OVERRIDE; |
180 virtual std::string GetDialogArgs() const OVERRIDE; | 180 virtual std::string GetDialogArgs() const OVERRIDE; |
181 virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE; | 181 virtual void OnDialogClosed(const std::string& json_retval) OVERRIDE; |
182 virtual void OnCloseContents(content::WebContents* source, | 182 virtual void OnCloseContents(content::WebContents* source, |
183 bool* out_close_dialog) OVERRIDE; | 183 bool* out_close_dialog) OVERRIDE; |
184 virtual bool ShouldShowDialogTitle() const OVERRIDE; | 184 virtual bool ShouldShowDialogTitle() const OVERRIDE; |
185 virtual bool HandleContextMenu( | 185 virtual bool HandleContextMenu( |
186 const content::ContextMenuParams& params) OVERRIDE; | 186 const content::ContextMenuParams& params) OVERRIDE; |
187 | 187 |
188 private: | 188 private: |
189 friend class ::CloudPrintHtmlDialogDelegateTest; | 189 friend class ::CloudPrintWebDialogDelegateTest; |
190 | 190 |
191 // For unit testing. | 191 // For unit testing. |
192 CloudPrintHtmlDialogDelegate(CloudPrintFlowHandler* flow_handler, | 192 CloudPrintWebDialogDelegate(CloudPrintFlowHandler* flow_handler, |
193 int width, int height, | 193 int width, int height, |
194 const std::string& json_arguments, | 194 const std::string& json_arguments, |
195 bool modal, | 195 bool modal, |
196 bool delete_on_close); | 196 bool delete_on_close); |
197 void Init(int width, int height, const std::string& json_arguments); | 197 void Init(int width, int height, const std::string& json_arguments); |
198 | 198 |
199 bool delete_on_close_; | 199 bool delete_on_close_; |
200 CloudPrintFlowHandler* flow_handler_; | 200 CloudPrintFlowHandler* flow_handler_; |
201 bool modal_; | 201 bool modal_; |
202 mutable bool owns_flow_handler_; | 202 mutable bool owns_flow_handler_; |
203 FilePath path_to_file_; | 203 FilePath path_to_file_; |
204 | 204 |
205 // The parameters needed to display a modal HTML dialog. | 205 // The parameters needed to display a modal web dialog. |
206 HtmlDialogUI::HtmlDialogParams params_; | 206 WebDialogUI::WebDialogParams params_; |
207 | 207 |
208 DISALLOW_COPY_AND_ASSIGN(CloudPrintHtmlDialogDelegate); | 208 DISALLOW_COPY_AND_ASSIGN(CloudPrintWebDialogDelegate); |
209 }; | 209 }; |
210 | 210 |
211 void CreateDialogFullImpl(const FilePath& path_to_file, | 211 void CreateDialogFullImpl(const FilePath& path_to_file, |
212 const string16& print_job_title, | 212 const string16& print_job_title, |
213 const string16& print_ticket, | 213 const string16& print_ticket, |
214 const std::string& file_type, | 214 const std::string& file_type, |
215 bool modal, | 215 bool modal, |
216 bool delete_on_close); | 216 bool delete_on_close); |
217 void CreateDialogSigninImpl(const base::Closure& callback); | 217 void CreateDialogSigninImpl(const base::Closure& callback); |
218 | 218 |
219 void Delete(const FilePath& path_to_file); | 219 void Delete(const FilePath& path_to_file); |
220 | 220 |
221 } // namespace internal_cloud_print_helpers | 221 } // namespace internal_cloud_print_helpers |
222 | 222 |
223 #endif // CHROME_BROWSER_PRINTING_PRINT_DIALOG_CLOUD_INTERNAL_H_ | 223 #endif // CHROME_BROWSER_PRINTING_PRINT_DIALOG_CLOUD_INTERNAL_H_ |
OLD | NEW |