16e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 26e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 36e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// found in the LICENSE file. 46e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 56e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chrome/test/base/view_event_test_platform_part.h" 66e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 76e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ash/shell.h" 86e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ash/shell_init_params.h" 96e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ash/test/test_session_state_delegate.h" 106e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ash/test/test_shell_delegate.h" 116e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chromeos/audio/cras_audio_handler.h" 126e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chromeos/dbus/dbus_thread_manager.h" 136e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "chromeos/network/network_handler.h" 146e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ui/aura/env.h" 156e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ui/aura/window_tree_host.h" 166e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ui/message_center/message_center.h" 176e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)#include "ui/wm/core/wm_state.h" 186e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 196e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)namespace { 206e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 216e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// ViewEventTestPlatformPart implementation for ChromeOS (chromeos=1). 226e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)class ViewEventTestPlatformPartChromeOS : public ViewEventTestPlatformPart { 236e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) public: 246e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) explicit ViewEventTestPlatformPartChromeOS( 256e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ui::ContextFactory* context_factory); 266e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual ~ViewEventTestPlatformPartChromeOS(); 276e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 286e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Overridden from ViewEventTestPlatformPart: 296e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) virtual gfx::NativeWindow GetContext() OVERRIDE { 306e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return ash::Shell::GetPrimaryRootWindow(); 316e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) } 326e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 336e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) private: 346e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) wm::WMState wm_state_; 356e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 366e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ViewEventTestPlatformPartChromeOS); 376e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)}; 386e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 396e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)ViewEventTestPlatformPartChromeOS::ViewEventTestPlatformPartChromeOS( 406e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ui::ContextFactory* context_factory) { 416e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Ash Shell can't just live on its own without a browser process, we need to 426e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // also create the message center. 436e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) message_center::MessageCenter::Initialize(); 441320f92c476a1ad9d19dba2a48c72b75566198e9Primiano Tucci chromeos::DBusThreadManager::Initialize(); 456e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chromeos::CrasAudioHandler::InitializeForTesting(); 466e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chromeos::NetworkHandler::Initialize(); 476e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ash::test::TestShellDelegate* shell_delegate = 486e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) new ash::test::TestShellDelegate(); 496e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ash::ShellInitParams init_params; 506e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) init_params.delegate = shell_delegate; 516e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) init_params.context_factory = context_factory; 526e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ash::Shell::CreateInstance(init_params); 536e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) shell_delegate->test_session_state_delegate()->SetActiveUserSessionStarted( 546e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) true); 556e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) GetContext()->GetHost()->Show(); 566e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 576e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 586e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)ViewEventTestPlatformPartChromeOS::~ViewEventTestPlatformPartChromeOS() { 596e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ash::Shell::DeleteInstance(); 606e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chromeos::NetworkHandler::Shutdown(); 616e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chromeos::CrasAudioHandler::Shutdown(); 626e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) chromeos::DBusThreadManager::Shutdown(); 636e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // Ash Shell can't just live on its own without a browser process, we need to 646e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) // also shut down the message center. 656e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) message_center::MessageCenter::Shutdown(); 666e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 676e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) aura::Env::DeleteInstance(); 686e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 696e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 706e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} // namespace 716e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) 726e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)// static 736e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)ViewEventTestPlatformPart* ViewEventTestPlatformPart::Create( 746e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) ui::ContextFactory* context_factory) { 756e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles) return new ViewEventTestPlatformPartChromeOS(context_factory); 766e8cce623b6e4fe0c9e4af605d675dd9d0338c38Torne (Richard Coles)} 77