| Index: chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| diff --git a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| index 6e56b2856455d13442d48aa99b2e478cd8b299ce..42d9ac2cf6e0d2786e1b9a65a70c2d4e60c4f0b5 100644
|
| --- a/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| +++ b/chrome/browser/ui/webui/print_preview/print_preview_handler.cc
|
| @@ -440,10 +440,7 @@ void PrintPreviewHandler::HandlePrint(const ListValue* args) {
|
| }
|
|
|
| if (is_cloud_printer) {
|
| - std::string print_ticket;
|
| - bool res = args->GetString(1, &print_ticket);
|
| - DCHECK(res);
|
| - SendCloudPrintJob(*settings, print_ticket);
|
| + SendCloudPrintJob();
|
| } else if (print_to_pdf) {
|
| HandlePrintToPdf(*settings);
|
| } else if (is_cloud_dialog) {
|
| @@ -795,8 +792,7 @@ void PrintPreviewHandler::SendCloudPrintEnabled() {
|
| }
|
| }
|
|
|
| -void PrintPreviewHandler::SendCloudPrintJob(const DictionaryValue& settings,
|
| - std::string print_ticket) {
|
| +void PrintPreviewHandler::SendCloudPrintJob() {
|
| ReportUserActionHistogram(PRINT_WITH_CLOUD_PRINT);
|
| scoped_refptr<base::RefCountedBytes> data;
|
| PrintPreviewUI* print_preview_ui = static_cast<PrintPreviewUI*>(
|
| @@ -804,13 +800,6 @@ void PrintPreviewHandler::SendCloudPrintJob(const DictionaryValue& settings,
|
| print_preview_ui->GetPrintPreviewDataForIndex(
|
| printing::COMPLETE_PREVIEW_DOCUMENT_INDEX, &data);
|
| if (data.get() && data->size() > 0U && data->front()) {
|
| - printing::PrintViewManager* print_view_manager =
|
| - printing::PrintViewManager::FromWebContents(
|
| - preview_tab_contents()->web_contents());
|
| - string16 print_job_title_utf16 = print_view_manager->RenderSourceName();
|
| - std::string print_job_title = UTF16ToUTF8(print_job_title_utf16);
|
| - std::string printer_id;
|
| - settings.GetString(printing::kSettingCloudPrintId, &printer_id);
|
| // BASE64 encode the job data.
|
| std::string raw_data(reinterpret_cast<const char*>(data->front()),
|
| data->size());
|
| @@ -818,38 +807,7 @@ void PrintPreviewHandler::SendCloudPrintJob(const DictionaryValue& settings,
|
| if (!base::Base64Encode(raw_data, &base64_data)) {
|
| NOTREACHED() << "Base64 encoding PDF data.";
|
| }
|
| -
|
| - const char boundary[] = "----CloudPrintFormBoundaryjc9wuprokl8i";
|
| - const char prolog[] = "--%s\r\n"
|
| - "Content-Disposition: form-data; name=\"capabilities\"\r\n\r\n%s\r\n"
|
| - "--%s\r\n"
|
| - "Content-Disposition: form-data; name=\"contentType\"\r\n\r\ndataUrl\r\n"
|
| - "--%s\r\n"
|
| - "Content-Disposition: form-data; name=\"title\"\r\n\r\n%s\r\n"
|
| - "--%s\r\n"
|
| - "Content-Disposition: form-data; name=\"printerid\"\r\n\r\n%s\r\n"
|
| - "--%s\r\n"
|
| - "Content-Disposition: form-data; name=\"content\"\r\n\r\n"
|
| - "data:application/pdf;base64,%s\r\n"
|
| - "--%s\r\n";
|
| -
|
| - // TODO(abodenha@chromium.org) This implies a large copy operation.
|
| - // Profile this and optimize if necessary.
|
| - std::string final_data;
|
| - base::SStringPrintf(&final_data,
|
| - prolog,
|
| - boundary,
|
| - print_ticket.c_str(),
|
| - boundary,
|
| - boundary,
|
| - print_job_title.c_str(),
|
| - boundary,
|
| - printer_id.c_str(),
|
| - boundary,
|
| - base64_data.c_str(),
|
| - boundary);
|
| -
|
| - StringValue data_value(final_data);
|
| + StringValue data_value(base64_data);
|
|
|
| web_ui()->CallJavascriptFunction("printToCloud", data_value);
|
| } else {
|
|
|