1// Copyright 2014 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 "chrome/test/base/view_event_test_platform_part.h" 6 7#include "ash/shell.h" 8#include "ash/shell_init_params.h" 9#include "ash/test/test_session_state_delegate.h" 10#include "ash/test/test_shell_delegate.h" 11#include "chromeos/audio/cras_audio_handler.h" 12#include "chromeos/dbus/dbus_thread_manager.h" 13#include "chromeos/network/network_handler.h" 14#include "ui/aura/env.h" 15#include "ui/aura/window_tree_host.h" 16#include "ui/message_center/message_center.h" 17#include "ui/wm/core/wm_state.h" 18 19namespace { 20 21// ViewEventTestPlatformPart implementation for ChromeOS (chromeos=1). 22class ViewEventTestPlatformPartChromeOS : public ViewEventTestPlatformPart { 23 public: 24 explicit ViewEventTestPlatformPartChromeOS( 25 ui::ContextFactory* context_factory); 26 virtual ~ViewEventTestPlatformPartChromeOS(); 27 28 // Overridden from ViewEventTestPlatformPart: 29 virtual gfx::NativeWindow GetContext() OVERRIDE { 30 return ash::Shell::GetPrimaryRootWindow(); 31 } 32 33 private: 34 wm::WMState wm_state_; 35 36 DISALLOW_COPY_AND_ASSIGN(ViewEventTestPlatformPartChromeOS); 37}; 38 39ViewEventTestPlatformPartChromeOS::ViewEventTestPlatformPartChromeOS( 40 ui::ContextFactory* context_factory) { 41 // Ash Shell can't just live on its own without a browser process, we need to 42 // also create the message center. 43 message_center::MessageCenter::Initialize(); 44 chromeos::DBusThreadManager::Initialize(); 45 chromeos::CrasAudioHandler::InitializeForTesting(); 46 chromeos::NetworkHandler::Initialize(); 47 ash::test::TestShellDelegate* shell_delegate = 48 new ash::test::TestShellDelegate(); 49 ash::ShellInitParams init_params; 50 init_params.delegate = shell_delegate; 51 init_params.context_factory = context_factory; 52 ash::Shell::CreateInstance(init_params); 53 shell_delegate->test_session_state_delegate()->SetActiveUserSessionStarted( 54 true); 55 GetContext()->GetHost()->Show(); 56} 57 58ViewEventTestPlatformPartChromeOS::~ViewEventTestPlatformPartChromeOS() { 59 ash::Shell::DeleteInstance(); 60 chromeos::NetworkHandler::Shutdown(); 61 chromeos::CrasAudioHandler::Shutdown(); 62 chromeos::DBusThreadManager::Shutdown(); 63 // Ash Shell can't just live on its own without a browser process, we need to 64 // also shut down the message center. 65 message_center::MessageCenter::Shutdown(); 66 67 aura::Env::DeleteInstance(); 68} 69 70} // namespace 71 72// static 73ViewEventTestPlatformPart* ViewEventTestPlatformPart::Create( 74 ui::ContextFactory* context_factory) { 75 return new ViewEventTestPlatformPartChromeOS(context_factory); 76} 77