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/gfx/gfx_paths.h"
16#include "ui/gl/gl_surface.h"
17
18#if defined(OS_WIN)
19#include "base/win/windows_version.h"
20#include "ui/base/win/atl_module.h"
21#include "win8/test/metro_registration_helper.h"
22#include "win8/test/test_registrar_constants.h"
23#endif
24
25namespace ash {
26namespace test {
27
28AuraShellTestSuite::AuraShellTestSuite(int argc, char** argv)
29    : TestSuite(argc, argv) {}
30
31void AuraShellTestSuite::Initialize() {
32  base::TestSuite::Initialize();
33  gfx::GLSurface::InitializeOneOffForTests();
34
35#if defined(OS_WIN)
36  base::win::Version version = base::win::GetVersion();
37  // Although Ash officially is only supported for users on Win7+, we still run
38  // ash_unittests on Vista builders, so we still need to initialize COM.
39  if (version >= base::win::VERSION_VISTA &&
40      !CommandLine::ForCurrentProcess()->HasSwitch(
41          ash::switches::kForceAshToDesktop)) {
42    com_initializer_.reset(new base::win::ScopedCOMInitializer());
43    ui::win::CreateATLModuleIfNeeded();
44    if (version >= base::win::VERSION_WIN8)
45      ASSERT_TRUE(win8::MakeTestDefaultBrowserSynchronously());
46  }
47#endif
48
49  gfx::RegisterPathProvider();
50  ui::RegisterPathProvider();
51
52  // Force unittests to run using en-US so if we test against string
53  // output, it'll pass regardless of the system language.
54  ui::ResourceBundle::InitSharedInstanceWithLocale(
55      "en-US", NULL, ui::ResourceBundle::LOAD_COMMON_RESOURCES);
56}
57
58void AuraShellTestSuite::Shutdown() {
59  ui::ResourceBundle::CleanupSharedInstance();
60#if defined(OS_WIN)
61  com_initializer_.reset();
62#endif
63  base::TestSuite::Shutdown();
64}
65
66}  // namespace test
67}  // namespace ash
68