Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(679)

Side by Side Diff: content/browser/frame_host/render_frame_host_manager_browsertest.cc

Issue 1159143008: Fix wrong initialization of renderer_initiated_creation parameter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: adding check Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <set> 5 #include <set>
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/json/json_reader.h" 8 #include "base/json/json_reader.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/path_service.h" 10 #include "base/path_service.h"
(...skipping 1788 matching lines...) Expand 10 before | Expand all | Expand 10 after
1799 RenderFrameHostDestructionObserver rfh_observer(root->current_frame_host()); 1799 RenderFrameHostDestructionObserver rfh_observer(root->current_frame_host());
1800 NavigateToURL(shell(), cross_site_url); 1800 NavigateToURL(shell(), cross_site_url);
1801 rfh_observer.Wait(); 1801 rfh_observer.Wait();
1802 1802
1803 EXPECT_NE(orig_site_instance_id, 1803 EXPECT_NE(orig_site_instance_id,
1804 root->current_frame_host()->GetSiteInstance()->GetId()); 1804 root->current_frame_host()->GetSiteInstance()->GetId());
1805 EXPECT_FALSE(RenderFrameHost::FromID(initial_process_id, initial_rfh_id)); 1805 EXPECT_FALSE(RenderFrameHost::FromID(initial_process_id, initial_rfh_id));
1806 EXPECT_FALSE(RenderViewHost::FromID(initial_process_id, initial_rvh_id)); 1806 EXPECT_FALSE(RenderViewHost::FromID(initial_process_id, initial_rvh_id));
1807 } 1807 }
1808 1808
1809 // This class ensures that all RenderFrameCreated callbacks have processes with
1810 // IPC channels.
1811 class RenderFrameCreatedHasConnectionObserver : public WebContentsObserver {
1812 public:
1813 explicit RenderFrameCreatedHasConnectionObserver(WebContents* web_contents)
1814 : WebContentsObserver(web_contents) {}
1815 ~RenderFrameCreatedHasConnectionObserver() override {}
1816
1817 private:
1818 // WebContentsObserver implementation:
1819 void RenderFrameCreated(RenderFrameHost* render_frame_host) override {
1820 EXPECT_TRUE(render_frame_host->GetProcess()->HasConnection());
1821 EXPECT_TRUE(static_cast<RenderFrameHostImpl*>(render_frame_host)
1822 ->IsRenderFrameLive());
ncarter (slow) 2015/06/04 18:20:46 Rather than opening up WebContentsObserver so that
1823 }
1824 };
1825
1826 // This class installs the RenderFrameCreatedHasConnectionObserver when the
1827 // new WebContents is created.
1828 class InstallRFCObserver : public WebContentsAddedObserver {
1829 public:
1830 InstallRFCObserver() : rfco_(nullptr) {}
1831 ~InstallRFCObserver() override { delete rfco_; }
1832
1833 private:
1834 void WebContentsCreated(WebContents* web_contents) override {
1835 rfco_ = new RenderFrameCreatedHasConnectionObserver(web_contents);
1836
1837 WebContentsAddedObserver::WebContentsCreated(web_contents);
1838 }
1839
1840 RenderFrameCreatedHasConnectionObserver* rfco_;
1841 };
1842
1843 // Following a cross-site link with rel=noreferrer and target=_blank should
1844 // fire RenderFrameCreated only after the process is created.
1845 IN_PROC_BROWSER_TEST_F(RenderFrameHostManagerTest,
1846 RenderFrameCreatedWithRelNoreferrerAndTargetBlank) {
1847 StartServer();
1848
1849 // Load a page with links that open in a new window.
1850 std::string replacement_path;
1851 ASSERT_TRUE(GetFilePathWithHostAndPortReplacement(
1852 "files/click-noreferrer-links.html",
1853 foo_host_port_,
1854 &replacement_path));
1855 NavigateToURL(shell(), test_server()->GetURL(replacement_path));
1856
1857 // Test clicking a rel=noreferrer + target=blank link.
1858 InstallRFCObserver web_contents_observer;
1859 bool success = false;
1860 EXPECT_TRUE(ExecuteScriptAndExtractBool(
1861 shell()->web_contents(),
1862 "window.domAutomationController.send(clickNoRefTargetBlankLink());",
1863 &success));
1864 EXPECT_TRUE(success);
1865
1866 // Wait for the WebContents to be created.
1867 WebContentsImpl* new_web_contents =
1868 static_cast<WebContentsImpl*>(web_contents_observer.GetWebContents());
1869
1870 // Wait for the cross-site transition in the new tab to finish.
1871 WaitForLoadStop(new_web_contents);
1872 EXPECT_EQ("/files/title2.html", new_web_contents->GetVisibleURL().path());
1873 }
1874
1809 } // namespace content 1875 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/render_frame_host_impl.cc ('k') | content/browser/web_contents/web_contents_impl.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698