summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authordcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-03 22:18:53 +0000
committerdcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-03 22:18:53 +0000
commit9e9ae7296cfed7bfc612b0e3eeef7ad0c936b1ba (patch)
tree73d554953eec627230c1ac6b4c777eae23e03bc2 /chrome/renderer
parentea8b7b68a7399ce5bbb70c9f950ff2d0c19655b4 (diff)
downloadchromium_src-9e9ae7296cfed7bfc612b0e3eeef7ad0c936b1ba.zip
chromium_src-9e9ae7296cfed7bfc612b0e3eeef7ad0c936b1ba.tar.gz
chromium_src-9e9ae7296cfed7bfc612b0e3eeef7ad0c936b1ba.tar.bz2
Override default implementation of createChildFrame() for print preview.
https://src.chromium.org/viewvc/blink?view=rev&revision=164135 updated Blink to remove a transitional hack that was implemented to help us change the way frame lifetimes were managed. However, as a result, Blink now always assume that createChildFrame() will return a non-null value. WebFrameClients that expect to ever create child frames must override this method and frameDetached() if they don't want to crash. BUG=330994 R=boliu@chromium.org, scottbyer@chromium.org Review URL: https://codereview.chromium.org/122553002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@242941 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/printing/print_web_view_helper.cc17
1 files changed, 15 insertions, 2 deletions
diff --git a/chrome/renderer/printing/print_web_view_helper.cc b/chrome/renderer/printing/print_web_view_helper.cc
index a53c822..525ef71 100644
--- a/chrome/renderer/printing/print_web_view_helper.cc
+++ b/chrome/renderer/printing/print_web_view_helper.cc
@@ -529,9 +529,13 @@ class PrepareFrameAndViewForPrint : public blink::WebViewClient,
// blink::WebViewClient override:
virtual void didStopLoading();
- virtual void CallOnReady();
+ // blink::WebFrameClient override:
+ virtual blink::WebFrame* createChildFrame(blink::WebFrame* parent,
+ const blink::WebString& name);
+ virtual void frameDetached(blink::WebFrame* frame);
private:
+ void CallOnReady();
void ResizeForPrinting();
void RestoreSize();
void CopySelection(const WebPreferences& preferences);
@@ -664,6 +668,16 @@ void PrepareFrameAndViewForPrint::didStopLoading() {
weak_ptr_factory_.GetWeakPtr()));
}
+blink::WebFrame* PrepareFrameAndViewForPrint::createChildFrame(
+ blink::WebFrame* parent,
+ const blink::WebString& name) {
+ return blink::WebFrame::create(this);
+}
+
+void PrepareFrameAndViewForPrint::frameDetached(blink::WebFrame* frame) {
+ frame->close();
+}
+
void PrepareFrameAndViewForPrint::CallOnReady() {
return on_ready_.Run(); // Can delete |this|.
}
@@ -699,7 +713,6 @@ void PrepareFrameAndViewForPrint::FinishPrinting() {
DCHECK(!frame->isLoading());
owns_web_view_ = false;
web_view->close();
- frame->close();
}
}
frame_.Reset(NULL);