Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/renderer/print_web_view_helper.h" | 5 #include "chrome/renderer/print_web_view_helper.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 490 if (WebFrame* web_frame = web_view_->mainFrame()) | 490 if (WebFrame* web_frame = web_view_->mainFrame()) |
| 491 web_frame->setScrollOffset(prev_scroll_offset_); | 491 web_frame->setScrollOffset(prev_scroll_offset_); |
| 492 } | 492 } |
| 493 } | 493 } |
| 494 | 494 |
| 495 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) | 495 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) |
| 496 : RenderViewObserver(render_view), | 496 : RenderViewObserver(render_view), |
| 497 RenderViewObserverTracker<PrintWebViewHelper>(render_view), | 497 RenderViewObserverTracker<PrintWebViewHelper>(render_view), |
| 498 print_web_view_(NULL), | 498 print_web_view_(NULL), |
| 499 is_preview_(switches::IsPrintPreviewEnabled()), | 499 is_preview_(switches::IsPrintPreviewEnabled()), |
| 500 is_print_ready_metafile_sent_(false), | |
| 500 user_cancelled_scripted_print_count_(0), | 501 user_cancelled_scripted_print_count_(0), |
| 501 notify_browser_of_print_failure_(true) { | 502 notify_browser_of_print_failure_(true) { |
| 502 } | 503 } |
| 503 | 504 |
| 504 PrintWebViewHelper::~PrintWebViewHelper() {} | 505 PrintWebViewHelper::~PrintWebViewHelper() {} |
| 505 | 506 |
| 506 // Prints |frame| which called window.print(). | 507 // Prints |frame| which called window.print(). |
| 507 void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) { | 508 void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) { |
| 508 DCHECK(frame); | 509 DCHECK(frame); |
| 509 | 510 |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 649 preview_params.reuse_existing_data = true; | 650 preview_params.reuse_existing_data = true; |
| 650 preview_params.data_size = 0; | 651 preview_params.data_size = 0; |
| 651 preview_params.document_cookie = | 652 preview_params.document_cookie = |
| 652 print_pages_params_->params.document_cookie; | 653 print_pages_params_->params.document_cookie; |
| 653 preview_params.expected_pages_count = | 654 preview_params.expected_pages_count = |
| 654 print_preview_context_.total_page_count(); | 655 print_preview_context_.total_page_count(); |
| 655 preview_params.modifiable = print_preview_context_.IsModifiable(); | 656 preview_params.modifiable = print_preview_context_.IsModifiable(); |
| 656 preview_params.preview_request_id = | 657 preview_params.preview_request_id = |
| 657 print_pages_params_->params.preview_request_id; | 658 print_pages_params_->params.preview_request_id; |
| 658 | 659 |
| 659 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); | 660 Send(new PrintHostMsg_MetafileReadyForPrinting(routing_id(), |
| 661 preview_params)); | |
| 660 return; | 662 return; |
| 661 } | 663 } |
| 662 // Always clear |old_print_pages_params_| before rendering the pages. | 664 // Always clear |old_print_pages_params_| before rendering the pages. |
| 663 old_print_pages_params_.reset(); | 665 old_print_pages_params_.reset(); |
| 666 is_print_ready_metafile_sent_ = false; | |
| 664 | 667 |
| 665 // PDF printer device supports alpha blending. | 668 // PDF printer device supports alpha blending. |
| 666 print_pages_params_->params.supports_alpha_blend = true; | 669 print_pages_params_->params.supports_alpha_blend = true; |
| 670 | |
| 671 bool generate_draft_pages = false; | |
| 672 if (!settings.GetBoolean(printing::kSettingGenerateDraftData, | |
| 673 &generate_draft_pages)) { | |
| 674 NOTREACHED(); | |
| 675 } | |
| 676 print_preview_context_.set_generate_draft_pages(generate_draft_pages); | |
| 677 | |
| 667 if (CreatePreviewDocument()) { | 678 if (CreatePreviewDocument()) { |
| 668 DidFinishPrinting(OK); | 679 DidFinishPrinting(OK); |
| 669 } else { | 680 } else { |
| 670 if (notify_browser_of_print_failure_) | 681 if (notify_browser_of_print_failure_) |
| 671 LOG(ERROR) << "CreatePreviewDocument failed"; | 682 LOG(ERROR) << "CreatePreviewDocument failed"; |
| 672 DidFinishPrinting(FAIL_PREVIEW); | 683 DidFinishPrinting(FAIL_PREVIEW); |
| 673 } | 684 } |
| 674 } | 685 } |
| 675 | 686 |
| 676 bool PrintWebViewHelper::CreatePreviewDocument() { | 687 bool PrintWebViewHelper::CreatePreviewDocument() { |
| 677 PrintMsg_Print_Params print_params = print_pages_params_->params; | 688 PrintMsg_Print_Params print_params = print_pages_params_->params; |
| 678 const std::vector<int>& pages = print_pages_params_->pages; | 689 const std::vector<int>& pages = print_pages_params_->pages; |
| 679 if (!print_preview_context_.CreatePreviewDocument(&print_params, pages)) | 690 if (!print_preview_context_.CreatePreviewDocument(&print_params, pages)) |
| 680 return false; | 691 return false; |
| 681 PrintHostMsg_DidGetPreviewPageCount_Params params; | 692 PrintHostMsg_DidGetPreviewPageCount_Params params; |
| 682 params.page_count = print_preview_context_.total_page_count(); | 693 params.page_count = print_preview_context_.total_page_count(); |
| 683 params.is_modifiable = print_preview_context_.IsModifiable(); | 694 params.is_modifiable = print_preview_context_.IsModifiable(); |
| 684 params.document_cookie = print_pages_params_->params.document_cookie; | 695 params.document_cookie = print_pages_params_->params.document_cookie; |
| 685 params.preview_request_id = print_pages_params_->params.preview_request_id; | 696 params.preview_request_id = print_pages_params_->params.preview_request_id; |
| 697 params.clear_preview_data = print_preview_context_.generate_draft_pages(); | |
| 686 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), params)); | 698 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), params)); |
| 687 if (CheckForCancel()) | 699 if (CheckForCancel()) |
| 688 return false; | 700 return false; |
| 689 | 701 |
| 690 int page_number; | 702 int page_number; |
| 691 while ((page_number = print_preview_context_.GetNextPageNumber()) >= 0) { | 703 while ((page_number = print_preview_context_.GetNextPageNumber()) >= 0) { |
| 692 if (!RenderPreviewPage(page_number)) | 704 if (!RenderPreviewPage(page_number)) |
| 693 return false; | 705 return false; |
| 694 if (CheckForCancel()) | 706 if (CheckForCancel()) |
| 695 return false; | 707 return false; |
| 696 }; | 708 if (print_preview_context_.IsLastPageOfPrintReadyMetafile()) { |
| 697 | 709 // Finished generating preview. Finalize the document. |
| 698 // Finished generating preview. Finalize the document. | 710 if (!FinalizePrintReadyDocument()) |
| 699 if (!FinalizePreviewDocument()) | 711 return false; |
| 700 return false; | 712 } |
| 713 } | |
| 714 print_preview_context_.AllPagesRendered(); | |
| 701 print_preview_context_.Finished(); | 715 print_preview_context_.Finished(); |
| 702 return true; | 716 return true; |
| 703 } | 717 } |
| 704 | 718 |
| 705 bool PrintWebViewHelper::FinalizePreviewDocument() { | 719 bool PrintWebViewHelper::FinalizePrintReadyDocument() { |
| 706 print_preview_context_.FinalizePreviewDocument(); | 720 DCHECK(!is_print_ready_metafile_sent_); |
| 721 print_preview_context_.FinalizePrintReadyDocument(); | |
| 707 | 722 |
| 708 // Get the size of the resulting metafile. | 723 // Get the size of the resulting metafile. |
| 709 printing::PreviewMetafile* metafile = print_preview_context_.metafile(); | 724 printing::PreviewMetafile* metafile = print_preview_context_.metafile(); |
| 710 uint32 buf_size = metafile->GetDataSize(); | 725 uint32 buf_size = metafile->GetDataSize(); |
| 711 DCHECK_GT(buf_size, 0u); | 726 DCHECK_GT(buf_size, 0u); |
| 712 | 727 |
| 713 PrintHostMsg_DidPreviewDocument_Params preview_params; | 728 PrintHostMsg_DidPreviewDocument_Params preview_params; |
| 714 preview_params.reuse_existing_data = false; | 729 preview_params.reuse_existing_data = false; |
| 715 preview_params.data_size = buf_size; | 730 preview_params.data_size = buf_size; |
| 716 preview_params.document_cookie = print_pages_params_->params.document_cookie; | 731 preview_params.document_cookie = print_pages_params_->params.document_cookie; |
| 717 preview_params.expected_pages_count = | 732 preview_params.expected_pages_count = |
| 718 print_preview_context_.total_page_count(); | 733 print_preview_context_.total_page_count(); |
| 719 preview_params.modifiable = print_preview_context_.IsModifiable(); | 734 preview_params.modifiable = print_preview_context_.IsModifiable(); |
| 720 preview_params.preview_request_id = | 735 preview_params.preview_request_id = |
| 721 print_pages_params_->params.preview_request_id; | 736 print_pages_params_->params.preview_request_id; |
| 722 | 737 |
| 723 // Ask the browser to create the shared memory for us. | 738 // Ask the browser to create the shared memory for us. |
| 724 if (!CopyMetafileDataToSharedMem(metafile, | 739 if (!CopyMetafileDataToSharedMem(metafile, |
| 725 &(preview_params.metafile_data_handle))) { | 740 &(preview_params.metafile_data_handle))) { |
| 726 LOG(ERROR) << "CopyMetafileDataToSharedMem failed"; | 741 LOG(ERROR) << "CopyMetafileDataToSharedMem failed"; |
| 727 return false; | 742 return false; |
| 728 } | 743 } |
| 729 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); | 744 is_print_ready_metafile_sent_ = true; |
| 745 | |
| 746 Send(new PrintHostMsg_MetafileReadyForPrinting(routing_id(), preview_params)); | |
| 730 return true; | 747 return true; |
| 731 } | 748 } |
| 732 | 749 |
| 733 void PrintWebViewHelper::OnPrintingDone(bool success) { | 750 void PrintWebViewHelper::OnPrintingDone(bool success) { |
| 734 notify_browser_of_print_failure_ = false; | 751 notify_browser_of_print_failure_ = false; |
| 735 if (!success) | 752 if (!success) |
| 736 LOG(ERROR) << "Failure in OnPrintingDone"; | 753 LOG(ERROR) << "Failure in OnPrintingDone"; |
| 737 DidFinishPrinting(success ? OK : FAIL_PRINT); | 754 DidFinishPrinting(success ? OK : FAIL_PRINT); |
| 738 } | 755 } |
| 739 | 756 |
| (...skipping 507 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1247 if (cancel) | 1264 if (cancel) |
| 1248 notify_browser_of_print_failure_ = false; | 1265 notify_browser_of_print_failure_ = false; |
| 1249 return cancel; | 1266 return cancel; |
| 1250 } | 1267 } |
| 1251 | 1268 |
| 1252 bool PrintWebViewHelper::PreviewPageRendered(int page_number, | 1269 bool PrintWebViewHelper::PreviewPageRendered(int page_number, |
| 1253 printing::Metafile* metafile) { | 1270 printing::Metafile* metafile) { |
| 1254 DCHECK_GE(page_number, printing::FIRST_PAGE_INDEX); | 1271 DCHECK_GE(page_number, printing::FIRST_PAGE_INDEX); |
| 1255 | 1272 |
| 1256 // For non-modifiable files, |metafile| should be NULL, so do not bother | 1273 // For non-modifiable files, |metafile| should be NULL, so do not bother |
| 1257 // sending a message. | 1274 // sending a message. If we don't generate draft metafiles, |metafile| is |
| 1258 if (!print_preview_context_.IsModifiable()) { | 1275 // NULL. |
| 1276 if (!print_preview_context_.IsModifiable() || | |
| 1277 !print_preview_context_.generate_draft_pages()) { | |
| 1259 DCHECK(!metafile); | 1278 DCHECK(!metafile); |
| 1260 return true; | 1279 return true; |
| 1261 } | 1280 } |
| 1262 | 1281 |
| 1263 if (!metafile) { | 1282 if (!metafile) { |
| 1264 NOTREACHED(); | 1283 NOTREACHED(); |
| 1265 return false; | 1284 return false; |
| 1266 } | 1285 } |
| 1267 | 1286 |
| 1268 PrintHostMsg_DidPreviewPage_Params preview_page_params; | 1287 PrintHostMsg_DidPreviewPage_Params preview_page_params; |
| (...skipping 10 matching lines...) Expand all Loading... | |
| 1279 preview_page_params.preview_request_id = | 1298 preview_page_params.preview_request_id = |
| 1280 print_pages_params_->params.preview_request_id; | 1299 print_pages_params_->params.preview_request_id; |
| 1281 | 1300 |
| 1282 Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params)); | 1301 Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params)); |
| 1283 return true; | 1302 return true; |
| 1284 } | 1303 } |
| 1285 | 1304 |
| 1286 PrintWebViewHelper::PrintPreviewContext::PrintPreviewContext() | 1305 PrintWebViewHelper::PrintPreviewContext::PrintPreviewContext() |
| 1287 : frame_(NULL), | 1306 : frame_(NULL), |
| 1288 total_page_count_(0), | 1307 total_page_count_(0), |
| 1289 actual_page_count_(0), | |
| 1290 current_page_index_(0), | 1308 current_page_index_(0), |
| 1309 generate_draft_pages_(true), | |
| 1310 print_ready_metafile_page_count_(0), | |
| 1291 state_(UNINITIALIZED) { | 1311 state_(UNINITIALIZED) { |
| 1292 } | 1312 } |
| 1293 | 1313 |
| 1294 PrintWebViewHelper::PrintPreviewContext::~PrintPreviewContext() { | 1314 PrintWebViewHelper::PrintPreviewContext::~PrintPreviewContext() { |
| 1295 } | 1315 } |
| 1296 | 1316 |
| 1297 void PrintWebViewHelper::PrintPreviewContext::InitWithFrame( | 1317 void PrintWebViewHelper::PrintPreviewContext::InitWithFrame( |
| 1298 WebKit::WebFrame* web_frame) { | 1318 WebKit::WebFrame* web_frame) { |
| 1299 DCHECK(web_frame); | 1319 DCHECK(web_frame); |
| 1300 state_ = INITIALIZED; | 1320 state_ = INITIALIZED; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1334 node())); | 1354 node())); |
| 1335 UpdatePrintableSizeInPrintParameters(frame_, node_.get(), | 1355 UpdatePrintableSizeInPrintParameters(frame_, node_.get(), |
| 1336 prep_frame_view_.get(), print_params); | 1356 prep_frame_view_.get(), print_params); |
| 1337 | 1357 |
| 1338 total_page_count_ = prep_frame_view_->GetExpectedPageCount(); | 1358 total_page_count_ = prep_frame_view_->GetExpectedPageCount(); |
| 1339 if (total_page_count_ == 0) { | 1359 if (total_page_count_ == 0) { |
| 1340 LOG(ERROR) << "CreatePreviewDocument got 0 page count"; | 1360 LOG(ERROR) << "CreatePreviewDocument got 0 page count"; |
| 1341 return false; | 1361 return false; |
| 1342 } | 1362 } |
| 1343 | 1363 |
| 1364 int selected_page_count = pages.size(); | |
| 1344 current_page_index_ = 0; | 1365 current_page_index_ = 0; |
| 1345 if (pages.empty()) { | 1366 print_ready_metafile_page_count_ = selected_page_count; |
| 1346 actual_page_count_ = total_page_count_; | 1367 pages_to_render_ = pages; |
| 1347 for (int i = 0; i < actual_page_count_; ++i) | 1368 |
| 1369 if (selected_page_count == 0) { | |
| 1370 print_ready_metafile_page_count_ = total_page_count_; | |
| 1371 // Render all pages. | |
| 1372 for (int i = 0; i < total_page_count_; i++) | |
|
Lei Zhang
2011/09/01 05:16:51
nit: ++i here and below.
kmadhusu
2011/09/01 20:21:16
will submit a new CL to address this.
| |
| 1348 pages_to_render_.push_back(i); | 1373 pages_to_render_.push_back(i); |
| 1349 } else { | 1374 } else if (generate_draft_pages_) { |
| 1350 actual_page_count_ = pages.size(); | 1375 int pages_index = 0; |
|
Lei Zhang
2011/09/01 05:16:51
So if I understand this correctly, if the user ope
kmadhusu
2011/09/01 20:21:16
Yes. We generate 999 draft pages only if required.
| |
| 1351 for (int i = 0; i < actual_page_count_; ++i) { | 1376 for (int i = 0; i < total_page_count_; i++) { |
| 1352 int page_number = pages[i]; | 1377 if (pages_index < selected_page_count && i == pages[pages_index]) { |
| 1353 if (page_number < printing::FIRST_PAGE_INDEX || | 1378 pages_index++; |
| 1354 page_number >= total_page_count_) { | 1379 continue; |
| 1355 LOG(ERROR) << "CreatePreviewDocument got invalid page count " | |
| 1356 << page_number << " at index " << i; | |
| 1357 return false; | |
| 1358 } | 1380 } |
| 1359 pages_to_render_.push_back(page_number); | 1381 pages_to_render_.push_back(i); |
| 1360 } | 1382 } |
| 1361 } | 1383 } |
| 1362 | 1384 |
| 1363 document_render_time_ = base::TimeDelta(); | 1385 document_render_time_ = base::TimeDelta(); |
| 1364 begin_time_ = base::TimeTicks::Now(); | 1386 begin_time_ = base::TimeTicks::Now(); |
| 1365 | 1387 |
| 1366 return true; | 1388 return true; |
| 1367 } | 1389 } |
| 1368 | 1390 |
| 1369 void PrintWebViewHelper::PrintPreviewContext::RenderedPreviewPage( | 1391 void PrintWebViewHelper::PrintPreviewContext::RenderedPreviewPage( |
| 1370 const base::TimeDelta& page_time) { | 1392 const base::TimeDelta& page_time) { |
| 1371 DCHECK_EQ(RENDERING, state_); | 1393 DCHECK_EQ(RENDERING, state_); |
| 1372 document_render_time_ += page_time; | 1394 document_render_time_ += page_time; |
| 1373 UMA_HISTOGRAM_TIMES("PrintPreview.RenderPDFPageTime", page_time); | 1395 UMA_HISTOGRAM_TIMES("PrintPreview.RenderPDFPageTime", page_time); |
| 1374 } | 1396 } |
| 1375 | 1397 |
| 1376 void PrintWebViewHelper::PrintPreviewContext::FinalizePreviewDocument() { | 1398 void PrintWebViewHelper::PrintPreviewContext::AllPagesRendered() { |
| 1377 DCHECK_EQ(RENDERING, state_); | 1399 DCHECK_EQ(RENDERING, state_); |
| 1378 state_ = DONE; | 1400 state_ = DONE; |
| 1401 prep_frame_view_->FinishPrinting(); | |
| 1402 } | |
| 1403 | |
| 1404 void PrintWebViewHelper::PrintPreviewContext::FinalizePrintReadyDocument() { | |
| 1405 if (state_ != DONE && state_ != RENDERING) | |
| 1406 NOTREACHED(); | |
| 1379 | 1407 |
| 1380 base::TimeTicks begin_time = base::TimeTicks::Now(); | 1408 base::TimeTicks begin_time = base::TimeTicks::Now(); |
| 1381 | |
| 1382 prep_frame_view_->FinishPrinting(); | |
| 1383 metafile_->FinishDocument(); | 1409 metafile_->FinishDocument(); |
| 1384 | 1410 |
| 1385 if (actual_page_count_ <= 0) { | 1411 if (print_ready_metafile_page_count_ <= 0) { |
| 1386 NOTREACHED(); | 1412 NOTREACHED(); |
| 1387 return; | 1413 return; |
| 1388 } | 1414 } |
| 1389 | 1415 |
| 1390 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderToPDFTime", | 1416 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderToPDFTime", |
| 1391 document_render_time_); | 1417 document_render_time_); |
| 1392 base::TimeDelta total_time = (base::TimeTicks::Now() - begin_time) + | 1418 base::TimeDelta total_time = (base::TimeTicks::Now() - begin_time) + |
| 1393 document_render_time_; | 1419 document_render_time_; |
| 1394 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTime", | 1420 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTime", |
| 1395 total_time); | 1421 total_time); |
| 1396 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTimeAvgPerPage", | 1422 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTimeAvgPerPage", |
| 1397 total_time / actual_page_count_); | 1423 total_time / pages_to_render_.size()); |
| 1398 } | 1424 } |
| 1399 | 1425 |
| 1400 void PrintWebViewHelper::PrintPreviewContext::Finished() { | 1426 void PrintWebViewHelper::PrintPreviewContext::Finished() { |
| 1401 DCHECK_EQ(DONE, state_); | 1427 DCHECK_EQ(DONE, state_); |
| 1402 ClearContext(); | 1428 ClearContext(); |
| 1403 } | 1429 } |
| 1404 | 1430 |
| 1405 void PrintWebViewHelper::PrintPreviewContext::Failed() { | 1431 void PrintWebViewHelper::PrintPreviewContext::Failed() { |
| 1406 DCHECK(state_ == INITIALIZED || state_ == RENDERING); | 1432 DCHECK(state_ == INITIALIZED || state_ == RENDERING); |
| 1407 state_ = INITIALIZED; | 1433 state_ = INITIALIZED; |
| 1408 ClearContext(); | 1434 ClearContext(); |
| 1409 } | 1435 } |
| 1410 | 1436 |
| 1411 int PrintWebViewHelper::PrintPreviewContext::GetNextPageNumber() { | 1437 int PrintWebViewHelper::PrintPreviewContext::GetNextPageNumber() { |
| 1412 DCHECK_EQ(RENDERING, state_); | 1438 DCHECK_EQ(RENDERING, state_); |
| 1413 if (current_page_index_ >= actual_page_count_) | 1439 if ((size_t)(current_page_index_) == pages_to_render_.size()) |
| 1414 return -1; | 1440 return -1; |
| 1415 return pages_to_render_[current_page_index_++]; | 1441 return pages_to_render_[current_page_index_++]; |
| 1416 } | 1442 } |
| 1417 | 1443 |
| 1418 bool PrintWebViewHelper::PrintPreviewContext::IsReadyToRender() const { | 1444 bool PrintWebViewHelper::PrintPreviewContext::IsReadyToRender() const { |
| 1419 return state_ != UNINITIALIZED; | 1445 return state_ != UNINITIALIZED; |
| 1420 } | 1446 } |
| 1421 | 1447 |
| 1422 bool PrintWebViewHelper::PrintPreviewContext::IsModifiable() const { | 1448 bool PrintWebViewHelper::PrintPreviewContext::IsModifiable() const { |
| 1423 // TODO(vandebo) I think this should only return false if the content is a | 1449 // TODO(vandebo) I think this should only return false if the content is a |
| 1424 // PDF, just because we are printing a particular node does not mean it's | 1450 // PDF, just because we are printing a particular node does not mean it's |
| 1425 // a PDF (right?), we should check the mime type of the node. | 1451 // a PDF (right?), we should check the mime type of the node. |
| 1426 if (node()) | 1452 if (node()) |
| 1427 return false; | 1453 return false; |
| 1428 std::string mime(frame()->dataSource()->response().mimeType().utf8()); | 1454 std::string mime(frame()->dataSource()->response().mimeType().utf8()); |
| 1429 return mime != "application/pdf"; | 1455 return mime != "application/pdf"; |
| 1430 } | 1456 } |
| 1431 | 1457 |
| 1458 bool PrintWebViewHelper::PrintPreviewContext::IsLastPageOfPrintReadyMetafile() | |
| 1459 const { | |
| 1460 return current_page_index_ == print_ready_metafile_page_count_; | |
| 1461 } | |
| 1462 | |
| 1463 void PrintWebViewHelper::PrintPreviewContext::set_generate_draft_pages( | |
| 1464 bool generate_draft_pages) { | |
| 1465 generate_draft_pages_ = generate_draft_pages; | |
| 1466 } | |
| 1467 | |
| 1432 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const { | 1468 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const { |
| 1433 return frame_; | 1469 return frame_; |
| 1434 } | 1470 } |
| 1435 | 1471 |
| 1436 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const { | 1472 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const { |
| 1437 return node_.get(); | 1473 return node_.get(); |
| 1438 } | 1474 } |
| 1439 | 1475 |
| 1440 int PrintWebViewHelper::PrintPreviewContext::total_page_count() const { | 1476 int PrintWebViewHelper::PrintPreviewContext::total_page_count() const { |
| 1441 DCHECK(IsReadyToRender()); | 1477 DCHECK(IsReadyToRender()); |
| 1442 return total_page_count_; | 1478 return total_page_count_; |
| 1443 } | 1479 } |
| 1444 | 1480 |
| 1481 bool PrintWebViewHelper::PrintPreviewContext::generate_draft_pages() { | |
| 1482 return generate_draft_pages_; | |
| 1483 } | |
| 1484 | |
| 1445 printing::PreviewMetafile* | 1485 printing::PreviewMetafile* |
| 1446 PrintWebViewHelper::PrintPreviewContext::metafile() const { | 1486 PrintWebViewHelper::PrintPreviewContext::metafile() const { |
| 1447 return metafile_.get(); | 1487 return metafile_.get(); |
| 1448 } | 1488 } |
| 1449 | 1489 |
| 1450 const PrintMsg_Print_Params& | 1490 const PrintMsg_Print_Params& |
| 1451 PrintWebViewHelper::PrintPreviewContext::print_params() const { | 1491 PrintWebViewHelper::PrintPreviewContext::print_params() const { |
| 1452 return *print_params_; | 1492 return *print_params_; |
| 1453 } | 1493 } |
| 1454 | 1494 |
| 1455 const gfx::Size& | 1495 const gfx::Size& |
| 1456 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { | 1496 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { |
| 1457 return prep_frame_view_->GetPrintCanvasSize(); | 1497 return prep_frame_view_->GetPrintCanvasSize(); |
| 1458 } | 1498 } |
| 1459 | 1499 |
| 1460 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { | 1500 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { |
| 1461 prep_frame_view_.reset(); | 1501 prep_frame_view_.reset(); |
| 1462 metafile_.reset(); | 1502 metafile_.reset(); |
| 1463 pages_to_render_.clear(); | 1503 pages_to_render_.clear(); |
| 1464 } | 1504 } |
| OLD | NEW |