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 #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" | 5 #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/lazy_instance.h" | 9 #include "base/lazy_instance.h" |
10 #include "base/memory/ref_counted_memory.h" | 10 #include "base/memory/ref_counted_memory.h" |
11 #include "base/metrics/histogram.h" | 11 #include "base/metrics/histogram.h" |
12 #include "base/string_util.h" | 12 #include "base/string_util.h" |
13 #include "base/synchronization/lock.h" | 13 #include "base/synchronization/lock.h" |
14 #include "base/values.h" | 14 #include "base/values.h" |
15 #include "chrome/browser/browser_process.h" | 15 #include "chrome/browser/browser_process.h" |
16 #include "chrome/browser/printing/background_printing_manager.h" | 16 #include "chrome/browser/printing/background_printing_manager.h" |
17 #include "chrome/browser/printing/print_preview_data_service.h" | 17 #include "chrome/browser/printing/print_preview_data_service.h" |
18 #include "chrome/browser/printing/print_preview_tab_controller.h" | 18 #include "chrome/browser/printing/print_preview_tab_controller.h" |
19 #include "chrome/browser/profiles/profile.h" | 19 #include "chrome/browser/profiles/profile.h" |
20 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 20 #include "chrome/browser/ui/tab_contents/tab_contents.h" |
21 #include "chrome/browser/ui/webui/chrome_url_data_manager.h" | 21 #include "chrome/browser/ui/webui/chrome_url_data_manager.h" |
22 #include "chrome/browser/ui/webui/print_preview/print_preview_data_source.h" | 22 #include "chrome/browser/ui/webui/print_preview/print_preview_data_source.h" |
23 #include "chrome/browser/ui/webui/print_preview/print_preview_handler.h" | 23 #include "chrome/browser/ui/webui/print_preview/print_preview_handler.h" |
24 #include "chrome/common/print_messages.h" | 24 #include "chrome/common/print_messages.h" |
25 #include "content/public/browser/web_contents.h" | 25 #include "content/public/browser/web_contents.h" |
26 #include "printing/page_size_margins.h" | 26 #include "printing/page_size_margins.h" |
27 #include "printing/print_job_constants.h" | 27 #include "printing/print_job_constants.h" |
28 #include "ui/gfx/rect.h" | 28 #include "ui/gfx/rect.h" |
29 #include "ui/web_dialogs/web_dialog_delegate.h" | 29 #include "ui/web_dialogs/web_dialog_delegate.h" |
30 #include "ui/web_dialogs/web_dialog_ui.h" | 30 #include "ui/web_dialogs/web_dialog_ui.h" |
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
123 } | 123 } |
124 | 124 |
125 void PrintPreviewUI::SetInitiatorTabURLAndTitle( | 125 void PrintPreviewUI::SetInitiatorTabURLAndTitle( |
126 const std::string& initiator_url, | 126 const std::string& initiator_url, |
127 const string16& job_title) { | 127 const string16& job_title) { |
128 initiator_url_ = initiator_url; | 128 initiator_url_ = initiator_url; |
129 initiator_tab_title_ = job_title; | 129 initiator_tab_title_ = job_title; |
130 } | 130 } |
131 | 131 |
132 // static | 132 // static |
133 void PrintPreviewUI::SetSourceIsModifiable( | 133 void PrintPreviewUI::SetSourceIsModifiable(TabContents* print_preview_tab, |
134 TabContentsWrapper* print_preview_tab, | 134 bool source_is_modifiable) { |
135 bool source_is_modifiable) { | |
136 if (!print_preview_tab || !print_preview_tab->web_contents()->GetWebUI()) | 135 if (!print_preview_tab || !print_preview_tab->web_contents()->GetWebUI()) |
137 return; | 136 return; |
138 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( | 137 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
139 print_preview_tab->web_contents()->GetWebUI()->GetController()); | 138 print_preview_tab->web_contents()->GetWebUI()->GetController()); |
140 print_preview_ui->source_is_modifiable_ = source_is_modifiable; | 139 print_preview_ui->source_is_modifiable_ = source_is_modifiable; |
141 } | 140 } |
142 | 141 |
143 // static | 142 // static |
144 void PrintPreviewUI::GetCurrentPrintPreviewStatus( | 143 void PrintPreviewUI::GetCurrentPrintPreviewStatus( |
145 const std::string& preview_ui_addr, | 144 const std::string& preview_ui_addr, |
146 int request_id, | 145 int request_id, |
147 bool* cancel) { | 146 bool* cancel) { |
148 int current_id = -1; | 147 int current_id = -1; |
149 if (!g_print_preview_request_id_map.Get().Get(preview_ui_addr, ¤t_id)) { | 148 if (!g_print_preview_request_id_map.Get().Get(preview_ui_addr, ¤t_id)) { |
150 *cancel = true; | 149 *cancel = true; |
151 return; | 150 return; |
152 } | 151 } |
153 *cancel = (request_id != current_id); | 152 *cancel = (request_id != current_id); |
154 } | 153 } |
155 | 154 |
156 std::string PrintPreviewUI::GetPrintPreviewUIAddress() const { | 155 std::string PrintPreviewUI::GetPrintPreviewUIAddress() const { |
157 // Store the PrintPreviewUIAddress as a string. | 156 // Store the PrintPreviewUIAddress as a string. |
158 // "0x" + deadc0de + '\0' = 2 + 2 * sizeof(this) + 1; | 157 // "0x" + deadc0de + '\0' = 2 + 2 * sizeof(this) + 1; |
159 char preview_ui_addr[2 + (2 * sizeof(this)) + 1]; | 158 char preview_ui_addr[2 + (2 * sizeof(this)) + 1]; |
160 base::snprintf(preview_ui_addr, sizeof(preview_ui_addr), "%p", this); | 159 base::snprintf(preview_ui_addr, sizeof(preview_ui_addr), "%p", this); |
161 return preview_ui_addr; | 160 return preview_ui_addr; |
162 } | 161 } |
163 | 162 |
164 void PrintPreviewUI::OnPrintPreviewTabClosed() { | 163 void PrintPreviewUI::OnPrintPreviewTabClosed() { |
165 TabContentsWrapper* preview_tab = | 164 TabContents* preview_tab = |
166 TabContentsWrapper::GetCurrentWrapperForContents( | 165 TabContents::GetCurrentWrapperForContents(web_ui()->GetWebContents()); |
167 web_ui()->GetWebContents()); | |
168 printing::BackgroundPrintingManager* background_printing_manager = | 166 printing::BackgroundPrintingManager* background_printing_manager = |
169 g_browser_process->background_printing_manager(); | 167 g_browser_process->background_printing_manager(); |
170 if (background_printing_manager->HasPrintPreviewTab(preview_tab)) | 168 if (background_printing_manager->HasPrintPreviewTab(preview_tab)) |
171 return; | 169 return; |
172 OnClosePrintPreviewTab(); | 170 OnClosePrintPreviewTab(); |
173 } | 171 } |
174 | 172 |
175 void PrintPreviewUI::OnInitiatorTabClosed() { | 173 void PrintPreviewUI::OnInitiatorTabClosed() { |
176 TabContentsWrapper* preview_tab = | 174 TabContents* preview_tab = |
177 TabContentsWrapper::GetCurrentWrapperForContents( | 175 TabContents::GetCurrentWrapperForContents(web_ui()->GetWebContents()); |
178 web_ui()->GetWebContents()); | |
179 printing::BackgroundPrintingManager* background_printing_manager = | 176 printing::BackgroundPrintingManager* background_printing_manager = |
180 g_browser_process->background_printing_manager(); | 177 g_browser_process->background_printing_manager(); |
181 if (background_printing_manager->HasPrintPreviewTab(preview_tab)) | 178 if (background_printing_manager->HasPrintPreviewTab(preview_tab)) |
182 web_ui()->CallJavascriptFunction("cancelPendingPrintRequest"); | 179 web_ui()->CallJavascriptFunction("cancelPendingPrintRequest"); |
183 else | 180 else |
184 OnClosePrintPreviewTab(); | 181 OnClosePrintPreviewTab(); |
185 } | 182 } |
186 | 183 |
187 void PrintPreviewUI::OnPrintPreviewRequest(int request_id) { | 184 void PrintPreviewUI::OnPrintPreviewRequest(int request_id) { |
188 g_print_preview_request_id_map.Get().Set(preview_ui_addr_str_, request_id); | 185 g_print_preview_request_id_map.Get().Set(preview_ui_addr_str_, request_id); |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
286 | 283 |
287 void PrintPreviewUI::OnInvalidPrinterSettings() { | 284 void PrintPreviewUI::OnInvalidPrinterSettings() { |
288 web_ui()->CallJavascriptFunction("invalidPrinterSettings"); | 285 web_ui()->CallJavascriptFunction("invalidPrinterSettings"); |
289 } | 286 } |
290 | 287 |
291 PrintPreviewDataService* PrintPreviewUI::print_preview_data_service() { | 288 PrintPreviewDataService* PrintPreviewUI::print_preview_data_service() { |
292 return PrintPreviewDataService::GetInstance(); | 289 return PrintPreviewDataService::GetInstance(); |
293 } | 290 } |
294 | 291 |
295 void PrintPreviewUI::OnHidePreviewTab() { | 292 void PrintPreviewUI::OnHidePreviewTab() { |
296 TabContentsWrapper* preview_tab = | 293 TabContents* preview_tab = |
297 TabContentsWrapper::GetCurrentWrapperForContents( | 294 TabContents::GetCurrentWrapperForContents(web_ui()->GetWebContents()); |
298 web_ui()->GetWebContents()); | |
299 printing::BackgroundPrintingManager* background_printing_manager = | 295 printing::BackgroundPrintingManager* background_printing_manager = |
300 g_browser_process->background_printing_manager(); | 296 g_browser_process->background_printing_manager(); |
301 if (background_printing_manager->HasPrintPreviewTab(preview_tab)) | 297 if (background_printing_manager->HasPrintPreviewTab(preview_tab)) |
302 return; | 298 return; |
303 | 299 |
304 ConstrainedWebDialogDelegate* delegate = GetConstrainedDelegate(); | 300 ConstrainedWebDialogDelegate* delegate = GetConstrainedDelegate(); |
305 if (!delegate) | 301 if (!delegate) |
306 return; | 302 return; |
307 delegate->ReleaseTabContentsOnDialogClose(); | 303 delegate->ReleaseTabContentsOnDialogClose(); |
308 background_printing_manager->OwnPrintPreviewTab(preview_tab); | 304 background_printing_manager->OwnPrintPreviewTab(preview_tab); |
(...skipping 11 matching lines...) Expand all Loading... |
320 delegate->OnDialogCloseFromWebUI(); | 316 delegate->OnDialogCloseFromWebUI(); |
321 } | 317 } |
322 | 318 |
323 void PrintPreviewUI::OnReloadPrintersList() { | 319 void PrintPreviewUI::OnReloadPrintersList() { |
324 web_ui()->CallJavascriptFunction("reloadPrintersList"); | 320 web_ui()->CallJavascriptFunction("reloadPrintersList"); |
325 } | 321 } |
326 | 322 |
327 void PrintPreviewUI::OnPrintPreviewScalingDisabled() { | 323 void PrintPreviewUI::OnPrintPreviewScalingDisabled() { |
328 web_ui()->CallJavascriptFunction("printScalingDisabledForSourcePDF"); | 324 web_ui()->CallJavascriptFunction("printScalingDisabledForSourcePDF"); |
329 } | 325 } |
OLD | NEW |