Index: webkit/tools/test_shell/test_shell_platform_delegate_mac.mm |
diff --git a/webkit/tools/test_shell/test_shell_platform_delegate_mac.mm b/webkit/tools/test_shell/test_shell_platform_delegate_mac.mm |
deleted file mode 100644 |
index dc1b2210a64291a12ab02526d8749c5fd0cd68b4..0000000000000000000000000000000000000000 |
--- a/webkit/tools/test_shell/test_shell_platform_delegate_mac.mm |
+++ /dev/null |
@@ -1,203 +0,0 @@ |
-// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "build/build_config.h" |
- |
-#include <Carbon/Carbon.h> |
-// #include <ApplicationServices/ApplicationServices.h> |
-#import <Cocoa/Cocoa.h> |
-#import <objc/objc-runtime.h> |
-#include <mach/task.h> |
- |
-#include "base/command_line.h" |
-#include "base/logging.h" |
-#include "base/message_pump_mac.h" |
-#import "base/test/mock_chrome_application_mac.h" |
-#include "webkit/tools/test_shell/test_shell.h" |
-#include "webkit/tools/test_shell/test_shell_platform_delegate.h" |
-#include "webkit/tools/test_shell/test_shell_switches.h" |
- |
-static NSAutoreleasePool *gTestShellAutoreleasePool = nil; |
- |
-static void SetDefaultsToLayoutTestValues(void) { |
- // So we can match the WebKit layout tests, we want to force a bunch of |
- // preferences that control appearance to match. |
- // (We want to do this as early as possible in application startup so |
- // the settings are in before any higher layers could cache values.) |
- |
- // This is inspired by resetDefaultsToConsistentValues() in |
- // WebKit/Tools/DumpRenderTree/mac/DumpRenderTree.mm . |
- |
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; |
- |
- const NSInteger kMinFontSizeCGSmoothes = 4; |
- const NSInteger kNoFontSmoothing = 0; |
- const NSInteger kBlueTintedAppearance = 1; |
- [defaults setInteger:kMinFontSizeCGSmoothes |
- forKey:@"AppleAntiAliasingThreshold"]; |
- [defaults setInteger:kNoFontSmoothing |
- forKey:@"AppleFontSmoothing"]; |
- [defaults setInteger:kBlueTintedAppearance |
- forKey:@"AppleAquaColorVariant"]; |
- [defaults setObject:@"0.709800 0.835300 1.000000" |
- forKey:@"AppleHighlightColor"]; |
- [defaults setObject:@"0.500000 0.500000 0.500000" |
- forKey:@"AppleOtherHighlightColor"]; |
- [defaults setObject:[NSArray arrayWithObject:@"en"] |
- forKey:@"AppleLanguages"]; |
- |
- // AppKit pulls scrollbar style from NSUserDefaults. HIToolbox uses |
- // CFPreferences, but AnyApplication, so we set it, force it to load, and |
- // then reset the pref to what it was (HIToolbox will cache what it loaded). |
- [defaults setObject:@"DoubleMax" forKey:@"AppleScrollBarVariant"]; |
- CFTypeRef initialValue = |
- CFPreferencesCopyValue(CFSTR("AppleScrollBarVariant"), |
- kCFPreferencesAnyApplication, |
- kCFPreferencesCurrentUser, |
- kCFPreferencesAnyHost); |
- CFPreferencesSetValue(CFSTR("AppleScrollBarVariant"), |
- CFSTR("DoubleMax"), |
- kCFPreferencesAnyApplication, |
- kCFPreferencesCurrentUser, |
- kCFPreferencesAnyHost); |
-#ifndef __LP64__ |
- // Make HIToolbox read from CFPreferences. |
- // HIToolbox is not available in 64-bit. DumpRenderTree comments out this |
- // call with a note to rdar://6347388 . No clue, sorry. |
- ThemeScrollBarArrowStyle style; |
- GetThemeScrollBarArrowStyle(&style); |
-#endif // __LP64__ |
- if (initialValue) { |
- // Reset the preference to what it was |
- CFPreferencesSetValue(CFSTR("AppleScrollBarVariant"), |
- initialValue, |
- kCFPreferencesAnyApplication, |
- kCFPreferencesCurrentUser, |
- kCFPreferencesAnyHost); |
- CFRelease(initialValue); |
- } |
-} |
- |
-static void ClearAnyDefaultsForLayoutTests(void) { |
- // Not running a test, clear the keys so the TestShell looks right to the |
- // running user. |
- |
- NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; |
- |
- [defaults removeObjectForKey:@"AppleAntiAliasingThreshold"]; |
- [defaults removeObjectForKey:@"AppleFontSmoothing"]; |
- [defaults removeObjectForKey:@"AppleAquaColorVariant"]; |
- [defaults removeObjectForKey:@"AppleHighlightColor"]; |
- [defaults removeObjectForKey:@"AppleOtherHighlightColor"]; |
- [defaults removeObjectForKey:@"AppleLanguages"]; |
- [defaults removeObjectForKey:@"AppleScrollBarVariant"]; |
-} |
- |
-#if OBJC_API_VERSION == 2 |
-static void SwizzleAllMethods(Class imposter, Class original) { |
- unsigned int imposterMethodCount = 0; |
- Method* imposterMethods = |
- class_copyMethodList(imposter, &imposterMethodCount); |
- |
- unsigned int originalMethodCount = 0; |
- Method* originalMethods = |
- class_copyMethodList(original, &originalMethodCount); |
- |
- for (unsigned int i = 0; i < imposterMethodCount; i++) { |
- SEL imposterMethodName = method_getName(imposterMethods[i]); |
- |
- // Attempt to add the method to the original class. If it fails, the method |
- // already exists and we should instead exchange the implementations. |
- if (class_addMethod(original, |
- imposterMethodName, |
- method_getImplementation(originalMethods[i]), |
- method_getTypeEncoding(originalMethods[i]))) { |
- continue; |
- } |
- |
- unsigned int j = 0; |
- for (; j < originalMethodCount; j++) { |
- SEL originalMethodName = method_getName(originalMethods[j]); |
- if (sel_isEqual(imposterMethodName, originalMethodName)) { |
- break; |
- } |
- } |
- |
- // If class_addMethod failed above then the method must exist on the |
- // original class. |
- DCHECK(j < originalMethodCount) << "method wasn't found?"; |
- method_exchangeImplementations(imposterMethods[i], originalMethods[j]); |
- } |
- |
- if (imposterMethods) { |
- free(imposterMethods); |
- } |
- if (originalMethods) { |
- free(originalMethods); |
- } |
-} |
-#endif |
- |
-static void SwizzleNSPasteboard(void) { |
- // We replace NSPaseboard w/ the shim (from WebKit) that avoids having |
- // sideeffects w/ whatever the user does at the same time. |
- |
- Class imposterClass = objc_getClass("DumpRenderTreePasteboard"); |
- Class originalClass = objc_getClass("NSPasteboard"); |
-#if OBJC_API_VERSION == 0 |
- class_poseAs(imposterClass, originalClass); |
-#else |
- // Swizzle instance methods... |
- SwizzleAllMethods(imposterClass, originalClass); |
- // and then class methods. |
- SwizzleAllMethods(object_getClass(imposterClass), |
- object_getClass(originalClass)); |
-#endif |
-} |
- |
-TestShellPlatformDelegate::TestShellPlatformDelegate( |
- const CommandLine &command_line) |
- : command_line_(command_line) { |
- gTestShellAutoreleasePool = [[NSAutoreleasePool alloc] init]; |
- // Force AppKit to init itself, but don't start the runloop yet |
- [MockCrApp sharedApplication]; |
- [NSBundle loadNibNamed:@"MainMenu" owner:NSApp]; |
-} |
- |
-TestShellPlatformDelegate::~TestShellPlatformDelegate() { |
- [gTestShellAutoreleasePool drain]; |
-} |
- |
-bool TestShellPlatformDelegate::CheckLayoutTestSystemDependencies() { |
- return true; |
-} |
- |
-void TestShellPlatformDelegate::InitializeGUI() { |
- // Make sure any settings from a previous layout run are cleared |
- ClearAnyDefaultsForLayoutTests(); |
-} |
- |
-void TestShellPlatformDelegate::PreflightArgs(int *argc, char ***argv) { |
-} |
- |
-void TestShellPlatformDelegate::SetWindowPositionForRecording(TestShell *) { |
-} |
- |
-void TestShellPlatformDelegate::SelectUnifiedTheme() { |
- SetDefaultsToLayoutTestValues(); |
- SwizzleNSPasteboard(); |
-} |
- |
-void TestShellPlatformDelegate::SuppressErrorReporting() { |
- const CommandLine& parsed_command_line = *CommandLine::ForCurrentProcess(); |
- |
- // If we die during tests, we don't want to be spamming the user's crash |
- // reporter. Set our exception port to null and add signal handlers. |
- // Both of these are necessary to avoid the crash reporter. Although, we do |
- // still seem to be missing some cases. |
- if (!parsed_command_line.HasSwitch(test_shell::kGDB)) { |
- task_set_exception_ports(mach_task_self(), EXC_MASK_ALL, MACH_PORT_NULL, |
- EXCEPTION_DEFAULT, THREAD_STATE_NONE); |
- } |
-} |