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