diff options
author | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-03 22:18:53 +0000 |
---|---|---|
committer | dcheng@chromium.org <dcheng@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2014-01-03 22:18:53 +0000 |
commit | 9e9ae7296cfed7bfc612b0e3eeef7ad0c936b1ba (patch) | |
tree | 73d554953eec627230c1ac6b4c777eae23e03bc2 /android_webview | |
parent | ea8b7b68a7399ce5bbb70c9f950ff2d0c19655b4 (diff) | |
download | chromium_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 'android_webview')
-rw-r--r-- | android_webview/renderer/print_web_view_helper.cc | 17 |
1 files changed, 15 insertions, 2 deletions
diff --git a/android_webview/renderer/print_web_view_helper.cc b/android_webview/renderer/print_web_view_helper.cc index c22b065..dbf59e1 100644 --- a/android_webview/renderer/print_web_view_helper.cc +++ b/android_webview/renderer/print_web_view_helper.cc @@ -534,9 +534,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); @@ -669,6 +673,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|. } @@ -704,7 +718,6 @@ void PrepareFrameAndViewForPrint::FinishPrinting() { DCHECK(!frame->isLoading()); owns_web_view_ = false; web_view->close(); - frame->close(); } } frame_.Reset(NULL); |