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(); |
} |