| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include "content/browser/child_process_security_policy_impl.h" |
| #include "content/browser/renderer_host/render_process_host_impl.h" |
| #include "content/public/test/browser_test.h" |
| #include "content/public/test/browser_test_utils.h" |
| #include "content/public/test/content_browser_test.h" |
| #include "content/public/test/content_browser_test_utils.h" |
| #include "content/shell/browser/shell.h" |
| |
| namespace content { |
| |
| class ProcessInternalsWebUiBrowserTest : public ContentBrowserTest {}; |
| |
| // This test verifies that loading of the process-internals WebUI works |
| // correctly and the process rendering it has no WebUI bindings. |
| IN_PROC_BROWSER_TEST_F(ProcessInternalsWebUiBrowserTest, NoProcessBindings) { |
| GURL url("chrome://process-internals/#web-contents"); |
| EXPECT_TRUE(NavigateToURL(shell(), url)); |
| |
| EXPECT_FALSE(ChildProcessSecurityPolicyImpl::GetInstance()->HasWebUIBindings( |
| shell()->web_contents()->GetMainFrame()->GetProcess()->GetID())); |
| |
| // Execute script to ensure the page has loaded correctly and was successful |
| // at retrieving data from the browser process. |
| // Note: This requires using an isolated world in which to execute the |
| // script because WebUI has a default CSP policy denying "eval()", which is |
| // what EvalJs uses under the hood. |
| EXPECT_NE(-1, |
| EvalJs(shell()->web_contents()->GetMainFrame(), |
| "document.body.innerHTML.search('Process Model Internals');", |
| EXECUTE_SCRIPT_DEFAULT_OPTIONS, 1 /* world_id */)); |
| } |
| |
| } // namespace content |