1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file.
4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
55f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/shell/test/shell_test.h"
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
7c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "base/command_line.h"
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/logging.h"
9c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch#include "content/public/common/content_switches.h"
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "extensions/browser/extension_system.h"
115f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/shell/browser/shell_content_browser_client.h"
125f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/shell/browser/shell_desktop_controller.h"
135f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)#include "extensions/shell/browser/shell_extension_system.h"
14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
155f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)namespace extensions {
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
175f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)AppShellTest::AppShellTest() : browser_context_(NULL), extension_system_(NULL) {
185f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
205f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)AppShellTest::~AppShellTest() {
215f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
23c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdochvoid AppShellTest::SetUp() {
24c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  base::CommandLine* command_line = base::CommandLine::ForCurrentProcess();
25c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  command_line->AppendSwitchASCII(switches::kTestType, "appshell");
26c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  content::BrowserTestBase::SetUp();
27c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch}
28c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch
29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid AppShellTest::SetUpOnMainThread() {
30c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  browser_context_ = ShellContentBrowserClient::Get()->GetBrowserContext();
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
325f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)  extension_system_ = static_cast<ShellExtensionSystem*>(
335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)      ExtensionSystem::Get(browser_context_));
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochvoid AppShellTest::RunTestOnMainThreadLoop() {
37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  base::MessageLoopForUI::current()->RunUntilIdle();
38effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
39effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  SetUpOnMainThread();
40effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
41effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  RunTestOnMainThread();
42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  TearDownOnMainThread();
44effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
45c5cede9ae108bb15f6b7a8aea21c7e1fefa2834cBen Murdoch  // Clean up the app window.
46f8ee788a64d60abd8f2d742a5fdedde054ecd910Torne (Richard Coles)  ShellDesktopController::instance()->CloseAppWindows();
47effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}
48effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
495f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles)}  // namespace extensions
50