| Index: components/printing/renderer/print_web_view_helper.cc
|
| diff --git a/components/printing/renderer/print_web_view_helper.cc b/components/printing/renderer/print_web_view_helper.cc
|
| index 7e9df81aac57f41ec92577098edb65509a6baf92..7fa310fbb04278eb36ee355b8e1e7079046d808b 100644
|
| --- a/components/printing/renderer/print_web_view_helper.cc
|
| +++ b/components/printing/renderer/print_web_view_helper.cc
|
| @@ -527,11 +527,11 @@
|
| blink::WebView::create(nullptr, blink::WebPageVisibilityStateVisible);
|
| web_view->settings()->setJavaScriptEnabled(true);
|
|
|
| - blink::WebFrameClient frame_client;
|
| - blink::WebLocalFrame* frame = blink::WebLocalFrame::create(
|
| - blink::WebTreeScopeType::Document, &frame_client);
|
| + blink::WebLocalFrame* frame =
|
| + blink::WebLocalFrame::create(blink::WebTreeScopeType::Document, NULL);
|
| web_view->setMainFrame(frame);
|
| - blink::WebFrameWidget::create(nullptr, web_view, frame);
|
| + blink::WebFrameWidget* widget =
|
| + blink::WebFrameWidget::create(nullptr, web_view, frame);
|
|
|
| base::StringValue html(ResourceBundle::GetSharedInstance().GetLocalizedString(
|
| IDR_PRINT_PREVIEW_PAGE));
|
| @@ -561,7 +561,9 @@
|
| frame->printPage(0, canvas);
|
| frame->printEnd();
|
|
|
| + widget->close();
|
| web_view->close();
|
| + frame->close();
|
| }
|
| #endif // defined(ENABLE_PRINT_PREVIEW)
|
|
|
| @@ -618,13 +620,14 @@
|
| bool allowsBrokenNullLayerTreeView() const override;
|
|
|
| // blink::WebFrameClient:
|
| - blink::WebLocalFrame* createChildFrame(
|
| + blink::WebFrame* createChildFrame(
|
| blink::WebLocalFrame* parent,
|
| blink::WebTreeScopeType scope,
|
| const blink::WebString& name,
|
| const blink::WebString& unique_name,
|
| blink::WebSandboxFlags sandbox_flags,
|
| const blink::WebFrameOwnerProperties& frame_owner_properties) override;
|
| + void frameDetached(blink::WebLocalFrame* frame, DetachType type) override;
|
|
|
| void CallOnReady();
|
| void ResizeForPrinting();
|
| @@ -772,16 +775,24 @@
|
| weak_ptr_factory_.GetWeakPtr()));
|
| }
|
|
|
| -blink::WebLocalFrame* PrepareFrameAndViewForPrint::createChildFrame(
|
| +blink::WebFrame* PrepareFrameAndViewForPrint::createChildFrame(
|
| blink::WebLocalFrame* parent,
|
| blink::WebTreeScopeType scope,
|
| const blink::WebString& name,
|
| const blink::WebString& unique_name,
|
| blink::WebSandboxFlags sandbox_flags,
|
| const blink::WebFrameOwnerProperties& frame_owner_properties) {
|
| - blink::WebLocalFrame* frame = blink::WebLocalFrame::create(scope, this);
|
| + blink::WebFrame* frame = blink::WebLocalFrame::create(scope, this);
|
| parent->appendChild(frame);
|
| return frame;
|
| +}
|
| +
|
| +void PrepareFrameAndViewForPrint::frameDetached(blink::WebLocalFrame* frame,
|
| + DetachType type) {
|
| + DCHECK(type == DetachType::Remove);
|
| + if (frame->parent())
|
| + frame->parent()->removeChild(frame);
|
| + frame->close();
|
| }
|
|
|
| void PrepareFrameAndViewForPrint::CallOnReady() {
|
|
|