test_suite.cc revision 2a99a7e74a7f215066514fe81d2bfa6639d9eddd
1// Copyright (c) 2012 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.
4
5#include "ash/test/test_suite.h"
6
7#include "ash/ash_switches.h"
8#include "base/command_line.h"
9#include "base/files/file_path.h"
10#include "base/path_service.h"
11#include "build/build_config.h"
12#include "testing/gtest/include/gtest/gtest.h"
13#include "ui/base/resource/resource_bundle.h"
14#include "ui/base/ui_base_paths.h"
15#include "ui/compositor/compositor_setup.h"
16#include "ui/compositor/test/compositor_test_support.h"
17#include "ui/gfx/gfx_paths.h"
18
19#if defined(OS_MACOSX)
20#include "ash/test/test_suite_init.h"
21#endif
22
23#if defined(OS_WIN)
24#include "base/win/windows_version.h"
25#include "ui/base/win/atl_module.h"
26#include "win8/test/metro_registration_helper.h"
27#include "win8/test/open_with_dialog_controller.h"
28#include "win8/test/test_registrar_constants.h"
29#endif
30
31namespace ash {
32namespace test {
33
34AuraShellTestSuite::AuraShellTestSuite(int argc, char** argv)
35    : TestSuite(argc, argv) {}
36
37void AuraShellTestSuite::Initialize() {
38  base::TestSuite::Initialize();
39
40#if defined(OS_WIN)
41  if (base::win::GetVersion() >= base::win::VERSION_WIN8 &&
42      !CommandLine::ForCurrentProcess()->HasSwitch(
43          ash::switches::kForceAshToDesktop)) {
44    ASSERT_TRUE(win8::RegisterTestDefaultBrowser(
45        win8::test::kDefaultTestAppUserModelId,
46        win8::test::kDefaultTestExeName));
47
48    ui::win::CreateATLModuleIfNeeded();
49
50    std::vector<string16> choices;
51    win8::OpenWithDialogController controller;
52    controller.RunSynchronously(NULL, L"http", win8::test::kDefaultTestExeName,
53                                &choices);
54  }
55#endif
56
57  gfx::RegisterPathProvider();
58  ui::RegisterPathProvider();
59
60#if defined(OS_MACOSX)
61  ash::test::OverrideFrameworkBundle();
62#endif
63
64  // Force unittests to run using en-US so if we test against string
65  // output, it'll pass regardless of the system language.
66  ui::ResourceBundle::InitSharedInstanceWithLocale("en-US", NULL);
67  ui::CompositorTestSupport::Initialize();
68  ui::SetupTestCompositor();
69}
70
71void AuraShellTestSuite::Shutdown() {
72  ui::CompositorTestSupport::Terminate();
73  ui::ResourceBundle::CleanupSharedInstance();
74  base::TestSuite::Shutdown();
75}
76
77}  // namespace test
78}  // namespace ash
79