1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #include <string> 6 7 #include "base/basictypes.h" 8 #include "base/files/file_path.h" 9 #include "content/browser/child_process_security_policy_impl.h" 10 #include "content/browser/web_contents/web_contents_impl.h" 11 #include "content/public/browser/render_process_host.h" 12 #include "content/public/common/result_codes.h" 13 #include "content/public/test/content_browser_test.h" 14 #include "content/public/test/content_browser_test_utils.h" 15 #include "content/shell/browser/shell.h" 16 #include "testing/gtest/include/gtest/gtest.h" 17 18 namespace content { 19 20 class ChildProcessSecurityPolicyInProcessBrowserTest 21 : public ContentBrowserTest { 22 public: 23 virtual void SetUp() { 24 EXPECT_EQ( 25 ChildProcessSecurityPolicyImpl::GetInstance()->security_state_.size(), 26 0U); 27 ContentBrowserTest::SetUp(); 28 } 29 30 virtual void TearDown() { 31 EXPECT_EQ( 32 ChildProcessSecurityPolicyImpl::GetInstance()->security_state_.size(), 33 0U); 34 ContentBrowserTest::TearDown(); 35 } 36 }; 37 38 #if !defined(NDEBUG) && defined(OS_MACOSX) 39 IN_PROC_BROWSER_TEST_F(ChildProcessSecurityPolicyInProcessBrowserTest, DISABLED_NoLeak) { 40 #else 41 IN_PROC_BROWSER_TEST_F(ChildProcessSecurityPolicyInProcessBrowserTest, NoLeak) { 42 #endif 43 GURL url = GetTestUrl("", "simple_page.html"); 44 45 NavigateToURL(shell(), url); 46 EXPECT_EQ( 47 ChildProcessSecurityPolicyImpl::GetInstance()->security_state_.size(), 48 1U); 49 50 WebContents* web_contents = shell()->web_contents(); 51 base::KillProcess(web_contents->GetRenderProcessHost()->GetHandle(), 52 RESULT_CODE_KILLED, true); 53 54 web_contents->GetController().Reload(true); 55 EXPECT_EQ( 56 1U, 57 ChildProcessSecurityPolicyImpl::GetInstance()->security_state_.size()); 58 } 59 60 } // namespace content 61