summaryrefslogtreecommitdiffstats
path: root/chromium/content/browser/preloading/prerender/prerender_browsertest.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/content/browser/preloading/prerender/prerender_browsertest.cc')
-rw-r--r--chromium/content/browser/preloading/prerender/prerender_browsertest.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/chromium/content/browser/preloading/prerender/prerender_browsertest.cc b/chromium/content/browser/preloading/prerender/prerender_browsertest.cc
index ab929fe151b..62984a89bb1 100644
--- a/chromium/content/browser/preloading/prerender/prerender_browsertest.cc
+++ b/chromium/content/browser/preloading/prerender/prerender_browsertest.cc
@@ -8698,4 +8698,45 @@ IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest,
ExpectFinalStatusForSpeculationRule(PrerenderHost::FinalStatus::kActivated);
}
+class UpdateTargetURLDelegate : public WebContentsDelegate {
+ public:
+ explicit UpdateTargetURLDelegate(WebContents* web_contents) {
+ web_contents->SetDelegate(this);
+ }
+
+ UpdateTargetURLDelegate(const UpdateTargetURLDelegate&) = delete;
+ UpdateTargetURLDelegate& operator=(const UpdateTargetURLDelegate&) = delete;
+
+ bool is_updated_target_url() { return is_updated_target_url_; }
+
+ private:
+ void UpdateTargetURL(WebContents* source, const GURL& url) override {
+ is_updated_target_url_ = true;
+ }
+
+ bool is_updated_target_url_ = false;
+};
+
+// Tests that text autosizer works per page.
+IN_PROC_BROWSER_TEST_F(PrerenderBrowserTest, FocusChangeInPrerenderedPage) {
+ const GURL kInitialUrl = GetUrl("/empty.html");
+ const GURL kPrerenderingUrl = GetUrl("/simple_links.html");
+
+ // Navigate to an initial page.
+ ASSERT_TRUE(NavigateToURL(shell(), kInitialUrl));
+
+ int host_id = AddPrerender(kPrerenderingUrl);
+ RenderFrameHostImpl* prerender_frame_host =
+ GetPrerenderedMainFrameHost(host_id);
+
+ UpdateTargetURLDelegate delegate(shell()->web_contents());
+
+ // No crash.
+ EXPECT_TRUE(ExecJs(prerender_frame_host,
+ "document.getElementById('same_site_link').focus();"));
+
+ // The prerendered page should not update the target url.
+ EXPECT_FALSE(delegate.is_updated_target_url());
+}
+
} // namespace content