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

Side by Side Diff: chrome/common/sandbox_mac_unittest_helper.mm

Issue 4380001: Mac Sandbox: Clean up forward declaration of internal sandbox functions. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Cleanup Created 10 years, 1 month 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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 "chrome/common/sandbox_mac_unittest_helper.h" 5 #include "chrome/common/sandbox_mac_unittest_helper.h"
6 6
7 extern "C" { 7 extern "C" {
8 #include <sandbox.h> 8 #include <sandbox.h>
9 } 9 }
10 10
11 #include <map> 11 #include <map>
12 12
13 #include "base/file_path.h" 13 #include "base/file_path.h"
14 #include "base/logging.h" 14 #include "base/logging.h"
15 #include "base/scoped_ptr.h" 15 #include "base/scoped_ptr.h"
16 #include "chrome/common/sandbox_mac.h" 16 #include "chrome/common/sandbox_mac.h"
17 #include "testing/multiprocess_func_list.h" 17 #include "testing/multiprocess_func_list.h"
18 18
19 using sandbox::Sandbox;
20
19 namespace { 21 namespace {
20 22
21 const char* kSandboxTypeKey = "CHROMIUM_SANDBOX_SANDBOX_TYPE"; 23 const char* kSandboxTypeKey = "CHROMIUM_SANDBOX_SANDBOX_TYPE";
22 const char* kSandboxTestNameKey = "CHROMIUM_SANDBOX_TEST_NAME"; 24 const char* kSandboxTestNameKey = "CHROMIUM_SANDBOX_TEST_NAME";
23 const char* kTestDataKey = "CHROMIUM_SANDBOX_USER_DATA"; 25 const char* kTestDataKey = "CHROMIUM_SANDBOX_USER_DATA";
24 26
25 } // namespace 27 } // namespace
26 28
27 namespace sandboxtest { 29 namespace sandboxtest {
28 30
(...skipping 16 matching lines...) Expand all
45 } 47 }
46 test_map[test_name] = test_class; 48 test_map[test_name] = test_class;
47 } 49 }
48 50
49 } // namespace internal 51 } // namespace internal
50 52
51 bool MacSandboxTest:: RunTestInAllSandboxTypes(const char* test_name, 53 bool MacSandboxTest:: RunTestInAllSandboxTypes(const char* test_name,
52 const char* test_data) { 54 const char* test_data) {
53 // Go through all the sandbox types, and run the test case in each of them 55 // Go through all the sandbox types, and run the test case in each of them
54 // if one fails, abort. 56 // if one fails, abort.
55 for(int i = static_cast<int>(sandbox::SANDBOX_TYPE_FIRST_TYPE); 57 for(int i = static_cast<int>(Sandbox::SANDBOX_TYPE_FIRST_TYPE);
56 i < sandbox::SANDBOX_AFTER_TYPE_LAST_TYPE; 58 i < Sandbox::SANDBOX_AFTER_TYPE_LAST_TYPE;
57 ++i) { 59 ++i) {
58 if (!RunTestInSandbox(static_cast<sandbox::SandboxProcessType>(i), 60 if (!RunTestInSandbox(static_cast<Sandbox::SandboxProcessType>(i),
59 test_name, test_data)) { 61 test_name, test_data)) {
60 LOG(ERROR) << "Sandboxed test (" << test_name << ")" << 62 LOG(ERROR) << "Sandboxed test (" << test_name << ")" <<
61 "Failed in sandbox type " << i << 63 "Failed in sandbox type " << i <<
62 "user data: (" << test_data << ")"; 64 "user data: (" << test_data << ")";
63 return false; 65 return false;
64 } 66 }
65 } 67 }
66 return true; 68 return true;
67 } 69 }
68 70
69 bool MacSandboxTest::RunTestInSandbox(sandbox::SandboxProcessType sandbox_type, 71 bool MacSandboxTest::RunTestInSandbox(Sandbox::SandboxProcessType sandbox_type,
70 const char* test_name, 72 const char* test_name,
71 const char* test_data) { 73 const char* test_data) {
72 std::stringstream s; 74 std::stringstream s;
73 s << static_cast<int>(static_cast<int>(sandbox_type)); 75 s << static_cast<int>(static_cast<int>(sandbox_type));
74 setenv(kSandboxTypeKey, s.str().c_str(), 1); 76 setenv(kSandboxTypeKey, s.str().c_str(), 1);
75 setenv(kSandboxTestNameKey, test_name, 1); 77 setenv(kSandboxTestNameKey, test_name, 1);
76 if (test_data) 78 if (test_data)
77 setenv(kTestDataKey, test_data, 1); 79 setenv(kTestDataKey, test_data, 1);
78 80
79 base::ProcessHandle child_process = SpawnChild("mac_sandbox_test_runner", 81 base::ProcessHandle child_process = SpawnChild("mac_sandbox_test_runner",
(...skipping 29 matching lines...) Expand all
109 111
110 // Main function for driver process that enables the sandbox and runs test 112 // Main function for driver process that enables the sandbox and runs test
111 // code. 113 // code.
112 MULTIPROCESS_TEST_MAIN(mac_sandbox_test_runner) { 114 MULTIPROCESS_TEST_MAIN(mac_sandbox_test_runner) {
113 // Extract parameters. 115 // Extract parameters.
114 char* sandbox_type_str = getenv(kSandboxTypeKey); 116 char* sandbox_type_str = getenv(kSandboxTypeKey);
115 if (!sandbox_type_str) { 117 if (!sandbox_type_str) {
116 LOG(ERROR) << "Sandbox type not specified"; 118 LOG(ERROR) << "Sandbox type not specified";
117 return -1; 119 return -1;
118 } 120 }
119 sandbox::SandboxProcessType sandbox_type = 121 Sandbox::SandboxProcessType sandbox_type =
120 static_cast<sandbox::SandboxProcessType>(atoi(sandbox_type_str)); 122 static_cast<Sandbox::SandboxProcessType>(atoi(sandbox_type_str));
121 char* sandbox_test_name = getenv(kSandboxTestNameKey); 123 char* sandbox_test_name = getenv(kSandboxTestNameKey);
122 if (!sandbox_test_name) { 124 if (!sandbox_test_name) {
123 LOG(ERROR) << "Sandbox test name not specified"; 125 LOG(ERROR) << "Sandbox test name not specified";
124 return -1; 126 return -1;
125 } 127 }
126 128
127 const char* test_data = getenv(kTestDataKey); 129 const char* test_data = getenv(kTestDataKey);
128 130
129 // Find Test Function to run; 131 // Find Test Function to run;
130 scoped_ptr<sandboxtest::MacSandboxTestCase> 132 scoped_ptr<sandboxtest::MacSandboxTestCase>
131 test_case(sandboxtest::SandboxTestForName(sandbox_test_name)); 133 test_case(sandboxtest::SandboxTestForName(sandbox_test_name));
132 if (!test_case.get()) { 134 if (!test_case.get()) {
133 LOG(ERROR) << "Invalid sandbox test name (" << sandbox_test_name << ")"; 135 LOG(ERROR) << "Invalid sandbox test name (" << sandbox_test_name << ")";
134 return -1; 136 return -1;
135 } 137 }
136 test_case->SetTestData(test_data); 138 test_case->SetTestData(test_data);
137 139
138 // Run Test. 140 // Run Test.
139 if (!test_case->BeforeSandboxInit()) { 141 if (!test_case->BeforeSandboxInit()) {
140 LOG(ERROR) << sandbox_test_name << "Failed test before sandbox init"; 142 LOG(ERROR) << sandbox_test_name << "Failed test before sandbox init";
141 return -1; 143 return -1;
142 } 144 }
143 145
144 sandbox::SandboxWarmup(); 146 Sandbox::SandboxWarmup();
145 147
146 if (!sandbox::EnableSandbox(sandbox_type, FilePath())) { 148 if (!Sandbox::EnableSandbox(sandbox_type, FilePath())) {
147 LOG(ERROR) << "Failed to initialize sandbox " << sandbox_type; 149 LOG(ERROR) << "Failed to initialize sandbox " << sandbox_type;
148 return -1; 150 return -1;
149 } 151 }
150 152
151 if (!test_case->SandboxedTest()) { 153 if (!test_case->SandboxedTest()) {
152 LOG(ERROR) << sandbox_test_name << "Failed sandboxed test"; 154 LOG(ERROR) << sandbox_test_name << "Failed sandboxed test";
153 return -1; 155 return -1;
154 } 156 }
155 157
156 return 0; 158 return 0;
157 } 159 }
158 160
159 } // namespace 161 } // namespace
OLDNEW
« chrome/common/sandbox_mac.h ('K') | « chrome/common/sandbox_mac_unittest_helper.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698