Home | History | Annotate | Download | only in browser
      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