diff options
-rw-r--r-- | chrome/renderer/print_web_view_helper.cc | 56 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper.h | 20 | ||||
-rw-r--r-- | chrome/renderer/print_web_view_helper_linux.cc | 4 |
3 files changed, 36 insertions, 44 deletions
diff --git a/chrome/renderer/print_web_view_helper.cc b/chrome/renderer/print_web_view_helper.cc index 65920f7..be463c0 100644 --- a/chrome/renderer/print_web_view_helper.cc +++ b/chrome/renderer/print_web_view_helper.cc @@ -425,8 +425,9 @@ void PrintWebViewHelper::PrintHeaderAndFooter( PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( const PrintMsg_Print_Params& print_params, WebFrame* frame, - WebNode* node) + const WebNode& node) : frame_(frame), + node_to_print_(node), web_view_(frame->view()), dpi_(static_cast<int>(print_params.dpi)), expected_pages_count_(0), @@ -439,9 +440,6 @@ PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( prev_scroll_offset_ = web_frame->scrollOffset(); prev_view_size_ = web_view_->size(); - if (node) - node_to_print_ = *node; - StartPrinting(canvas_size); } @@ -521,7 +519,7 @@ void PrintWebViewHelper::PrintPage(WebKit::WebFrame* frame) { print_preview_context_.InitWithFrame(frame); RequestPrintPreview(); } else { - Print(frame, NULL); + Print(frame, WebNode()); } } @@ -576,12 +574,12 @@ void PrintWebViewHelper::OnPrintForPrintPreview( WebFrame* pdf_frame = pdf_element.document().frame(); scoped_ptr<PrepareFrameAndViewForPrint> prepare; prepare.reset(new PrepareFrameAndViewForPrint(print_pages_params_->params, - pdf_frame, &pdf_element)); - UpdatePrintableSizeInPrintParameters(pdf_frame, &pdf_element, prepare.get(), + pdf_frame, pdf_element)); + UpdatePrintableSizeInPrintParameters(pdf_frame, pdf_element, prepare.get(), &print_pages_params_->params); // Render Pages for printing. - if (!RenderPagesForPrint(pdf_frame, &pdf_element, prepare.get())) { + if (!RenderPagesForPrint(pdf_frame, pdf_element, prepare.get())) { LOG(ERROR) << "RenderPagesForPrint failed"; DidFinishPrinting(FAIL_PRINT); } @@ -604,7 +602,7 @@ bool PrintWebViewHelper::GetPrintFrame(WebKit::WebFrame** frame) { void PrintWebViewHelper::OnPrintPages() { WebFrame* frame; if (GetPrintFrame(&frame)) - Print(frame, NULL); + Print(frame, WebNode()); } void PrintWebViewHelper::OnPrintForSystemDialog() { @@ -614,15 +612,7 @@ void PrintWebViewHelper::OnPrintForSystemDialog() { return; } - WebNode* node = print_preview_context_.node(); - if (!node) { - Print(frame, NULL); - } else { - // Make a copy of the node, because |print_preview_context_| will reset its - // copy when the print preview tab closes. - WebNode duplicate_node(*node); - Print(frame, &duplicate_node); - } + Print(frame, print_preview_context_.node()); } void PrintWebViewHelper::OnPrintPreview(const DictionaryValue& settings) { @@ -779,7 +769,7 @@ void PrintWebViewHelper::OnPrintNodeUnderContextMenu() { RequestPrintPreview(); } else { WebNode duplicate_node(context_menu_node); - Print(duplicate_node.document().frame(), &duplicate_node); + Print(duplicate_node.document().frame(), duplicate_node); } } @@ -792,7 +782,8 @@ void PrintWebViewHelper::OnInitiatePrintPreview() { } } -void PrintWebViewHelper::Print(WebKit::WebFrame* frame, WebKit::WebNode* node) { +void PrintWebViewHelper::Print(WebKit::WebFrame* frame, + const WebKit::WebNode& node) { // If still not finished with earlier print request simply ignore. if (print_web_view_) return; @@ -901,7 +892,7 @@ bool PrintWebViewHelper::CopyAndPrint(WebKit::WebFrame* web_frame) { #if defined(OS_MACOSX) || defined(OS_WIN) bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, WebFrame* frame, - WebNode* node, + const WebNode& node, PrepareFrameAndViewForPrint* prepare) { PrintMsg_Print_Params print_params = params.params; scoped_ptr<PrepareFrameAndViewForPrint> prep_frame_view; @@ -942,7 +933,7 @@ bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, void PrintWebViewHelper::didStopLoading() { PrintMsg_PrintPages_Params* params = print_pages_params_.get(); DCHECK(params != NULL); - PrintPages(*params, print_web_view_->mainFrame(), NULL, NULL); + PrintPages(*params, print_web_view_->mainFrame(), WebNode(), NULL); } // static - Not anonymous so that platform implementations can use it. @@ -1014,7 +1005,7 @@ void PrintWebViewHelper::GetPageSizeAndMarginsInPoints( // static - Not anonymous so that platform implementations can use it. void PrintWebViewHelper::UpdatePrintableSizeInPrintParameters( WebFrame* frame, - WebNode* node, + const WebNode& node, PrepareFrameAndViewForPrint* prepare, PrintMsg_Print_Params* params) { PageSizeMargins page_layout_in_points; @@ -1052,7 +1043,8 @@ void PrintWebViewHelper::UpdatePrintableSizeInPrintParameters( prepare->UpdatePrintParams(*params); } -bool PrintWebViewHelper::InitPrintSettings(WebKit::WebFrame* frame) { +bool PrintWebViewHelper::InitPrintSettings(WebKit::WebFrame* frame, + const WebKit::WebNode& node) { DCHECK(frame); PrintMsg_PrintPages_Params settings; @@ -1083,9 +1075,9 @@ bool PrintWebViewHelper::InitPrintSettings(WebKit::WebFrame* frame) { } bool PrintWebViewHelper::InitPrintSettingsAndPrepareFrame( - WebKit::WebFrame* frame, WebKit::WebNode* node, + WebKit::WebFrame* frame, const WebKit::WebNode& node, scoped_ptr<PrepareFrameAndViewForPrint>* prepare) { - if (!InitPrintSettings(frame)) + if (!InitPrintSettings(frame, node)) return false; DCHECK(!prepare->get()); @@ -1217,7 +1209,7 @@ bool PrintWebViewHelper::GetPrintSettingsFromUser(WebKit::WebFrame* frame, bool PrintWebViewHelper::RenderPagesForPrint( WebKit::WebFrame* frame, - WebKit::WebNode* node, + const WebKit::WebNode& node, PrepareFrameAndViewForPrint* prepare) { PrintMsg_PrintPages_Params print_settings = *print_pages_params_; if (print_settings.params.selection_only) { @@ -1387,7 +1379,7 @@ void PrintWebViewHelper::PrintPreviewContext::InitWithNode( DCHECK(!web_node.isNull()); state_ = INITIALIZED; frame_ = web_node.document().frame(); - node_.reset(new WebNode(web_node)); + node_ = web_node; } void PrintWebViewHelper::PrintPreviewContext::OnPrintPreview() { @@ -1413,7 +1405,7 @@ bool PrintWebViewHelper::PrintPreviewContext::CreatePreviewDocument( // Need to make sure old object gets destroyed first. prep_frame_view_.reset(new PrepareFrameAndViewForPrint(*print_params, frame(), node())); - UpdatePrintableSizeInPrintParameters(frame_, node_.get(), + UpdatePrintableSizeInPrintParameters(frame_, node_, prep_frame_view_.get(), print_params); total_page_count_ = prep_frame_view_->GetExpectedPageCount(); @@ -1516,7 +1508,7 @@ bool PrintWebViewHelper::PrintPreviewContext::IsModifiable() const { // TODO(vandebo) I think this should only return false if the content is a // PDF, just because we are printing a particular node does not mean it's // a PDF (right?), we should check the mime type of the node. - if (node()) + if (!node().isNull()) return false; std::string mime(frame()->dataSource()->response().mimeType().utf8()); return mime != "application/pdf"; @@ -1545,8 +1537,8 @@ WebKit::WebFrame* PrintWebViewHelper::PrintPreviewContext::frame() const { return frame_; } -WebKit::WebNode* PrintWebViewHelper::PrintPreviewContext::node() const { - return node_.get(); +const WebKit::WebNode& PrintWebViewHelper::PrintPreviewContext::node() const { + return node_; } int PrintWebViewHelper::PrintPreviewContext::total_page_count() const { diff --git a/chrome/renderer/print_web_view_helper.h b/chrome/renderer/print_web_view_helper.h index b1244f3..7d0a8ea 100644 --- a/chrome/renderer/print_web_view_helper.h +++ b/chrome/renderer/print_web_view_helper.h @@ -47,7 +47,7 @@ class PrepareFrameAndViewForPrint { // printed. PrepareFrameAndViewForPrint(const PrintMsg_Print_Params& print_params, WebKit::WebFrame* frame, - WebKit::WebNode* node); + const WebKit::WebNode& node); ~PrepareFrameAndViewForPrint(); void UpdatePrintParams(const PrintMsg_Print_Params& print_params); @@ -158,7 +158,7 @@ class PrintWebViewHelper : public RenderViewObserver, // Main printing code ------------------------------------------------------- - void Print(WebKit::WebFrame* frame, WebKit::WebNode* node); + void Print(WebKit::WebFrame* frame, const WebKit::WebNode& node); enum PrintingResult { OK, @@ -173,7 +173,7 @@ class PrintWebViewHelper : public RenderViewObserver, // Initialize print page settings with default settings. // Used only for native printing workflow. - bool InitPrintSettings(WebKit::WebFrame* frame); + bool InitPrintSettings(WebKit::WebFrame* frame, const WebKit::WebNode& node); // Initialize print page settings with default settings and prepare the frame // for print. A new PrepareFrameAndViewForPrint is created to fulfill the @@ -181,7 +181,7 @@ class PrintWebViewHelper : public RenderViewObserver, // Used only for native printing workflow. bool InitPrintSettingsAndPrepareFrame( WebKit::WebFrame* frame, - WebKit::WebNode* node, + const WebKit::WebNode& node, scoped_ptr<PrepareFrameAndViewForPrint>* prepare); // Update the current print settings with new |job_settings|. |job_settings| @@ -202,7 +202,7 @@ class PrintWebViewHelper : public RenderViewObserver, // It will implicitly revert the document to display CSS media type. bool PrintPages(const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame, - WebKit::WebNode* node, + const WebKit::WebNode& node, PrepareFrameAndViewForPrint* prepare); // Prints the page listed in |params|. @@ -218,7 +218,7 @@ class PrintWebViewHelper : public RenderViewObserver, #endif // Render the frame for printing. - bool RenderPagesForPrint(WebKit::WebFrame* frame, WebKit::WebNode* node, + bool RenderPagesForPrint(WebKit::WebFrame* frame, const WebKit::WebNode& node, PrepareFrameAndViewForPrint* prepare); // Platform specific helper function for rendering page(s) to |metafile|. @@ -237,7 +237,7 @@ class PrintWebViewHelper : public RenderViewObserver, WebKit::WebFrame* frame, printing::Metafile* metafile); #elif defined(OS_POSIX) bool RenderPages(const PrintMsg_PrintPages_Params& params, - WebKit::WebFrame* frame, WebKit::WebNode* node, + WebKit::WebFrame* frame, const WebKit::WebNode& node, int* page_count, PrepareFrameAndViewForPrint* prepare, printing::Metafile* metafile); #endif // defined(OS_WIN) @@ -257,7 +257,7 @@ class PrintWebViewHelper : public RenderViewObserver, static void UpdatePrintableSizeInPrintParameters( WebKit::WebFrame* frame, - WebKit::WebNode* node, + const WebKit::WebNode& node, PrepareFrameAndViewForPrint* prepare, PrintMsg_Print_Params* params); @@ -385,7 +385,7 @@ class PrintWebViewHelper : public RenderViewObserver, // Getters WebKit::WebFrame* frame() const; - WebKit::WebNode* node() const; + const WebKit::WebNode& node() const; int total_page_count() const; bool generate_draft_pages(); printing::PreviewMetafile* metafile() const; @@ -406,7 +406,7 @@ class PrintWebViewHelper : public RenderViewObserver, // Specifies what to render for print preview. WebKit::WebFrame* frame_; - scoped_ptr<WebKit::WebNode> node_; + WebKit::WebNode node_; scoped_ptr<PrepareFrameAndViewForPrint> prep_frame_view_; scoped_ptr<printing::PreviewMetafile> metafile_; diff --git a/chrome/renderer/print_web_view_helper_linux.cc b/chrome/renderer/print_web_view_helper_linux.cc index 1234a35..7d93a84 100644 --- a/chrome/renderer/print_web_view_helper_linux.cc +++ b/chrome/renderer/print_web_view_helper_linux.cc @@ -56,7 +56,7 @@ bool PrintWebViewHelper::RenderPreviewPage(int page_number) { bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, WebFrame* frame, - WebNode* node, + const WebNode& node, PrepareFrameAndViewForPrint* prepare) { printing::NativeMetafile metafile; if (!metafile.Init()) @@ -141,7 +141,7 @@ bool PrintWebViewHelper::PrintPages(const PrintMsg_PrintPages_Params& params, bool PrintWebViewHelper::RenderPages(const PrintMsg_PrintPages_Params& params, WebKit::WebFrame* frame, - WebKit::WebNode* node, + const WebKit::WebNode& node, int* page_count, PrepareFrameAndViewForPrint* prepare, printing::Metafile* metafile) { |