1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "base/command_line.h"
6 #include "base/logging.h"
7 #include "base/mac/bundle_locations.h"
8 #include "base/path_service.h"
9 #include "content/public/common/content_switches.h"
10 #include "content/shell/app/blink_test_platform_support.h"
12 #include <AppKit/AppKit.h>
13 #include <Foundation/Foundation.h>
19 void SetDefaultsToLayoutTestValues(void) {
20 // So we can match the WebKit layout tests, we want to force a bunch of
21 // preferences that control appearance to match.
22 // (We want to do this as early as possible in application startup so
23 // the settings are in before any higher layers could cache values.)
25 NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
26 // Do not set text-rendering prefs (AppleFontSmoothing,
27 // AppleAntiAliasingThreshold) here: Skia picks the right settings for this
28 // in layout test mode, see FontSkia.cpp in WebKit and
29 // SkFontHost_mac_coretext.cpp in skia.
30 const NSInteger kBlueTintedAppearance = 1;
31 [defaults setInteger:kBlueTintedAppearance
32 forKey:@"AppleAquaColorVariant"];
33 [defaults setObject:@"0.709800 0.835300 1.000000"
34 forKey:@"AppleHighlightColor"];
35 [defaults setObject:@"0.500000 0.500000 0.500000"
36 forKey:@"AppleOtherHighlightColor"];
37 [defaults setObject:[NSArray arrayWithObject:@"en"]
38 forKey:@"AppleLanguages"];
40 forKey:@"AppleScrollAnimationEnabled"];
42 forKey:@"NSScrollAnimationEnabled"];
43 [defaults setObject:@"Always"
44 forKey:@"AppleShowScrollBars"];
49 bool CheckLayoutSystemDeps() {
53 bool BlinkTestPlatformInitialize() {
55 SetDefaultsToLayoutTestValues();
57 // Load font files in the resource folder.
58 static const char* const fontFileNames[] = {
59 "AHEM____.TTF", "ChromiumAATTest.ttf"
62 // mainBundle is Content Shell Helper.app. Go two levels up to find
63 // Content Shell.app. Due to DumpRenderTree injecting the font files into
64 // its direct dependents, it's not easily possible to put the ttf files into
65 // the helper's resource directory instead of the outer bundle's resource
67 NSString* bundle = [base::mac::FrameworkBundle() bundlePath];
68 bundle = [bundle stringByAppendingPathComponent:@"../.."];
69 NSURL* resources_directory = [[NSBundle bundleWithPath:bundle] resourceURL];
71 NSMutableArray* font_urls = [NSMutableArray array];
72 for (unsigned i = 0; i < arraysize(fontFileNames); ++i) {
73 NSURL* font_url = [resources_directory
74 URLByAppendingPathComponent:[NSString
75 stringWithUTF8String:fontFileNames[i]]];
76 [font_urls addObject:[font_url absoluteURL]];
79 CFArrayRef errors = 0;
80 if (!CTFontManagerRegisterFontsForURLs((CFArrayRef)font_urls,
81 kCTFontManagerScopeProcess,
83 DLOG(FATAL) << "Fail to activate fonts.";
87 // Add <app bundle's parent dir>/plugins to the plugin path so we can load
89 base::FilePath plugins_dir;
90 PathService::Get(base::DIR_EXE, &plugins_dir);
91 plugins_dir = plugins_dir.AppendASCII("../../../plugins");
92 base::CommandLine& command_line = *base::CommandLine::ForCurrentProcess();
93 command_line.AppendSwitchPath(switches::kExtraPluginDir, plugins_dir);