summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-09 16:23:10 +0000
committerjeremy@chromium.org <jeremy@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-10-09 16:23:10 +0000
commit810d6408e8553435b97151805a9ed48ffe8d610e (patch)
treed62eb1b03094529dcf216d489d566ff0d71a5a39 /chrome/renderer
parent20a4a446ecc18a143d396f6cb7b16414df59cef3 (diff)
downloadchromium_src-810d6408e8553435b97151805a9ed48ffe8d610e.zip
chromium_src-810d6408e8553435b97151805a9ed48ffe8d610e.tar.gz
chromium_src-810d6408e8553435b97151805a9ed48ffe8d610e.tar.bz2
Some fixes to the OS X Sandbox:
* Added a command line option to enable verbose logging in the Sandbox. This will be useful when we start looking at the information in ChromeBot. * Modified the code that splices the homedir path into the Sandbox file. This code is now only used on 10.6 and no longer uses a regex. * Moved sandbox code out into a sandbox_mac file. * Changed 10.6 seed release references -> 10.6 . BUG=21483 TEST=Browser should launch and display NTP correctly on OS X 10.5 & 10.6 Review URL: http://codereview.chromium.org/242165 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@28541 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r--chrome/renderer/renderer.sb12
-rw-r--r--chrome/renderer/renderer_main_platform_delegate_mac.mm103
2 files changed, 10 insertions, 105 deletions
diff --git a/chrome/renderer/renderer.sb b/chrome/renderer/renderer.sb
index 42ca75d..e9f6094 100644
--- a/chrome/renderer/renderer.sb
+++ b/chrome/renderer/renderer.sb
@@ -5,6 +5,8 @@
;;
(version 1)
(deny default)
+; Support for programmatically enabling verbose debugging.
+;ENABLE_LOGGING (debug deny)
; Allow sending signals to self - http://crbug.com/20370
(allow signal (target self))
@@ -14,7 +16,7 @@
; Each line is marked with the System version that needs it.
; This profile is tested with the following system versions:
-; 10.5.6, 10.6 seed release
+; 10.5.6, 10.6
; Allow following symlinks
(allow file-read-metadata) ; 10.5.6
@@ -26,12 +28,12 @@
; Needed for Fonts.
(allow file-read-data (regex #"^/System/Library/Fonts")) ; 10.5.6
-(allow file-read-data (regex #"^/Library/Fonts")) ; 10.6 seed release
+;10.6_ONLY (allow file-read-data (regex #"^/Library/Fonts")) ; 10.6
(allow mach-lookup (global-name "com.apple.FontObjectsServer")) ; 10.5.6
-(allow mach-lookup (global-name "com.apple.FontServer")) ; 10.6 seed release
+;10.6_ONLY (allow mach-lookup (global-name "com.apple.FontServer")) ; 10.6
; USER_HOMEDIR is substitued at runtime - http://crbug.com/11269
-(allow file-read-data (regex #"^USER_HOMEDIR/Library/Fonts")) ; 10.6 seed release
+;10.6_ONLY (allow file-read-data (subpath "USER_HOMEDIR/Library/Fonts")) ; 10.6
; Needed for IPC on 10.6
-(allow ipc-posix-shm)
+;10.6_ONLY (allow ipc-posix-shm)
diff --git a/chrome/renderer/renderer_main_platform_delegate_mac.mm b/chrome/renderer/renderer_main_platform_delegate_mac.mm
index 247c261..4a5475e 100644
--- a/chrome/renderer/renderer_main_platform_delegate_mac.mm
+++ b/chrome/renderer/renderer_main_platform_delegate_mac.mm
@@ -4,20 +4,9 @@
#include "chrome/renderer/renderer_main_platform_delegate.h"
-#include "base/debug_util.h"
-
-#import <Foundation/Foundation.h>
-#import <ApplicationServices/ApplicationServices.h>
#import <Cocoa/Cocoa.h>
-extern "C" {
-#include <sandbox.h>
-}
-#include "base/mac_util.h"
-#include "base/scoped_cftyperef.h"
-#include "base/scoped_nsautorelease_pool.h"
-#include "base/sys_info.h"
-#include "chrome/common/chrome_switches.h"
+#include "chrome/common/sandbox_mac.h"
#include "third_party/WebKit/WebKit/mac/WebCoreSupport/WebSystemInterface.h"
RendererMainPlatformDelegate::RendererMainPlatformDelegate(
@@ -28,65 +17,6 @@ RendererMainPlatformDelegate::RendererMainPlatformDelegate(
RendererMainPlatformDelegate::~RendererMainPlatformDelegate() {
}
-// Warmup System APIs that empirically need to be accessed before the Sandbox
-// is turned on.
-// This method is layed out in blocks, each one containing a separate function
-// that needs to be warmed up. The OS version on which we found the need to
-// enable the function is also noted.
-// This function is tested on the following OS versions:
-// 10.5.6, 10.6 seed release
-void SandboxWarmup() {
- base::ScopedNSAutoreleasePool scoped_pool;
-
- { // CGColorSpaceCreateWithName(), CGBitmapContextCreate() - 10.5.6
- scoped_cftyperef<CGColorSpaceRef> rgb_colorspace(
- CGColorSpaceCreateWithName(kCGColorSpaceGenericRGB));
-
- // Allocate a 1x1 image.
- char data[4];
- scoped_cftyperef<CGContextRef> context(
- CGBitmapContextCreate(data, 1, 1, 8, 1 * 4,
- rgb_colorspace,
- kCGImageAlphaPremultipliedFirst |
- kCGBitmapByteOrder32Host));
-
- // Load in the color profiles we'll need (as a side effect).
- (void) mac_util::GetSRGBColorSpace();
- (void) mac_util::GetSystemColorSpace();
-
- // CGColorSpaceCreateSystemDefaultCMYK - 10.6
- scoped_cftyperef<CGColorSpaceRef> cmyk_colorspace(
- CGColorSpaceCreateWithName(kCGColorSpaceGenericCMYK));
- }
-
- { // [-NSColor colorUsingColorSpaceName] - 10.5.6
- NSColor* color = [NSColor controlTextColor];
- [color colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
- }
-
- { // localtime() - 10.5.6
- time_t tv = {0};
- localtime(&tv);
- }
-
- { // Gestalt() tries to read /System/Library/CoreServices/SystemVersion.plist
- // on 10.5.6
- int32 tmp;
- base::SysInfo::OperatingSystemVersionNumbers(&tmp, &tmp, &tmp);
- }
-
- { // CGImageSourceGetStatus() - 10.6 seed release.
- // Create a png with just enough data to get everything warmed up...
- char png_header[] = {0x89, 0x50, 0x4E, 0x47, 0x0D, 0x0A, 0x1A, 0x0A};
- NSData* data = [NSData dataWithBytes:png_header
- length:arraysize(png_header)];
- scoped_cftyperef<CGImageSourceRef> img(
- CGImageSourceCreateWithData((CFDataRef)data,
- NULL));
- CGImageSourceGetStatus(img);
- }
-}
-
// TODO(mac-port): Any code needed to initialize a process for
// purposes of running a renderer needs to also be reflected in
// chrome_dll_main.cc for --single-process support.
@@ -95,7 +25,7 @@ void RendererMainPlatformDelegate::PlatformInitialize() {
InitWebCoreSystemInterface();
// Warmup APIs before turning on the Sandbox.
- SandboxWarmup();
+ sandbox::SandboxWarmup();
if (![NSThread isMultiThreaded]) {
NSString* string = @"";
@@ -117,34 +47,7 @@ bool RendererMainPlatformDelegate::InitSandboxTests(bool no_sandbox) {
}
bool RendererMainPlatformDelegate::EnableSandbox() {
- // For the renderer, we give it a custom sandbox to lock things down as
- // tightly as possible, while still enabling drawing.
- NSString* sandbox_profile_path =
- [mac_util::MainAppBundle() pathForResource:@"renderer" ofType:@"sb"];
- NSString* sandbox_data = [NSString
- stringWithContentsOfFile:sandbox_profile_path
- encoding:NSUTF8StringEncoding
- error:nil];
-
- if (!sandbox_data) {
- LOG(ERROR) << "Failed to find the sandbox profile on disk";
- return false;
- }
-
- // Splice the path of the user's home directory into the sandbox profile
- // (see renderer.sb for details).
- sandbox_data = [sandbox_data
- stringByReplacingOccurrencesOfString:@"USER_HOMEDIR"
- withString:NSHomeDirectory()];
-
- char* error_buff = NULL;
- int error = sandbox_init([sandbox_data UTF8String], 0, &error_buff);
- bool success = (error == 0 && error_buff == NULL);
- if (error == -1) {
- LOG(ERROR) << "Failed to Initialize Sandbox: " << error_buff;
- }
- sandbox_free_error(error_buff);
- return success;
+ return sandbox::EnableSandbox();
}
void RendererMainPlatformDelegate::RunSandboxTests() {