15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/printing/print_preview_message_handler.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <vector> 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/bind.h" 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted_memory.h" 127dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch#include "base/memory/shared_memory.h" 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/browser_process.h" 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/printing/print_job_manager.h" 152a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "chrome/browser/printing/print_preview_dialog_controller.h" 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/printing/print_view_manager.h" 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/printing/printer_query.h" 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/browser/ui/webui/print_preview/print_preview_ui.h" 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "chrome/common/print_messages.h" 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/browser_thread.h" 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/render_view_host.h" 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_contents.h" 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "content/public/browser/web_ui.h" 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "printing/page_size_margins.h" 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "printing/print_job_constants.h" 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::BrowserThread; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)using content::WebContents; 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)DEFINE_WEB_CONTENTS_USER_DATA_KEY(printing::PrintPreviewMessageHandler); 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace { 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void StopWorker(int document_cookie) { 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (document_cookie <= 0) 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 37d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_refptr<printing::PrintQueriesQueue> queue = 38d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) g_browser_process->print_job_manager()->queue(); 39d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) scoped_refptr<printing::PrinterQuery> printer_query = 40d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) queue->PopPrinterQuery(document_cookie); 411320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci if (printer_query.get()) { 42d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) BrowserThread::PostTask(BrowserThread::IO, FROM_HERE, 43d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) base::Bind(&printing::PrinterQuery::StopWorker, 44d0247b1b59f9c528cb6df88b4f2b9afaf80d181eTorne (Richard Coles) printer_query)); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)base::RefCountedBytes* GetDataFromHandle(base::SharedMemoryHandle handle, 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) uint32 data_size) { 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_ptr<base::SharedMemory> shared_buf( 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) new base::SharedMemory(handle, true)); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!shared_buf->Map(data_size)) { 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 572a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) unsigned char* data_begin = static_cast<unsigned char*>(shared_buf->memory()); 582a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) std::vector<unsigned char> data(data_begin, data_begin + data_size); 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return base::RefCountedBytes::TakeVector(&data); 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace 635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace printing { 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PrintPreviewMessageHandler::PrintPreviewMessageHandler( 675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) WebContents* web_contents) 685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) : content::WebContentsObserver(web_contents) { 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(web_contents); 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PrintPreviewMessageHandler::~PrintPreviewMessageHandler() { 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 752a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)WebContents* PrintPreviewMessageHandler::GetPrintPreviewDialog() { 762a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrintPreviewDialogController* dialog_controller = 772a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrintPreviewDialogController::GetInstance(); 782a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!dialog_controller) 795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return dialog_controller->GetPrintPreviewForContents(web_contents()); 815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)PrintPreviewUI* PrintPreviewMessageHandler::GetPrintPreviewUI() { 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WebContents* dialog = GetPrintPreviewDialog(); 852a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!dialog || !dialog->GetWebUI()) 865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return NULL; 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return static_cast<PrintPreviewUI*>(dialog->GetWebUI()->GetController()); 885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintPreviewMessageHandler::OnRequestPrintPreview( 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) const PrintHostMsg_RequestPrintPreview_Params& params) { 922a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (params.webnode_only) { 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printing::PrintViewManager::FromWebContents(web_contents())-> 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewForWebNode(); 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 962a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrintPreviewDialogController::PrintPreview(web_contents()); 972a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) PrintPreviewUI::SetInitialParams(GetPrintPreviewDialog(), params); 985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintPreviewMessageHandler::OnDidGetPreviewPageCount( 1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PrintHostMsg_DidGetPreviewPageCount_Params& params) { 1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (params.page_count <= 0) { 1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!print_preview_ui) 1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!params.is_modifiable || params.clear_preview_data) 1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview_ui->ClearAllPreviewData(); 1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview_ui->OnDidGetPreviewPageCount(params); 1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintPreviewMessageHandler::OnDidPreviewPage( 1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PrintHostMsg_DidPreviewPage_Params& params) { 1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) int page_number = params.page_number; 1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (page_number < FIRST_PAGE_INDEX || !params.data_size) 1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); 1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!print_preview_ui) 1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::RefCountedBytes* data_bytes = 1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDataFromHandle(params.metafile_data_handle, params.data_size); 1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DCHECK(data_bytes); 1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview_ui->SetPrintPreviewDataForIndex(page_number, data_bytes); 1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview_ui->OnDidPreviewPage(page_number, params.preview_request_id); 1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintPreviewMessageHandler::OnMetafileReadyForPrinting( 1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PrintHostMsg_DidPreviewDocument_Params& params) { 1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Always try to stop the worker. 1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StopWorker(params.document_cookie); 1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (params.expected_pages_count <= 0) { 1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) NOTREACHED(); 1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) } 1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); 1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!print_preview_ui) 1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(joth): This seems like a good match for using RefCountedStaticMemory 1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // to avoid the memory copy, but the SetPrintPreviewData call chain below 1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // needs updating to accept the RefCountedMemory* base class. 1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) base::RefCountedBytes* data_bytes = 1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) GetDataFromHandle(params.metafile_data_handle, params.data_size); 1542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) if (!data_bytes || !data_bytes->size()) 1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview_ui->SetPrintPreviewDataForIndex(COMPLETE_PREVIEW_DOCUMENT_INDEX, 1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) data_bytes); 1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview_ui->OnPreviewDataIsAvailable( 1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) params.expected_pages_count, params.preview_request_id); 1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintPreviewMessageHandler::OnPrintPreviewFailed(int document_cookie) { 1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StopWorker(document_cookie); 1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); 1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!print_preview_ui) 1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview_ui->OnPrintPreviewFailed(); 1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintPreviewMessageHandler::OnDidGetDefaultPageLayout( 1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const PageSizeMargins& page_layout_in_points, 1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const gfx::Rect& printable_area_in_points, 1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool has_custom_page_size_style) { 1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); 1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!print_preview_ui) 1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview_ui->OnDidGetDefaultPageLayout(page_layout_in_points, 1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) printable_area_in_points, 1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) has_custom_page_size_style); 1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintPreviewMessageHandler::OnPrintPreviewCancelled(int document_cookie) { 1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Always need to stop the worker. 1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StopWorker(document_cookie); 1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void PrintPreviewMessageHandler::OnInvalidPrinterSettings(int document_cookie) { 1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) StopWorker(document_cookie); 1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); 1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!print_preview_ui) 1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) print_preview_ui->OnInvalidPrinterSettings(); 1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 1975f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)void PrintPreviewMessageHandler::OnSetOptionsFromDocument( 1985f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) const PrintHostMsg_SetOptionsFromDocument_Params& params) { 1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) PrintPreviewUI* print_preview_ui = GetPrintPreviewUI(); 2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) if (!print_preview_ui) 2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return; 2025f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) print_preview_ui->OnSetOptionsFromDocument(params); 2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)bool PrintPreviewMessageHandler::OnMessageReceived( 2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const IPC::Message& message) { 2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) bool handled = true; 2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_BEGIN_MESSAGE_MAP(PrintPreviewMessageHandler, message) 2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(PrintHostMsg_RequestPrintPreview, 2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnRequestPrintPreview) 2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(PrintHostMsg_DidGetPreviewPageCount, 2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDidGetPreviewPageCount) 2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(PrintHostMsg_DidPreviewPage, 2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDidPreviewPage) 2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(PrintHostMsg_MetafileReadyForPrinting, 2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnMetafileReadyForPrinting) 2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewFailed, 2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnPrintPreviewFailed) 2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(PrintHostMsg_DidGetDefaultPageLayout, 2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnDidGetDefaultPageLayout) 2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewCancelled, 2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnPrintPreviewCancelled) 2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_HANDLER(PrintHostMsg_PrintPreviewInvalidPrinterSettings, 2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) OnInvalidPrinterSettings) 2255f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) IPC_MESSAGE_HANDLER(PrintHostMsg_SetOptionsFromDocument, 2265f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) OnSetOptionsFromDocument) 2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_MESSAGE_UNHANDLED(handled = false) 2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) IPC_END_MESSAGE_MAP() 2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) return handled; 2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace printing 233