| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 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 "content/common/sandbox_mac.h" | 5 #include "content/common/sandbox_mac.h" |
| 6 | 6 |
| 7 #import <Cocoa/Cocoa.h> | 7 #import <Cocoa/Cocoa.h> |
| 8 #include <stddef.h> | 8 #include <stddef.h> |
| 9 #include <stdint.h> | 9 #include <stdint.h> |
| 10 | 10 |
| (...skipping 23 matching lines...) Expand all Loading... |
| 34 #include "base/sys_info.h" | 34 #include "base/sys_info.h" |
| 35 #include "content/grit/content_resources.h" | 35 #include "content/grit/content_resources.h" |
| 36 #include "content/public/common/content_client.h" | 36 #include "content/public/common/content_client.h" |
| 37 #include "content/public/common/content_switches.h" | 37 #include "content/public/common/content_switches.h" |
| 38 #include "media/gpu/vt_video_decode_accelerator_mac.h" | 38 #include "media/gpu/vt_video_decode_accelerator_mac.h" |
| 39 #include "sandbox/mac/sandbox_compiler.h" | 39 #include "sandbox/mac/sandbox_compiler.h" |
| 40 #include "third_party/icu/source/common/unicode/uchar.h" | 40 #include "third_party/icu/source/common/unicode/uchar.h" |
| 41 #include "ui/base/layout.h" | 41 #include "ui/base/layout.h" |
| 42 #include "ui/gl/init/gl_factory.h" | 42 #include "ui/gl/init/gl_factory.h" |
| 43 | 43 |
| 44 extern "C" { | |
| 45 void CGSSetDenyWindowServerConnections(bool); | |
| 46 void CGSShutdownServerConnections(); | |
| 47 OSStatus SetApplicationIsDaemon(Boolean isDaemon); | |
| 48 }; | |
| 49 | |
| 50 namespace content { | 44 namespace content { |
| 51 namespace { | 45 namespace { |
| 52 | 46 |
| 53 // Is the sandbox currently active. | 47 // Is the sandbox currently active. |
| 54 bool gSandboxIsActive = false; | 48 bool gSandboxIsActive = false; |
| 55 | 49 |
| 56 struct SandboxTypeToResourceIDMapping { | 50 struct SandboxTypeToResourceIDMapping { |
| 57 SandboxType sandbox_type; | 51 SandboxType sandbox_type; |
| 58 int sandbox_profile_resource_id; | 52 int sandbox_profile_resource_id; |
| 59 }; | 53 }; |
| (...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 167 | 161 |
| 168 // Preload VideoToolbox. | 162 // Preload VideoToolbox. |
| 169 media::InitializeVideoToolbox(); | 163 media::InitializeVideoToolbox(); |
| 170 } | 164 } |
| 171 | 165 |
| 172 if (sandbox_type == SANDBOX_TYPE_PPAPI) { | 166 if (sandbox_type == SANDBOX_TYPE_PPAPI) { |
| 173 // Preload AppKit color spaces used for Flash/ppapi. http://crbug.com/348304 | 167 // Preload AppKit color spaces used for Flash/ppapi. http://crbug.com/348304 |
| 174 NSColor* color = [NSColor controlTextColor]; | 168 NSColor* color = [NSColor controlTextColor]; |
| 175 [color colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; | 169 [color colorUsingColorSpaceName:NSCalibratedRGBColorSpace]; |
| 176 } | 170 } |
| 177 | |
| 178 if (sandbox_type == SANDBOX_TYPE_RENDERER) { | |
| 179 // Now disconnect from WindowServer, after all objects have been warmed up. | |
| 180 // Shutting down the connection requires connecting to WindowServer, | |
| 181 // so do this before actually engaging the sandbox. This may cause two log | |
| 182 // messages to be printed to the system logger on certain OS versions. | |
| 183 CGSSetDenyWindowServerConnections(true); | |
| 184 CGSShutdownServerConnections(); | |
| 185 | |
| 186 // Allow the process to continue without a LaunchServices ASN. The | |
| 187 // INIT_Process function in HIServices will abort if it cannot connect to | |
| 188 // launchservicesd to get an ASN. By setting this flag, HIServices skips | |
| 189 // that. | |
| 190 SetApplicationIsDaemon(true); | |
| 191 } | |
| 192 } | 171 } |
| 193 | 172 |
| 194 // Load the appropriate template for the given sandbox type. | 173 // Load the appropriate template for the given sandbox type. |
| 195 // Returns the template as a string or an empty string on error. | 174 // Returns the template as a string or an empty string on error. |
| 196 std::string LoadSandboxTemplate(int sandbox_type) { | 175 std::string LoadSandboxTemplate(int sandbox_type) { |
| 197 // We use a custom sandbox definition to lock things down as tightly as | 176 // We use a custom sandbox definition to lock things down as tightly as |
| 198 // possible. | 177 // possible. |
| 199 int sandbox_profile_resource_id = -1; | 178 int sandbox_profile_resource_id = -1; |
| 200 | 179 |
| 201 // Find resource id for sandbox profile to use for the specific sandbox type. | 180 // Find resource id for sandbox profile to use for the specific sandbox type. |
| (...skipping 122 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 324 if (HANDLE_EINTR(fcntl(fd.get(), F_GETPATH, canonical_path)) != 0) { | 303 if (HANDLE_EINTR(fcntl(fd.get(), F_GETPATH, canonical_path)) != 0) { |
| 325 DPLOG(FATAL) << "GetCanonicalSandboxPath() failed for: " | 304 DPLOG(FATAL) << "GetCanonicalSandboxPath() failed for: " |
| 326 << path.value(); | 305 << path.value(); |
| 327 return path; | 306 return path; |
| 328 } | 307 } |
| 329 | 308 |
| 330 return base::FilePath(canonical_path); | 309 return base::FilePath(canonical_path); |
| 331 } | 310 } |
| 332 | 311 |
| 333 } // namespace content | 312 } // namespace content |
| OLD | NEW |