blob: e0150d67ebeaa1b1c31c61d2388d9124fbe707b9 [file] [log] [blame]
// Copyright 2013 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 "base/command_line.h"
#include "base/logging.h"
#include "base/mac/bundle_locations.h"
#include "base/path_service.h"
#include "components/test_runner/blink_test_platform_support.h"
#include <AppKit/AppKit.h>
#include <Foundation/Foundation.h>
namespace test_runner {
namespace {
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.)
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
// Do not set text-rendering prefs (AppleFontSmoothing,
// AppleAntiAliasingThreshold) here: Skia picks the right settings for this
// in layout test mode, see FontSkia.cpp in WebKit and
// SkFontHost_mac_coretext.cpp in skia.
const NSInteger kBlueTintedAppearance = 1;
[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"];
[defaults setBool:NO
forKey:@"AppleScrollAnimationEnabled"];
[defaults setBool:NO
forKey:@"NSScrollAnimationEnabled"];
[defaults setObject:@"Always"
forKey:@"AppleShowScrollBars"];
}
} // namespace
bool CheckLayoutSystemDeps() {
return true;
}
bool BlinkTestPlatformInitialize() {
SetDefaultsToLayoutTestValues();
// Load font files in the resource folder.
static const char* const fontFileNames[] = {
"AHEM____.TTF", "ChromiumAATTest.ttf"
};
// mainBundle is Content Shell Helper.app. Go two levels up to find
// Content Shell.app. Due to DumpRenderTree injecting the font files into
// its direct dependents, it's not easily possible to put the ttf files into
// the helper's resource directory instead of the outer bundle's resource
// directory.
NSString* bundle = [base::mac::FrameworkBundle() bundlePath];
bundle = [bundle stringByAppendingPathComponent:@"../.."];
NSURL* resources_directory = [[NSBundle bundleWithPath:bundle] resourceURL];
NSMutableArray* font_urls = [NSMutableArray array];
for (unsigned i = 0; i < arraysize(fontFileNames); ++i) {
NSURL* font_url = [resources_directory
URLByAppendingPathComponent:[NSString
stringWithUTF8String:fontFileNames[i]]];
[font_urls addObject:[font_url absoluteURL]];
}
CFArrayRef errors = 0;
if (!CTFontManagerRegisterFontsForURLs((CFArrayRef)font_urls,
kCTFontManagerScopeProcess,
&errors)) {
DLOG(FATAL) << "Fail to activate fonts.";
CFRelease(errors);
}
// Add <app bundle's parent dir>/plugins to the plugin path so we can load
// test npapi plugins (soon to be removed).
const char kExtraPluginDir[] = "extra-plugin-dir";
base::FilePath plugins_dir;
PathService::Get(base::DIR_EXE, &plugins_dir);
plugins_dir = plugins_dir.AppendASCII("../../../plugins");
base::CommandLine& command_line = *base::CommandLine::ForCurrentProcess();
command_line.AppendSwitchPath(kExtraPluginDir, plugins_dir);
return true;
}
} // namespace test_runner