child_process_security_policy_browsertest.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
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 "base/process_util.h"
10#include "content/browser/child_process_security_policy_impl.h"
11#include "content/browser/web_contents/web_contents_impl.h"
12#include "content/public/browser/render_process_host.h"
13#include "content/public/common/result_codes.h"
14#include "content/shell/shell.h"
15#include "content/test/content_browser_test.h"
16#include "content/test/content_browser_test_utils.h"
17#include "testing/gtest/include/gtest/gtest.h"
18
19namespace content {
20
21class ChildProcessSecurityPolicyInProcessBrowserTest
22    : public ContentBrowserTest {
23 public:
24  virtual void SetUp() {
25    EXPECT_EQ(
26      ChildProcessSecurityPolicyImpl::GetInstance()->security_state_.size(),
27          0U);
28    ContentBrowserTest::SetUp();
29  }
30
31  virtual void TearDown() {
32    EXPECT_EQ(
33      ChildProcessSecurityPolicyImpl::GetInstance()->security_state_.size(),
34          0U);
35    ContentBrowserTest::TearDown();
36  }
37};
38
39#if !defined(NDEBUG) && defined(OS_MACOSX)
40IN_PROC_BROWSER_TEST_F(ChildProcessSecurityPolicyInProcessBrowserTest, DISABLED_NoLeak) {
41#else
42IN_PROC_BROWSER_TEST_F(ChildProcessSecurityPolicyInProcessBrowserTest, NoLeak) {
43#endif
44  GURL url = GetTestUrl("", "simple_page.html");
45
46  NavigateToURL(shell(), url);
47  EXPECT_EQ(
48      ChildProcessSecurityPolicyImpl::GetInstance()->security_state_.size(),
49          1U);
50
51  WebContents* web_contents = shell()->web_contents();
52  base::KillProcess(web_contents->GetRenderProcessHost()->GetHandle(),
53                    RESULT_CODE_KILLED, true);
54
55  web_contents->GetController().Reload(true);
56  EXPECT_EQ(
57      1U,
58      ChildProcessSecurityPolicyImpl::GetInstance()->security_state_.size());
59}
60
61}  // namespace content
62