| 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/printing/print_preview_message_handler.h" | 5 #include "chrome/browser/printing/print_preview_message_handler.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/memory/ref_counted.h" | 10 #include "base/memory/ref_counted.h" |
| 11 #include "base/memory/ref_counted_memory.h" | 11 #include "base/memory/ref_counted_memory.h" |
| 12 #include "base/shared_memory.h" | 12 #include "base/shared_memory.h" |
| 13 #include "chrome/browser/browser_process.h" | 13 #include "chrome/browser/browser_process.h" |
| 14 #include "chrome/browser/printing/print_job_manager.h" | 14 #include "chrome/browser/printing/print_job_manager.h" |
| 15 #include "chrome/browser/printing/print_preview_tab_controller.h" | 15 #include "chrome/browser/printing/print_preview_tab_controller.h" |
| 16 #include "chrome/browser/printing/print_view_manager.h" | 16 #include "chrome/browser/printing/print_view_manager.h" |
| 17 #include "chrome/browser/printing/printer_query.h" | 17 #include "chrome/browser/printing/printer_query.h" |
| 18 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" | 18 #include "chrome/browser/ui/tab_contents/tab_contents_wrapper.h" |
| 19 #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" | 19 #include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" |
| 20 #include "chrome/common/print_messages.h" | 20 #include "chrome/common/print_messages.h" |
| 21 #include "content/public/browser/browser_thread.h" | 21 #include "content/public/browser/browser_thread.h" |
| 22 #include "content/public/browser/render_view_host.h" | 22 #include "content/public/browser/render_view_host.h" |
| 23 #include "content/public/browser/web_contents.h" | 23 #include "content/public/browser/web_contents.h" |
| 24 #include "content/public/browser/web_ui.h" | 24 #include "content/public/browser/web_ui.h" |
| 25 #include "printing/page_size_margins.h" | 25 #include "printing/page_size_margins.h" |
| 26 #include "printing/print_job_constants.h" | 26 #include "printing/print_job_constants.h" |
| 27 #include "ui/gfx/rect.h" |
| 27 | 28 |
| 28 using content::BrowserThread; | 29 using content::BrowserThread; |
| 29 using content::NavigationController; | 30 using content::NavigationController; |
| 30 using content::WebContents; | 31 using content::WebContents; |
| 31 | 32 |
| 32 namespace { | 33 namespace { |
| 33 | 34 |
| 34 void StopWorker(int document_cookie) { | 35 void StopWorker(int document_cookie) { |
| 35 if (document_cookie <= 0) | 36 if (document_cookie <= 0) |
| 36 return; | 37 return; |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 207 } | 208 } |
| 208 | 209 |
| 209 void PrintPreviewMessageHandler::OnInvalidPrinterSettings(int document_cookie) { | 210 void PrintPreviewMessageHandler::OnInvalidPrinterSettings(int document_cookie) { |
| 210 StopWorker(document_cookie); | 211 StopWorker(document_cookie); |
| 211 PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); | 212 PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); |
| 212 if (!print_preview_ui) | 213 if (!print_preview_ui) |
| 213 return; | 214 return; |
| 214 print_preview_ui->OnInvalidPrinterSettings(); | 215 print_preview_ui->OnInvalidPrinterSettings(); |
| 215 } | 216 } |
| 216 | 217 |
| 218 void PrintPreviewMessageHandler::OnPrintPreviewScalingDisabled() { |
| 219 TabContentsWrapper* print_preview_tab = GetPrintPreviewTab(); |
| 220 if (!print_preview_tab || !print_preview_tab->web_contents()->GetWebUI()) |
| 221 return; |
| 222 |
| 223 PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>( |
| 224 print_preview_tab->web_contents()->GetWebUI()->GetController()); |
| 225 print_preview_ui->OnPrintPreviewScalingDisabled(); |
| 226 } |
| 227 |
| 217 bool PrintPreviewMessageHandler::OnMessageReceived( | 228 bool PrintPreviewMessageHandler::OnMessageReceived( |
| 218 const IPC::Message& message) { | 229 const IPC::Message& message) { |
| 219 bool handled = true; | 230 bool handled = true; |
| 220 IPC_BEGIN_MESSAGE_MAP(PrintPreviewMessageHandler, message) | 231 IPC_BEGIN_MESSAGE_MAP(PrintPreviewMessageHandler, message) |
| 221 IPC_MESSAGE_HANDLER(PrintHostMsg_RequestPrintPreview, | 232 IPC_MESSAGE_HANDLER(PrintHostMsg_RequestPrintPreview, |
| 222 OnRequestPrintPreview) | 233 OnRequestPrintPreview) |
| 223 IPC_MESSAGE_HANDLER(PrintHostMsg_DidGetPreviewPageCount, | 234 IPC_MESSAGE_HANDLER(PrintHostMsg_DidGetPreviewPageCount, |
| 224 OnDidGetPreviewPageCount) | 235 OnDidGetPreviewPageCount) |
| 225 IPC_MESSAGE_HANDLER(PrintHostMsg_DidPreviewPage, | 236 IPC_MESSAGE_HANDLER(PrintHostMsg_DidPreviewPage, |
| 226 OnDidPreviewPage) | 237 OnDidPreviewPage) |
| 227 IPC_MESSAGE_HANDLER(PrintHostMsg_MetafileReadyForPrinting, | 238 IPC_MESSAGE_HANDLER(PrintHostMsg_MetafileReadyForPrinting, |
| 228 OnMetafileReadyForPrinting) | 239 OnMetafileReadyForPrinting) |
| 229 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewFailed, | 240 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewFailed, |
| 230 OnPrintPreviewFailed) | 241 OnPrintPreviewFailed) |
| 231 IPC_MESSAGE_HANDLER(PrintHostMsg_DidGetDefaultPageLayout, | 242 IPC_MESSAGE_HANDLER(PrintHostMsg_DidGetDefaultPageLayout, |
| 232 OnDidGetDefaultPageLayout) | 243 OnDidGetDefaultPageLayout) |
| 233 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewCancelled, | 244 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewCancelled, |
| 234 OnPrintPreviewCancelled) | 245 OnPrintPreviewCancelled) |
| 235 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewInvalidPrinterSettings, | 246 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewInvalidPrinterSettings, |
| 236 OnInvalidPrinterSettings) | 247 OnInvalidPrinterSettings) |
| 248 IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewScalingDisabled, |
| 249 OnPrintPreviewScalingDisabled) |
| 237 IPC_MESSAGE_UNHANDLED(handled = false) | 250 IPC_MESSAGE_UNHANDLED(handled = false) |
| 238 IPC_END_MESSAGE_MAP() | 251 IPC_END_MESSAGE_MAP() |
| 239 return handled; | 252 return handled; |
| 240 } | 253 } |
| 241 | 254 |
| 242 void PrintPreviewMessageHandler::NavigateToPendingEntry( | 255 void PrintPreviewMessageHandler::NavigateToPendingEntry( |
| 243 const GURL& url, | 256 const GURL& url, |
| 244 NavigationController::ReloadType reload_type) { | 257 NavigationController::ReloadType reload_type) { |
| 245 TabContentsWrapper* tab = tab_contents_wrapper(); | 258 TabContentsWrapper* tab = tab_contents_wrapper(); |
| 246 TabContentsWrapper* preview_tab = GetPrintPreviewTab(); | 259 TabContentsWrapper* preview_tab = GetPrintPreviewTab(); |
| 247 if (tab == preview_tab) { | 260 if (tab == preview_tab) { |
| 248 // Cloud print sign-in reloads the page. | 261 // Cloud print sign-in reloads the page. |
| 249 DCHECK(PrintPreviewTabController::IsPrintPreviewURL(url)); | 262 DCHECK(PrintPreviewTabController::IsPrintPreviewURL(url)); |
| 250 DCHECK_EQ(NavigationController::RELOAD, reload_type); | 263 DCHECK_EQ(NavigationController::RELOAD, reload_type); |
| 251 return; | 264 return; |
| 252 } | 265 } |
| 253 // If |tab| is navigating and it has a print preview tab, notify |tab| to | 266 // If |tab| is navigating and it has a print preview tab, notify |tab| to |
| 254 // consider print preview done so it unfreezes the renderer in the case of | 267 // consider print preview done so it unfreezes the renderer in the case of |
| 255 // window.print(). | 268 // window.print(). |
| 256 if (preview_tab) | 269 if (preview_tab) |
| 257 tab->print_view_manager()->PrintPreviewDone(); | 270 tab->print_view_manager()->PrintPreviewDone(); |
| 258 } | 271 } |
| 259 | 272 |
| 260 } // namespace printing | 273 } // namespace printing |
| OLD | NEW |