Skip to content

Commit

Permalink
Remove code to cancel prerender when webpage calls window.print
Browse files Browse the repository at this point in the history
This is no longer needed since NoStatePrefetch does not run JavaScript
and it's not possible for webpage to call window.print during
NoStatePrefetch.

Change-Id: I28e26bf24c9c54334ec1eb5ba5bcdf7717c13617
Bug: 755936
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/1961580
Reviewed-by: Daniel Cheng <dcheng@chromium.org>
Reviewed-by: Ryan Sturm <ryansturm@chromium.org>
Reviewed-by: Bo <boliu@chromium.org>
Reviewed-by: Sami Kyöstilä <skyostil@chromium.org>
Reviewed-by: Tarun Bansal <tbansal@chromium.org>
Reviewed-by: Robert Ogden <robertogden@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Commit-Queue: Tarun Bansal <tbansal@chromium.org>
Cr-Commit-Position: refs/heads/master@{#725592}
  • Loading branch information
Tarun Bansal authored and Commit Bot committed Dec 17, 2019
1 parent 4ee2c2c commit 5eb3329
Show file tree
Hide file tree
Showing 16 changed files with 2 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,6 @@ AwPrintRenderFrameHelperDelegate::AwPrintRenderFrameHelperDelegate() = default;

AwPrintRenderFrameHelperDelegate::~AwPrintRenderFrameHelperDelegate() = default;

bool AwPrintRenderFrameHelperDelegate::CancelPrerender(
content::RenderFrame* render_frame) {
return false;
}

blink::WebElement AwPrintRenderFrameHelperDelegate::GetPdfElement(
blink::WebLocalFrame* frame) {
return blink::WebElement();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ class AwPrintRenderFrameHelperDelegate

private:
// printing::PrintRenderFrameHelper::Delegate:
bool CancelPrerender(content::RenderFrame* render_frame) override;
blink::WebElement GetPdfElement(blink::WebLocalFrame* frame) override;
bool IsPrintPreviewEnabled() override;
bool IsScriptedPrintEnabled() override;
Expand Down
7 changes: 0 additions & 7 deletions chrome/browser/prerender/prerender_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1567,13 +1567,6 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderSSLErrorTopLevel) {
PrerenderTestURL(https_url, FINAL_STATUS_SSL_ERROR, 0);
}

// Checks that we cancel correctly when window.print() is called.
IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, PrerenderPrint) {
DisableLoadEventCheck();
PrerenderTestURL("/prerender/prerender_print.html", FINAL_STATUS_WINDOW_PRINT,
0);
}

class TestClientCertStore : public net::ClientCertStore {
public:
explicit TestClientCertStore(const net::CertificateList& certs)
Expand Down
4 changes: 0 additions & 4 deletions chrome/browser/prerender/prerender_contents.cc
Original file line number Diff line number Diff line change
Expand Up @@ -732,10 +732,6 @@ void PrerenderContents::PrepareForUse() {
NotifyPrerenderStop();
}

void PrerenderContents::CancelPrerenderForPrinting() {
Destroy(FINAL_STATUS_WINDOW_PRINT);
}

void PrerenderContents::CancelPrerenderForUnsupportedMethod() {
Destroy(FINAL_STATUS_INVALID_HTTP_METHOD);
}
Expand Down
1 change: 0 additions & 1 deletion chrome/browser/prerender/prerender_contents.h
Original file line number Diff line number Diff line change
Expand Up @@ -292,7 +292,6 @@ class PrerenderContents : public content::NotificationObserver,
std::unique_ptr<memory_instrumentation::GlobalMemoryDump> dump);

// chrome::mojom::PrerenderCanceler:
void CancelPrerenderForPrinting() override;
void CancelPrerenderForUnsupportedMethod() override;
void CancelPrerenderForUnsupportedScheme(const GURL& url) override;
void CancelPrerenderForSyncDeferredRedirect() override;
Expand Down
2 changes: 1 addition & 1 deletion chrome/browser/prerender/prerender_final_status.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ enum FinalStatus {
FINAL_STATUS_RENDERER_CRASHED = 21,
FINAL_STATUS_UNSUPPORTED_SCHEME = 22,
FINAL_STATUS_INVALID_HTTP_METHOD = 23,
FINAL_STATUS_WINDOW_PRINT = 24,
// Obsolete: FINAL_STATUS_WINDOW_PRINT = 24,
FINAL_STATUS_RECENTLY_VISITED = 25,
FINAL_STATUS_WINDOW_OPENER = 26,
// Obsolete: FINAL_STATUS_PAGE_ID_CONFLICT = 27,
Expand Down
5 changes: 0 additions & 5 deletions chrome/common/prerender.mojom
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,6 @@ module chrome.mojom;
import "url/mojom/url.mojom";

interface PrerenderCanceler {
// Message sent from the renderer to the browser to notify it of a
// window.print() call which should cancel the prerender. The message is sent
// only when the renderer is prerendering.
CancelPrerenderForPrinting();

// Cancels prerendering because of an unsupported method.
CancelPrerenderForUnsupportedMethod();

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,9 +9,7 @@
#include "base/command_line.h"
#include "base/strings/string_util.h"
#include "chrome/common/chrome_switches.h"
#include "chrome/common/prerender.mojom.h"
#include "chrome/common/url_constants.h"
#include "chrome/renderer/prerender/prerender_helper.h"
#include "content/public/renderer/render_frame.h"
#include "extensions/buildflags/buildflags.h"
#include "mojo/public/cpp/bindings/remote.h"
Expand All @@ -32,18 +30,6 @@ ChromePrintRenderFrameHelperDelegate::ChromePrintRenderFrameHelperDelegate() =
ChromePrintRenderFrameHelperDelegate::~ChromePrintRenderFrameHelperDelegate() =
default;

bool ChromePrintRenderFrameHelperDelegate::CancelPrerender(
content::RenderFrame* render_frame) {
if (!prerender::PrerenderHelper::IsPrerendering(render_frame))
return false;

mojo::Remote<chrome::mojom::PrerenderCanceler> canceler;
render_frame->GetBrowserInterfaceBroker()->GetInterface(
canceler.BindNewPipeAndPassReceiver());
canceler->CancelPrerenderForPrinting();
return true;
}

// Return the PDF object element if |frame| is the out of process PDF extension.
blink::WebElement ChromePrintRenderFrameHelperDelegate::GetPdfElement(
blink::WebLocalFrame* frame) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ class ChromePrintRenderFrameHelperDelegate

private:
// printing::PrintRenderFrameHelper::Delegate:
bool CancelPrerender(content::RenderFrame* render_frame) override;
blink::WebElement GetPdfElement(blink::WebLocalFrame* frame) override;
bool IsPrintPreviewEnabled() override;
bool OverridePrint(blink::WebLocalFrame* frame) override;
Expand Down
10 changes: 0 additions & 10 deletions chrome/test/data/prerender/prerender_print.html

This file was deleted.

4 changes: 0 additions & 4 deletions components/printing/renderer/print_render_frame_helper.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1141,10 +1141,6 @@ void PrintRenderFrameHelper::DidFinishLoad() {
}

void PrintRenderFrameHelper::ScriptedPrint(bool user_initiated) {
// Allow Prerendering to cancel this print request if necessary.
if (delegate_->CancelPrerender(render_frame()))
return;

blink::WebLocalFrame* web_frame = render_frame()->GetWebFrame();
if (!IsScriptInitiatedPrintAllowed(web_frame, user_initiated))
return;
Expand Down
4 changes: 0 additions & 4 deletions components/printing/renderer/print_render_frame_helper.h
Original file line number Diff line number Diff line change
Expand Up @@ -97,10 +97,6 @@ class PrintRenderFrameHelper
public:
virtual ~Delegate() {}

// Cancels prerender if it's currently in progress and returns true if the
// cancellation succeeded.
virtual bool CancelPrerender(content::RenderFrame* render_frame) = 0;

// Returns the element to be printed. Returns a null WebElement if
// a pdf plugin element can't be extracted from the frame.
virtual blink::WebElement GetPdfElement(blink::WebLocalFrame* frame) = 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,6 @@ class PrintRenderFrameHelperDelegate : public PrintRenderFrameHelper::Delegate {
public:
~PrintRenderFrameHelperDelegate() override {}

bool CancelPrerender(content::RenderFrame* render_frame) override {
return false;
}
blink::WebElement GetPdfElement(blink::WebLocalFrame* frame) override {
return blink::WebElement();
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,6 @@ HeadlessPrintRenderFrameHelperDelegate::
HeadlessPrintRenderFrameHelperDelegate::
~HeadlessPrintRenderFrameHelperDelegate() = default;

bool HeadlessPrintRenderFrameHelperDelegate::CancelPrerender(
content::RenderFrame* render_frame) {
return false;
}

blink::WebElement HeadlessPrintRenderFrameHelperDelegate::GetPdfElement(
blink::WebLocalFrame* frame) {
return blink::WebElement();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@ class HeadlessPrintRenderFrameHelperDelegate

private:
// printing::PrintRenderFrameHelper::Delegate:
bool CancelPrerender(content::RenderFrame* render_frame) override;
bool IsPrintPreviewEnabled() override;
bool OverridePrint(blink::WebLocalFrame* frame) override;
blink::WebElement GetPdfElement(blink::WebLocalFrame* frame) override;
Expand Down
2 changes: 1 addition & 1 deletion tools/metrics/histograms/enums.xml
Original file line number Diff line number Diff line change
Expand Up @@ -50845,7 +50845,7 @@ Called by update_net_trust_anchors.py.-->
<int value="21" label="RENDERER_CRASHED"/>
<int value="22" label="UNSUPPORTED_SCHEME"/>
<int value="23" label="INVALID_HTTP_METHOD"/>
<int value="24" label="WINDOW_PRINT"/>
<int value="24" label="WINDOW_PRINT (Obsolete)"/>
<int value="25" label="RECENTLY_VISITED"/>
<int value="26" label="WINDOW_OPENER"/>
<int value="27" label="PAGE_ID_CONFLICT"/>
Expand Down

0 comments on commit 5eb3329

Please sign in to comment.