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