Index: chrome/browser/ui/cocoa/custom_frame_view.mm |
diff --git a/chrome/browser/ui/cocoa/custom_frame_view.mm b/chrome/browser/ui/cocoa/custom_frame_view.mm |
index 47b46ed2746f8a4b39c0ac2e310171adf3e94e63..2db6103c14ebf3b6f2e4d49efbdef7621f207b32 100644 |
--- a/chrome/browser/ui/cocoa/custom_frame_view.mm |
+++ b/chrome/browser/ui/cocoa/custom_frame_view.mm |
@@ -4,8 +4,10 @@ |
#import "chrome/browser/ui/cocoa/custom_frame_view.h" |
-#import <objc/runtime.h> |
#import <Carbon/Carbon.h> |
+#include <crt_externs.h> |
+#import <objc/runtime.h> |
+#include <string.h> |
#include "base/logging.h" |
#include "base/mac/mac_util.h" |
@@ -43,6 +45,20 @@ BOOL gCanGetCornerRadius = NO; |
// roll overs for our close widgets, but things should still function |
// correctly. |
+ (void)load { |
+ // Swizzling should only happen in the browser process. Interacting with |
+ // AppKit will run +[borderViewClass initialize] in the renderer, which |
+ // may establish Mach IPC with com.apple.windowserver. |
+ // Note that CommandLine has not been initialized yet, since this is running |
+ // as a module initializer. |
+ const char* const* const argv = *_NSGetArgv(); |
+ const int argc = *_NSGetArgc(); |
+ const char kType[] = "--type="; |
+ for (int i = 1; i < argc; ++i) { |
+ const char* arg = argv[i]; |
+ if (strncmp(arg, kType, strlen(kType)) == 0) |
+ return; |
+ } |
+ |
base::mac::ScopedNSAutoreleasePool pool; |
// On 10.8+ the background for textured windows are no longer drawn by |