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 777eb69fa183c52236578b34969c60e803511b5e..868a72bce48431d29d49235a4b968874ca169442 100644 |
--- a/chrome/renderer/printing/print_web_view_helper.cc |
+++ b/chrome/renderer/printing/print_web_view_helper.cc |
@@ -820,7 +820,12 @@ void PrintWebViewHelper::DidStartLoading() { |
void PrintWebViewHelper::DidStopLoading() { |
is_loading_ = false; |
- ShowScriptedPrintPreview(); |
+ if (request_print_preview_closure_.is_null()) { |
+ ShowScriptedPrintPreview(); |
Vitaly Buka (NO REVIEWS)
2014/08/05 06:05:06
please remove ShowScriptedPrintPreview() from here
ivandavid
2014/08/05 19:30:17
Done.
|
+ } else { |
+ request_print_preview_closure_.Run(); |
+ request_print_preview_closure_.Reset(); |
+ } |
} |
// Prints |frame| which called window.print(). |
@@ -1725,6 +1730,17 @@ void PrintWebViewHelper::RequestPrintPreview(PrintPreviewRequestType type) { |
return; |
} |
case PRINT_PREVIEW_USER_INITIATED_ENTIRE_FRAME: { |
ivandavid
2014/07/29 20:02:51
I encountered a similar problem to the one describ
Vitaly Buka (NO REVIEWS)
2014/08/05 05:49:57
My understanding is that it's by design.
is_loadin
ivandavid
2014/08/05 19:30:17
Done.
|
+ // If |is_loading_| is true and the function proceeds, Print Preview will |
+ // hang. Save |type| and call this function when DidStopLoading() is |
+ // called, ie. right when |is_loading_| is set to false. |
+ if (is_loading_) { |
+ request_print_preview_closure_ = |
+ base::Bind(&PrintWebViewHelper::RequestPrintPreview, |
+ base::Unretained(this), |
+ type); |
+ return; |
+ } |
+ |
break; |
} |
case PRINT_PREVIEW_USER_INITIATED_SELECTION: { |