Chromium Code Reviews| Index: chrome/renderer/printing/print_web_view_helper.cc |
| diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/chrome/renderer/printing/print_web_view_helper.cc |
| index 13c69ef161df30df6cc658961709301b6c37de68..f2cdcc4f597344f2e3bcac08195887f9e3a99236 100644 |
| --- a/chrome/renderer/printing/print_web_view_helper.cc |
| +++ b/chrome/renderer/printing/print_web_view_helper.cc |
| @@ -412,9 +412,7 @@ bool IsPrintThrottlingDisabled() { |
| } // namespace |
| -FrameReference::FrameReference(blink::WebFrame* frame) { |
| - Reset(frame); |
| -} |
| +FrameReference::FrameReference(blink::WebLocalFrame* frame) { Reset(frame); } |
| FrameReference::FrameReference() { |
| Reset(NULL); |
| @@ -423,7 +421,7 @@ FrameReference::FrameReference() { |
| FrameReference::~FrameReference() { |
| } |
| -void FrameReference::Reset(blink::WebFrame* frame) { |
| +void FrameReference::Reset(blink::WebLocalFrame* frame) { |
| if (frame) { |
| view_ = frame->view(); |
| frame_ = frame; |
| @@ -433,13 +431,13 @@ void FrameReference::Reset(blink::WebFrame* frame) { |
| } |
| } |
| -blink::WebFrame* FrameReference::GetFrame() { |
| +blink::WebLocalFrame* FrameReference::GetFrame() { |
| if (view_ == NULL || frame_ == NULL) |
| return NULL; |
| for (blink::WebFrame* frame = view_->mainFrame(); frame != NULL; |
| frame = frame->traverseNext(false)) { |
| if (frame == frame_) |
| - return frame; |
| + return frame_; |
| } |
| return NULL; |
| } |
| @@ -534,7 +532,7 @@ class PrepareFrameAndViewForPrint : public blink::WebViewClient, |
| public blink::WebFrameClient { |
| public: |
| PrepareFrameAndViewForPrint(const PrintMsg_Print_Params& params, |
| - blink::WebFrame* frame, |
| + blink::WebLocalFrame* frame, |
| const blink::WebNode& node, |
| bool ignore_css_margins); |
| virtual ~PrepareFrameAndViewForPrint(); |
| @@ -547,9 +545,7 @@ class PrepareFrameAndViewForPrint : public blink::WebViewClient, |
| // Prepares frame for printing. |
| void StartPrinting(); |
| - blink::WebFrame* frame() { |
| - return frame_.GetFrame(); |
| - } |
| + blink::WebLocalFrame* frame() { return frame_.GetFrame(); } |
| const blink::WebNode& node() const { |
| return node_to_print_; |
| @@ -573,7 +569,7 @@ class PrepareFrameAndViewForPrint : public blink::WebViewClient, |
| virtual void didStopLoading(); |
| // blink::WebFrameClient override: |
| - virtual blink::WebFrame* createChildFrame(blink::WebFrame* parent, |
| + virtual blink::WebFrame* createChildFrame(blink::WebLocalFrame* parent, |
| const blink::WebString& name); |
| virtual void frameDetached(blink::WebFrame* frame); |
| @@ -602,7 +598,7 @@ class PrepareFrameAndViewForPrint : public blink::WebViewClient, |
| PrepareFrameAndViewForPrint::PrepareFrameAndViewForPrint( |
| const PrintMsg_Print_Params& params, |
| - blink::WebFrame* frame, |
| + blink::WebLocalFrame* frame, |
| const blink::WebNode& node, |
| bool ignore_css_margins) |
| : weak_ptr_factory_(this), |
| @@ -695,7 +691,7 @@ void PrepareFrameAndViewForPrint::CopySelection( |
| owns_web_view_ = true; |
| content::ApplyWebPreferences(prefs, web_view); |
| web_view->setMainFrame(blink::WebFrame::create(this)); |
| - frame_.Reset(web_view->mainFrame()); |
| + frame_.Reset(web_view->mainFrame()->toWebLocalFrame()); |
| node_to_print_.reset(); |
| // When loading is done this will call didStopLoading() and that will do the |
| @@ -714,9 +710,9 @@ void PrepareFrameAndViewForPrint::didStopLoading() { |
| } |
| blink::WebFrame* PrepareFrameAndViewForPrint::createChildFrame( |
| - blink::WebFrame* parent, |
| + blink::WebLocalFrame* parent, |
| const blink::WebString& name) { |
| - blink::WebFrame* frame = blink::WebFrame::create(this); |
| + blink::WebFrame* frame = blink::WebLocalFrame::create(this); |
| parent->appendChild(frame); |
| return frame; |
| } |
| @@ -816,7 +812,7 @@ void PrintWebViewHelper::DidStopLoading() { |
| } |
| // Prints |frame| which called window.print(). |
| -void PrintWebViewHelper::PrintPage(blink::WebFrame* frame, |
| +void PrintWebViewHelper::PrintPage(blink::WebLocalFrame* frame, |
| bool user_initiated) { |
| DCHECK(frame); |
| @@ -883,7 +879,7 @@ void PrintWebViewHelper::OnPrintForPrintPreview( |
| // on return. |
| base::AutoReset<bool> set_printing_flag(&print_for_preview_, true); |
| - blink::WebFrame* pdf_frame = pdf_element.document().frame(); |
| + blink::WebLocalFrame* pdf_frame = pdf_element.document().frame(); |
| if (!UpdatePrintSettings(pdf_frame, pdf_element, job_settings)) { |
| LOG(ERROR) << "UpdatePrintSettings failed"; |
| DidFinishPrinting(FAIL_PRINT); |
| @@ -909,7 +905,7 @@ void PrintWebViewHelper::OnPrintForPrintPreview( |
| } |
| } |
| -bool PrintWebViewHelper::GetPrintFrame(blink::WebFrame** frame) { |
| +bool PrintWebViewHelper::GetPrintFrame(blink::WebLocalFrame** frame) { |
| DCHECK(frame); |
| blink::WebView* webView = render_view()->GetWebView(); |
| DCHECK(webView); |
| @@ -918,19 +914,26 @@ bool PrintWebViewHelper::GetPrintFrame(blink::WebFrame** frame) { |
| // If the user has selected text in the currently focused frame we print |
| // only that frame (this makes print selection work for multiple frames). |
| - blink::WebFrame* focusedFrame = webView->focusedFrame(); |
| - *frame = focusedFrame->hasSelection() ? focusedFrame : webView->mainFrame(); |
| + // TODO(dcheng): This code will almost certainly need to be adapted to work |
| + // correctly with out-of-process iframes. There are certainly cases where |
| + // focused frame and main frame will not be in the same renderer, so we will |
| + // need to make sure this is dispatched correctly. |
|
jam
2014/04/05 00:12:39
nit: i'm a bit hesitant to start adding comments t
dcheng
2014/04/05 00:42:23
I don't usually add these comments, but there's an
|
| + blink::WebLocalFrame* focusedFrame = |
| + webView->focusedFrame()->toWebLocalFrame(); |
| + *frame = focusedFrame->hasSelection() |
| + ? focusedFrame |
| + : webView->mainFrame()->toWebLocalFrame(); |
| return true; |
| } |
| void PrintWebViewHelper::OnPrintPages() { |
| - blink::WebFrame* frame; |
| + blink::WebLocalFrame* frame; |
| if (GetPrintFrame(&frame)) |
| Print(frame, blink::WebNode()); |
| } |
| void PrintWebViewHelper::OnPrintForSystemDialog() { |
| - blink::WebFrame* frame = print_preview_context_.source_frame(); |
| + blink::WebLocalFrame* frame = print_preview_context_.source_frame(); |
| if (!frame) { |
| NOTREACHED(); |
| return; |
| @@ -1178,7 +1181,7 @@ void PrintWebViewHelper::SetScriptedPrintBlocked(bool blocked) { |
| void PrintWebViewHelper::OnInitiatePrintPreview(bool selection_only) { |
| DCHECK(is_preview_enabled_); |
| - blink::WebFrame* frame = NULL; |
| + blink::WebLocalFrame* frame = NULL; |
| GetPrintFrame(&frame); |
| DCHECK(frame); |
| print_preview_context_.InitWithFrame(frame); |
| @@ -1222,7 +1225,7 @@ void PrintWebViewHelper::PrintNode(const blink::WebNode& node) { |
| print_node_in_progress_ = false; |
| } |
| -void PrintWebViewHelper::Print(blink::WebFrame* frame, |
| +void PrintWebViewHelper::Print(blink::WebLocalFrame* frame, |
| const blink::WebNode& node) { |
| // If still not finished with earlier print request simply ignore. |
| if (prep_frame_view_) |
| @@ -1417,7 +1420,7 @@ bool PrintWebViewHelper::InitPrintSettings(bool fit_to_paper_size) { |
| return result; |
| } |
| -bool PrintWebViewHelper::CalculateNumberOfPages(blink::WebFrame* frame, |
| +bool PrintWebViewHelper::CalculateNumberOfPages(blink::WebLocalFrame* frame, |
| const blink::WebNode& node, |
| int* number_of_pages) { |
| DCHECK(frame); |
| @@ -1441,7 +1444,7 @@ bool PrintWebViewHelper::CalculateNumberOfPages(blink::WebFrame* frame, |
| } |
| bool PrintWebViewHelper::UpdatePrintSettings( |
| - blink::WebFrame* frame, |
| + blink::WebLocalFrame* frame, |
| const blink::WebNode& node, |
| const base::DictionaryValue& passed_job_settings) { |
| DCHECK(is_preview_enabled_); |
| @@ -1483,7 +1486,7 @@ bool PrintWebViewHelper::UpdatePrintSettings( |
| print_preview_context_.set_error(PREVIEW_ERROR_INVALID_PRINTER_SETTINGS); |
| } else { |
| // PrintForPrintPreview |
| - blink::WebFrame* print_frame = NULL; |
| + blink::WebLocalFrame* print_frame = NULL; |
| // This may not be the right frame, but the alert will be modal, |
| // therefore it works well enough. |
| GetPrintFrame(&print_frame); |
| @@ -1575,7 +1578,7 @@ bool PrintWebViewHelper::GetPrintSettingsFromUser(blink::WebFrame* frame, |
| return (print_settings.params.dpi && print_settings.params.document_cookie); |
| } |
| -bool PrintWebViewHelper::RenderPagesForPrint(blink::WebFrame* frame, |
| +bool PrintWebViewHelper::RenderPagesForPrint(blink::WebLocalFrame* frame, |
| const blink::WebNode& node) { |
| if (!frame || prep_frame_view_) |
| return false; |
| @@ -1786,7 +1789,7 @@ PrintWebViewHelper::PrintPreviewContext::~PrintPreviewContext() { |
| } |
| void PrintWebViewHelper::PrintPreviewContext::InitWithFrame( |
| - blink::WebFrame* web_frame) { |
| + blink::WebLocalFrame* web_frame) { |
| DCHECK(web_frame); |
| DCHECK(!IsRendering()); |
| state_ = INITIALIZED; |
| @@ -1962,7 +1965,7 @@ void PrintWebViewHelper::PrintPreviewContext::set_error( |
| error_ = error; |
| } |
| -blink::WebFrame* PrintWebViewHelper::PrintPreviewContext::source_frame() { |
| +blink::WebLocalFrame* PrintWebViewHelper::PrintPreviewContext::source_frame() { |
| DCHECK(state_ != UNINITIALIZED); |
| return source_frame_.GetFrame(); |
| } |
| @@ -1973,7 +1976,8 @@ const blink::WebNode& |
| return source_node_; |
| } |
| -blink::WebFrame* PrintWebViewHelper::PrintPreviewContext::prepared_frame() { |
| +blink::WebLocalFrame* |
| +PrintWebViewHelper::PrintPreviewContext::prepared_frame() { |
| DCHECK(state_ != UNINITIALIZED); |
| return prep_frame_view_->frame(); |
| } |