| Index: content/renderer/renderer_main_platform_delegate_mac.mm
|
| diff --git a/content/renderer/renderer_main_platform_delegate_mac.mm b/content/renderer/renderer_main_platform_delegate_mac.mm
|
| index df47f3d0e1072629559b5cea71258d4e54c18af5..7c42727ad32b3661c81a5411657622d9ca17748e 100644
|
| --- a/content/renderer/renderer_main_platform_delegate_mac.mm
|
| +++ b/content/renderer/renderer_main_platform_delegate_mac.mm
|
| @@ -10,8 +10,6 @@
|
|
|
| #include "base/command_line.h"
|
| #include "base/logging.h"
|
| -#import "base/mac/foundation_util.h"
|
| -#import "base/mac/mac_util.h"
|
| #include "base/mac/scoped_cftyperef.h"
|
| #include "base/strings/string_number_conversions.h"
|
| #include "base/strings/sys_string_conversions.h"
|
| @@ -19,56 +17,11 @@
|
| #include "content/public/common/content_switches.h"
|
| #import "content/public/common/injection_test_mac.h"
|
| #include "content/common/sandbox_init_mac.h"
|
| -#include "third_party/mach_override/mach_override.h"
|
| -
|
| -extern "C" {
|
| -// SPI logging functions for CF that are exported externally.
|
| -void CFLog(int32_t level, CFStringRef format, ...);
|
| -void _CFLogvEx(void* log_func, void* copy_desc_func,
|
| - CFDictionaryRef format_options, int32_t level,
|
| - CFStringRef format, va_list args);
|
| -} // extern "C"
|
|
|
| namespace content {
|
|
|
| namespace {
|
|
|
| -// This leaked array stores the text input services input and layout sources,
|
| -// which is returned in CrTISCreateInputSourceList(). This list is computed
|
| -// right after the sandbox is initialized.
|
| -CFArrayRef g_text_input_services_source_list_ = NULL;
|
| -
|
| -CFArrayRef CrTISCreateInputSourceList(
|
| - CFDictionaryRef properties,
|
| - Boolean includeAllInstalled) {
|
| - DCHECK(g_text_input_services_source_list_);
|
| - // Callers assume ownership of the result, so increase the retain count.
|
| - CFRetain(g_text_input_services_source_list_);
|
| - return g_text_input_services_source_list_;
|
| -}
|
| -
|
| -// Text Input Services expects to be able to XPC to HIServices, but the
|
| -// renderer sandbox blocks that. TIS then becomes very vocal about this on
|
| -// every new renderer startup, so filter out those log messages.
|
| -void CrRendererCFLog(int32_t level, CFStringRef format, ...) {
|
| - const CFStringRef kAnnoyingLogMessages[] = {
|
| - CFSTR("Error received in message reply handler: %s\n"),
|
| - CFSTR("Connection Invalid error for service %s.\n"),
|
| - };
|
| -
|
| - for (size_t i = 0; i < arraysize(kAnnoyingLogMessages); ++i) {
|
| - if (CFStringCompare(format, kAnnoyingLogMessages[i], 0) ==
|
| - kCFCompareEqualTo) {
|
| - return;
|
| - }
|
| - }
|
| -
|
| - va_list args;
|
| - va_start(args, format);
|
| - _CFLogvEx(NULL, NULL, NULL, level, format, args);
|
| - va_end(args);
|
| -}
|
| -
|
| // You are about to read a pretty disgusting hack. In a static initializer,
|
| // CoreFoundation decides to connect with cfprefsd(8) using Mach IPC. There is
|
| // no public way to close this Mach port after-the-fact, nor a way to stop it
|
| @@ -164,10 +117,6 @@ RendererMainPlatformDelegate::~RendererMainPlatformDelegate() {
|
| // running a renderer needs to also be reflected in chrome_main.cc for
|
| // --single-process support.
|
| void RendererMainPlatformDelegate::PlatformInitialize() {
|
| - // Initialize NSApplication up front. Without this call, drawing of
|
| - // native UI elements (e.g. buttons) in WebKit will explode.
|
| - [NSApplication sharedApplication];
|
| -
|
| if (![NSThread isMultiThreaded]) {
|
| NSString* string = @"";
|
| [NSThread detachNewThreadSelector:@selector(length)
|
| @@ -209,51 +158,12 @@ bool RendererMainPlatformDelegate::InitSandboxTests(bool no_sandbox) {
|
| }
|
|
|
| bool RendererMainPlatformDelegate::EnableSandbox() {
|
| - // rdar://9251340 http://openradar.me/9251340
|
| - // See http://crbug.com/31225 and http://crbug.com/152566
|
| - // To check if this is broken:
|
| - // 1. Enable Multi language input (simplified chinese)
|
| - // 2. Ensure "Show/Hide Trackpad Handwriting" shortcut works.
|
| - // (ctrl+shift+space).
|
| - // 3. Now open a new tab in Google Chrome or start Google Chrome
|
| - // 4. Try ctrl+shift+space shortcut again. Shortcut will not work, IME will
|
| - // either not appear or (worse) not disappear on ctrl-shift-space.
|
| - // (Run `ps aux | grep Chinese` (10.6/10.7) or `ps aux | grep Trackpad`
|
| - // and then kill that pid to make it go away.)
|
| - //
|
| - // Chinese Handwriting was introduced in 10.6 and is confirmed broken on
|
| - // 10.6, 10.7, and 10.8. It's fixed on 10.9.
|
| - bool needs_ime_hack = base::mac::IsOSMountainLionOrEarlier();
|
| -
|
| - if (needs_ime_hack) {
|
| - mach_error_t err = mach_override_ptr(
|
| - (void*)&TISCreateInputSourceList,
|
| - (void*)&CrTISCreateInputSourceList,
|
| - NULL);
|
| - CHECK_EQ(err_none, err);
|
| -
|
| - // Override the private CFLog function so that the console is not spammed
|
| - // by TIS failing to connect to HIServices over XPC.
|
| - err = mach_override_ptr((void*)&CFLog, (void*)&CrRendererCFLog, NULL);
|
| - CHECK_EQ(err_none, err);
|
| - }
|
| -
|
| // Enable the sandbox.
|
| bool sandbox_initialized = InitializeSandbox();
|
|
|
| - if (needs_ime_hack) {
|
| - // After the sandbox is initialized, call into TIS. Doing this before
|
| - // the sandbox is in place will open up renderer access to the
|
| - // pasteboard and an XPC connection to "com.apple.hiservices-xpcservice".
|
| - base::ScopedCFTypeRef<TISInputSourceRef> layout_source(
|
| - TISCopyCurrentKeyboardLayoutInputSource());
|
| - base::ScopedCFTypeRef<TISInputSourceRef> input_source(
|
| - TISCopyCurrentKeyboardInputSource());
|
| -
|
| - CFTypeRef source_list[] = { layout_source.get(), input_source.get() };
|
| - g_text_input_services_source_list_ = CFArrayCreate(kCFAllocatorDefault,
|
| - source_list, arraysize(source_list), &kCFTypeArrayCallBacks);
|
| - }
|
| + // The sandbox is now engaged. Make sure that the renderer has not connected
|
| + // itself to Cocoa.
|
| + CHECK(NSApp == nil);
|
|
|
| DisconnectCFNotificationCenter();
|
|
|
|
|