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 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 170 if (WebFrame* web_frame = web_view_->mainFrame()) | 170 if (WebFrame* web_frame = web_view_->mainFrame()) |
| 171 web_frame->setScrollOffset(prev_scroll_offset_); | 171 web_frame->setScrollOffset(prev_scroll_offset_); |
| 172 } | 172 } |
| 173 } | 173 } |
| 174 | 174 |
| 175 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) | 175 PrintWebViewHelper::PrintWebViewHelper(RenderView* render_view) |
| 176 : RenderViewObserver(render_view), | 176 : RenderViewObserver(render_view), |
| 177 RenderViewObserverTracker<PrintWebViewHelper>(render_view), | 177 RenderViewObserverTracker<PrintWebViewHelper>(render_view), |
| 178 print_web_view_(NULL), | 178 print_web_view_(NULL), |
| 179 is_preview_(switches::IsPrintPreviewEnabled()), | 179 is_preview_(switches::IsPrintPreviewEnabled()), |
| 180 is_complete_metafile_already_sent_(false), | |
| 180 user_cancelled_scripted_print_count_(0), | 181 user_cancelled_scripted_print_count_(0), |
| 181 notify_browser_of_print_failure_(true) { | 182 notify_browser_of_print_failure_(true) { |
| 182 } | 183 } |
| 183 | 184 |
| 184 PrintWebViewHelper::~PrintWebViewHelper() {} | 185 PrintWebViewHelper::~PrintWebViewHelper() {} |
| 185 | 186 |
| 186 // Prints |frame| which called window.print(). | 187 // Prints |frame| which called window.print(). |
| 187 void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) { | 188 void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) { |
| 188 DCHECK(frame); | 189 DCHECK(frame); |
| 189 | 190 |
| (...skipping 142 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 332 print_preview_context_.total_page_count(); | 333 print_preview_context_.total_page_count(); |
| 333 preview_params.modifiable = print_preview_context_.IsModifiable(); | 334 preview_params.modifiable = print_preview_context_.IsModifiable(); |
| 334 preview_params.preview_request_id = | 335 preview_params.preview_request_id = |
| 335 print_pages_params_->params.preview_request_id; | 336 print_pages_params_->params.preview_request_id; |
| 336 | 337 |
| 337 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); | 338 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); |
| 338 return; | 339 return; |
| 339 } | 340 } |
| 340 // Always clear |old_print_pages_params_| before rendering the pages. | 341 // Always clear |old_print_pages_params_| before rendering the pages. |
| 341 old_print_pages_params_.reset(); | 342 old_print_pages_params_.reset(); |
| 343 is_complete_metafile_already_sent_ = false; | |
| 342 | 344 |
| 343 // PDF printer device supports alpha blending. | 345 // PDF printer device supports alpha blending. |
| 344 print_pages_params_->params.supports_alpha_blend = true; | 346 print_pages_params_->params.supports_alpha_blend = true; |
| 347 | |
| 348 bool generate_draft_pages; | |
| 349 if (!settings.GetBoolean(printing::kSettingGenerateDraftData, | |
| 350 &generate_draft_pages)) { | |
| 351 NOTREACHED(); | |
| 352 } | |
| 353 print_preview_context_.set_generate_draft_pages(generate_draft_pages); | |
| 354 | |
| 345 if (!CreatePreviewDocument()) | 355 if (!CreatePreviewDocument()) |
| 346 DidFinishPrinting(FAIL_PREVIEW); | 356 DidFinishPrinting(FAIL_PREVIEW); |
| 347 } | 357 } |
| 348 | 358 |
| 349 bool PrintWebViewHelper::CreatePreviewDocument() { | 359 bool PrintWebViewHelper::CreatePreviewDocument() { |
| 350 PrintMsg_Print_Params print_params = print_pages_params_->params; | 360 PrintMsg_Print_Params print_params = print_pages_params_->params; |
| 351 const std::vector<int>& pages = print_pages_params_->pages; | 361 const std::vector<int>& pages = print_pages_params_->pages; |
| 352 if (!print_preview_context_.CreatePreviewDocument(&print_params, pages)) | 362 if (!print_preview_context_.CreatePreviewDocument(&print_params, pages)) |
| 353 return false; | 363 return false; |
| 354 int page_count = print_preview_context_.total_page_count(); | 364 int page_count = print_preview_context_.total_page_count(); |
| 355 bool is_modifiable = print_preview_context_.IsModifiable(); | 365 bool is_modifiable = print_preview_context_.IsModifiable(); |
| 356 int document_cookie = print_pages_params_->params.document_cookie; | 366 int document_cookie = print_pages_params_->params.document_cookie; |
| 357 Send(new PrintHostMsg_DidGetPreviewPageCount(routing_id(), document_cookie, | 367 Send(new PrintHostMsg_DidGetPreviewPageCount( |
| 358 page_count, is_modifiable)); | 368 routing_id(), |
| 369 document_cookie, | |
| 370 page_count, | |
| 371 is_modifiable, | |
| 372 print_preview_context_.generate_draft_pages())); | |
| 359 PreviewPageRendered(printing::INVALID_PAGE_INDEX, NULL); | 373 PreviewPageRendered(printing::INVALID_PAGE_INDEX, NULL); |
| 360 return true; | 374 return true; |
| 361 } | 375 } |
| 362 | 376 |
| 363 void PrintWebViewHelper::OnContinuePreview(int requested_preview_page_index) { | 377 void PrintWebViewHelper::OnContinuePreview() { |
| 364 // Spurious message. We already finished/cancelled/aborted the print preview. | 378 // Spurious message. We already finished/cancelled/aborted the print preview. |
| 365 if (!print_preview_context_.IsBusy()) | 379 if (!print_preview_context_.IsBusy()) |
| 366 return; | 380 return; |
| 367 int page_number; | 381 int page_number = print_preview_context_.GetNextPageNumber(); |
| 368 #if defined(USE_SKIA) | |
| 369 if (requested_preview_page_index >= printing::FIRST_PAGE_INDEX) { | |
| 370 page_number = requested_preview_page_index; | |
| 371 } else | |
| 372 #endif | |
| 373 { | |
| 374 page_number = print_preview_context_.GetNextPageNumber(); | |
| 375 } | |
| 376 | |
| 377 if (page_number >= printing::FIRST_PAGE_INDEX) { | 382 if (page_number >= printing::FIRST_PAGE_INDEX) { |
| 378 // Continue generating the print preview. | 383 // Continue generating the print preview. |
| 379 RenderPreviewPage(page_number); | 384 RenderPreviewPage(page_number); |
| 380 return; | 385 if (!print_preview_context_.IsCompleteMetafileReady()) |
|
vandebo (ex-Chrome)
2011/08/03 20:48:21
I think we want to return except for the one page
kmadhusu
2011/08/04 20:47:53
As we discussed, I renamed the function "IsComple
| |
| 386 return; | |
| 381 } | 387 } |
| 382 | 388 |
| 383 // Finished generating preview. Finalize the document. | 389 // Finished generating preview. Finalize the document. |
| 384 if (FinalizePreviewDocument()) { | 390 if (FinalizePreviewDocument()) { |
| 385 print_preview_context_.Finished(); | 391 if (page_number == printing::INVALID_PAGE_INDEX) { |
| 386 DidFinishPrinting(OK); | 392 print_preview_context_.Finished(); |
| 393 DidFinishPrinting(OK); | |
| 394 } | |
| 387 } else { | 395 } else { |
| 388 DidFinishPrinting(FAIL_PREVIEW); | 396 DidFinishPrinting(FAIL_PREVIEW); |
| 389 } | 397 } |
| 390 } | 398 } |
| 391 | 399 |
| 392 void PrintWebViewHelper::OnAbortPreview() { | 400 void PrintWebViewHelper::OnAbortPreview() { |
| 393 DidFinishPrinting(ABORT_PREVIEW); | 401 DidFinishPrinting(ABORT_PREVIEW); |
| 394 return; | 402 return; |
| 395 } | 403 } |
| 396 | 404 |
| 397 bool PrintWebViewHelper::FinalizePreviewDocument() { | 405 bool PrintWebViewHelper::FinalizePreviewDocument() { |
| 398 print_preview_context_.FinalizePreviewDocument(); | 406 print_preview_context_.FinalizePreviewDocument( |
| 407 is_complete_metafile_already_sent_); | |
| 408 if (is_complete_metafile_already_sent_) | |
|
vandebo (ex-Chrome)
2011/08/03 20:48:21
Ohh, I see you handle that here... I think it woul
kmadhusu
2011/08/04 20:47:53
Done.
| |
| 409 return true; | |
| 399 | 410 |
| 400 // Get the size of the resulting metafile. | 411 // Get the size of the resulting metafile. |
| 401 printing::Metafile* metafile = print_preview_context_.metafile(); | 412 printing::Metafile* metafile = print_preview_context_.metafile(); |
| 402 uint32 buf_size = metafile->GetDataSize(); | 413 uint32 buf_size = metafile->GetDataSize(); |
| 403 DCHECK_GT(buf_size, 0u); | 414 DCHECK_GT(buf_size, 0u); |
| 404 | 415 |
| 405 PrintHostMsg_DidPreviewDocument_Params preview_params; | 416 PrintHostMsg_DidPreviewDocument_Params preview_params; |
| 406 preview_params.reuse_existing_data = false; | 417 preview_params.reuse_existing_data = false; |
| 407 preview_params.data_size = buf_size; | 418 preview_params.data_size = buf_size; |
| 408 preview_params.document_cookie = print_pages_params_->params.document_cookie; | 419 preview_params.document_cookie = print_pages_params_->params.document_cookie; |
| 409 preview_params.expected_pages_count = | 420 preview_params.expected_pages_count = |
| 410 print_preview_context_.total_page_count(); | 421 print_preview_context_.total_page_count(); |
| 411 preview_params.modifiable = print_preview_context_.IsModifiable(); | 422 preview_params.modifiable = print_preview_context_.IsModifiable(); |
| 412 preview_params.preview_request_id = | 423 preview_params.preview_request_id = |
| 413 print_pages_params_->params.preview_request_id; | 424 print_pages_params_->params.preview_request_id; |
| 414 | 425 |
| 415 // Ask the browser to create the shared memory for us. | 426 // Ask the browser to create the shared memory for us. |
| 416 if (!CopyMetafileDataToSharedMem(metafile, | 427 if (!CopyMetafileDataToSharedMem(metafile, |
| 417 &(preview_params.metafile_data_handle))) { | 428 &(preview_params.metafile_data_handle))) { |
| 418 return false; | 429 return false; |
| 419 } | 430 } |
| 431 is_complete_metafile_already_sent_ = true; | |
| 432 | |
| 420 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); | 433 Send(new PrintHostMsg_PagesReadyForPreview(routing_id(), preview_params)); |
| 421 return true; | 434 return true; |
| 422 } | 435 } |
| 423 | 436 |
| 424 void PrintWebViewHelper::OnPrintingDone(bool success) { | 437 void PrintWebViewHelper::OnPrintingDone(bool success) { |
| 425 notify_browser_of_print_failure_ = false; | 438 notify_browser_of_print_failure_ = false; |
| 426 DidFinishPrinting(success ? OK : FAIL_PRINT); | 439 DidFinishPrinting(success ? OK : FAIL_PRINT); |
| 427 } | 440 } |
| 428 | 441 |
| 429 void PrintWebViewHelper::OnPrintNodeUnderContextMenu() { | 442 void PrintWebViewHelper::OnPrintNodeUnderContextMenu() { |
| (...skipping 500 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 930 } | 943 } |
| 931 } | 944 } |
| 932 preview_page_params.data_size = buf_size; | 945 preview_page_params.data_size = buf_size; |
| 933 preview_page_params.page_number = page_number; | 946 preview_page_params.page_number = page_number; |
| 934 Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params)); | 947 Send(new PrintHostMsg_DidPreviewPage(routing_id(), preview_page_params)); |
| 935 } | 948 } |
| 936 | 949 |
| 937 PrintWebViewHelper::PrintPreviewContext::PrintPreviewContext() | 950 PrintWebViewHelper::PrintPreviewContext::PrintPreviewContext() |
| 938 : frame_(NULL), | 951 : frame_(NULL), |
| 939 total_page_count_(0), | 952 total_page_count_(0), |
| 940 actual_page_count_(0), | 953 generate_draft_pages_(true), |
| 941 current_page_number_(0), | 954 complete_metafile_page_count_(0), |
| 955 render_page_list_index_(-1), | |
| 942 state_(UNINITIALIZED) { | 956 state_(UNINITIALIZED) { |
| 943 } | 957 } |
| 944 | 958 |
| 945 PrintWebViewHelper::PrintPreviewContext::~PrintPreviewContext() { | 959 PrintWebViewHelper::PrintPreviewContext::~PrintPreviewContext() { |
| 946 } | 960 } |
| 947 | 961 |
| 948 void PrintWebViewHelper::PrintPreviewContext::InitWithFrame( | 962 void PrintWebViewHelper::PrintPreviewContext::InitWithFrame( |
| 949 WebKit::WebFrame* web_frame) { | 963 WebKit::WebFrame* web_frame) { |
| 950 DCHECK(web_frame); | 964 DCHECK(web_frame); |
| 951 if (IsReadyToRender()) | 965 if (IsReadyToRender()) |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 985 // Need to make sure old object gets destroyed first. | 999 // Need to make sure old object gets destroyed first. |
| 986 prep_frame_view_.reset(new PrepareFrameAndViewForPrint(*print_params, frame(), | 1000 prep_frame_view_.reset(new PrepareFrameAndViewForPrint(*print_params, frame(), |
| 987 node())); | 1001 node())); |
| 988 UpdatePrintableSizeInPrintParameters(frame_, node_.get(), | 1002 UpdatePrintableSizeInPrintParameters(frame_, node_.get(), |
| 989 prep_frame_view_.get(), print_params); | 1003 prep_frame_view_.get(), print_params); |
| 990 | 1004 |
| 991 total_page_count_ = prep_frame_view_->GetExpectedPageCount(); | 1005 total_page_count_ = prep_frame_view_->GetExpectedPageCount(); |
| 992 if (total_page_count_ == 0) | 1006 if (total_page_count_ == 0) |
| 993 return false; | 1007 return false; |
| 994 | 1008 |
| 995 current_page_number_ = 0; | 1009 render_page_list_index_ = -1; |
| 996 if (pages.empty()) { | 1010 complete_metafile_page_count_ = pages.empty() ? total_page_count_ : |
| 997 actual_page_count_ = total_page_count_; | 1011 pages.size(); |
| 998 rendered_pages_ = std::vector<PreviewPageInfo>(total_page_count_, | 1012 render_page_list_ = pages; |
|
vandebo (ex-Chrome)
2011/08/03 20:48:21
what about if pages is empty? In most cases it'll
kmadhusu
2011/08/04 20:47:53
As we discussed, I added a DCHECK(generate_drate_p
| |
| 999 std::make_pair(false, -1)); | 1013 if (generate_draft_pages_) { |
| 1000 } else { | 1014 for (int i = 0; i < total_page_count_; i++) { |
| 1001 actual_page_count_ = pages.size(); | 1015 if (std::find(pages.begin(), pages.end(), i) == pages.end()) |
|
vandebo (ex-Chrome)
2011/08/03 20:48:21
if render_page_list_ is guaranteed to be in order,
kmadhusu
2011/08/04 20:47:53
Done.
| |
| 1002 rendered_pages_ = std::vector<PreviewPageInfo>(total_page_count_, | 1016 render_page_list_.push_back(i); |
| 1003 std::make_pair(true, -1)); | |
| 1004 for (int i = 0; i < actual_page_count_; ++i) { | |
| 1005 int page_number = pages[i]; | |
| 1006 if (page_number < printing::FIRST_PAGE_INDEX || | |
| 1007 page_number >= total_page_count_) { | |
| 1008 return false; | |
| 1009 } | |
| 1010 rendered_pages_[page_number].first = false; | |
| 1011 rendered_pages_[page_number].second = i; | |
| 1012 } | 1017 } |
| 1013 } | 1018 } |
| 1014 | |
| 1015 document_render_time_ = base::TimeDelta(); | 1019 document_render_time_ = base::TimeDelta(); |
| 1016 begin_time_ = base::TimeTicks::Now(); | 1020 begin_time_ = base::TimeTicks::Now(); |
| 1017 | 1021 |
| 1018 return true; | 1022 return true; |
| 1019 } | 1023 } |
| 1020 | 1024 |
| 1021 void PrintWebViewHelper::PrintPreviewContext::RenderedPreviewPage( | 1025 void PrintWebViewHelper::PrintPreviewContext::RenderedPreviewPage( |
| 1022 const base::TimeDelta& page_time) { | 1026 const base::TimeDelta& page_time) { |
| 1023 DCHECK_EQ(RENDERING, state_); | 1027 DCHECK_EQ(RENDERING, state_); |
| 1024 document_render_time_ += page_time; | 1028 document_render_time_ += page_time; |
| 1025 UMA_HISTOGRAM_TIMES("PrintPreview.RenderPDFPageTime", page_time); | 1029 UMA_HISTOGRAM_TIMES("PrintPreview.RenderPDFPageTime", page_time); |
| 1026 } | 1030 } |
| 1027 | 1031 |
| 1028 void PrintWebViewHelper::PrintPreviewContext::FinalizePreviewDocument() { | 1032 void PrintWebViewHelper::PrintPreviewContext::FinalizePreviewDocument( |
| 1033 bool is_complete_metafile_already_sent) { | |
| 1029 DCHECK_EQ(RENDERING, state_); | 1034 DCHECK_EQ(RENDERING, state_); |
| 1030 state_ = DONE; | 1035 if ((size_t)(render_page_list_index_ + 1) == render_page_list_.size()) { |
| 1036 state_ = DONE; | |
| 1037 prep_frame_view_->FinishPrinting(); | |
|
vandebo (ex-Chrome)
2011/08/03 20:48:21
Is this left over from trying to do PDFs?
kmadhusu
2011/08/04 20:47:53
No.
| |
| 1038 if (is_complete_metafile_already_sent) | |
| 1039 return; | |
| 1040 } | |
| 1031 | 1041 |
| 1032 base::TimeTicks begin_time = base::TimeTicks::Now(); | 1042 base::TimeTicks begin_time = base::TimeTicks::Now(); |
| 1033 | |
| 1034 prep_frame_view_->FinishPrinting(); | |
| 1035 metafile_->FinishDocument(); | 1043 metafile_->FinishDocument(); |
| 1036 | 1044 |
| 1037 if (actual_page_count_ <= 0) { | 1045 if (complete_metafile_page_count_ <= 0) { |
| 1038 NOTREACHED(); | 1046 NOTREACHED(); |
| 1039 return; | 1047 return; |
| 1040 } | 1048 } |
| 1041 | 1049 |
| 1042 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderToPDFTime", | 1050 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderToPDFTime", |
| 1043 document_render_time_); | 1051 document_render_time_); |
| 1044 base::TimeDelta total_time = (base::TimeTicks::Now() - begin_time) + | 1052 base::TimeDelta total_time = (base::TimeTicks::Now() - begin_time) + |
| 1045 document_render_time_; | 1053 document_render_time_; |
| 1046 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTime", | 1054 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTime", |
| 1047 total_time); | 1055 total_time); |
| 1048 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTimeAvgPerPage", | 1056 UMA_HISTOGRAM_MEDIUM_TIMES("PrintPreview.RenderAndGeneratePDFTimeAvgPerPage", |
| 1049 total_time / actual_page_count_); | 1057 total_time / complete_metafile_page_count_); |
| 1050 } | 1058 } |
| 1051 | 1059 |
| 1052 void PrintWebViewHelper::PrintPreviewContext::Finished() { | 1060 void PrintWebViewHelper::PrintPreviewContext::Finished() { |
| 1053 DCHECK_EQ(DONE, state_); | 1061 DCHECK_EQ(DONE, state_); |
| 1054 ClearContext(); | 1062 ClearContext(); |
| 1055 } | 1063 } |
| 1056 | 1064 |
| 1057 void PrintWebViewHelper::PrintPreviewContext::Abort() { | 1065 void PrintWebViewHelper::PrintPreviewContext::Abort() { |
| 1058 state_ = UNINITIALIZED; | 1066 state_ = UNINITIALIZED; |
| 1059 ClearContext(); | 1067 ClearContext(); |
| 1060 frame_ = NULL; | 1068 frame_ = NULL; |
| 1061 node_.reset(); | 1069 node_.reset(); |
| 1062 } | 1070 } |
| 1063 | 1071 |
| 1064 int PrintWebViewHelper::PrintPreviewContext::GetNextPageNumber() { | 1072 int PrintWebViewHelper::PrintPreviewContext::GetNextPageNumber() { |
| 1065 DCHECK_EQ(RENDERING, state_); | 1073 DCHECK_EQ(RENDERING, state_); |
| 1066 for (int i = 0; i < total_page_count_; i++) { | 1074 if ((size_t)(render_page_list_index_ + 1) >= render_page_list_.size()) |
| 1067 if (!rendered_pages_[current_page_number_].first) | |
| 1068 break; | |
| 1069 current_page_number_ = (current_page_number_ + 1) % total_page_count_; | |
| 1070 } | |
| 1071 if (rendered_pages_[current_page_number_].first) | |
| 1072 return printing::INVALID_PAGE_INDEX; | 1075 return printing::INVALID_PAGE_INDEX; |
| 1073 rendered_pages_[current_page_number_].first = true; | 1076 render_page_list_index_++; |
| 1074 return current_page_number_; | 1077 return render_page_list_[render_page_list_index_]; |
| 1075 } | 1078 } |
| 1076 | 1079 |
| 1077 bool PrintWebViewHelper::PrintPreviewContext::IsReadyToRender() const { | 1080 bool PrintWebViewHelper::PrintPreviewContext::IsReadyToRender() const { |
| 1078 return state_ != UNINITIALIZED; | 1081 return state_ != UNINITIALIZED; |
| 1079 } | 1082 } |
| 1080 | 1083 |
| 1081 bool PrintWebViewHelper::PrintPreviewContext::IsBusy() const { | 1084 bool PrintWebViewHelper::PrintPreviewContext::IsBusy() const { |
| 1082 return state_ == INITIALIZED || state_ == RENDERING; | 1085 return state_ == INITIALIZED || state_ == RENDERING; |
| 1083 } | 1086 } |
| 1084 | 1087 |
| 1085 bool PrintWebViewHelper::PrintPreviewContext::IsModifiable() const { | 1088 bool PrintWebViewHelper::PrintPreviewContext::IsModifiable() const { |
| 1086 // TODO(vandebo) I think this should only return false if the content is a | 1089 // TODO(vandebo) I think this should only return false if the content is a |
| 1087 // PDF, just because we are printing a particular node does not mean it's | 1090 // PDF, just because we are printing a particular node does not mean it's |
| 1088 // a PDF (right?), we should check the mime type of the node. | 1091 // a PDF (right?), we should check the mime type of the node. |
| 1089 if (node()) | 1092 if (node()) |
| 1090 return false; | 1093 return false; |
| 1091 std::string mime(frame()->dataSource()->response().mimeType().utf8()); | 1094 std::string mime(frame()->dataSource()->response().mimeType().utf8()); |
| 1092 return mime != "application/pdf"; | 1095 return mime != "application/pdf"; |
| 1093 } | 1096 } |
| 1094 | 1097 |
| 1098 bool PrintWebViewHelper::PrintPreviewContext::IsCompleteMetafileReady() const { | |
| 1099 return render_page_list_index_ == complete_metafile_page_count_ - 1; | |
| 1100 } | |
| 1101 | |
| 1095 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const { | 1102 WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const { |
| 1096 return frame_; | 1103 return frame_; |
| 1097 } | 1104 } |
| 1098 | 1105 |
| 1099 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const { | 1106 WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const { |
| 1100 return node_.get(); | 1107 return node_.get(); |
| 1101 } | 1108 } |
| 1102 | 1109 |
| 1103 int PrintWebViewHelper::PrintPreviewContext::total_page_count() const { | 1110 int PrintWebViewHelper::PrintPreviewContext::total_page_count() const { |
| 1104 return total_page_count_; | 1111 return total_page_count_; |
| 1105 } | 1112 } |
| 1106 | 1113 |
| 1107 printing::Metafile* PrintWebViewHelper::PrintPreviewContext::metafile() const { | 1114 printing::Metafile* PrintWebViewHelper::PrintPreviewContext::metafile() const { |
| 1108 return metafile_.get(); | 1115 return metafile_.get(); |
| 1109 } | 1116 } |
| 1110 | 1117 |
| 1111 const PrintMsg_Print_Params& | 1118 const PrintMsg_Print_Params& |
| 1112 PrintWebViewHelper::PrintPreviewContext::print_params() const { | 1119 PrintWebViewHelper::PrintPreviewContext::print_params() const { |
| 1113 return *print_params_; | 1120 return *print_params_; |
| 1114 } | 1121 } |
| 1115 | 1122 |
| 1116 const gfx::Size& | 1123 const gfx::Size& |
| 1117 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { | 1124 PrintWebViewHelper::PrintPreviewContext::GetPrintCanvasSize() const { |
| 1118 return prep_frame_view_->GetPrintCanvasSize(); | 1125 return prep_frame_view_->GetPrintCanvasSize(); |
| 1119 } | 1126 } |
| 1120 | 1127 |
| 1121 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { | 1128 void PrintWebViewHelper::PrintPreviewContext::ClearContext() { |
| 1122 prep_frame_view_.reset(); | 1129 prep_frame_view_.reset(); |
| 1123 metafile_.reset(); | 1130 metafile_.reset(); |
| 1124 rendered_pages_.clear(); | 1131 render_page_list_.clear(); |
| 1125 } | 1132 } |
| OLD | NEW |