1a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
22a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
32a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)// found in the LICENSE file.
42a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/wm/test/wm_test_helper.h"
62a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
72a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/aura/client/default_capture_client.h"
84e180b6a0b4720a9b8e9e959a882386f690f08ffTorne (Richard Coles)#include "ui/aura/env.h"
98bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)#include "ui/aura/test/test_focus_client.h"
10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/aura/window.h"
11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/wm/core/compound_event_filter.h"
125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "ui/wm/core/default_activation_client.h"
13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/wm/core/input_method_event_filter.h"
142a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace wm {
162a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
17cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)WMTestHelper::WMTestHelper(const gfx::Size& default_window_size,
18cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)                           ui::ContextFactory* context_factory) {
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  aura::Env::CreateInstance(true);
20cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  aura::Env::GetInstance()->set_context_factory(context_factory);
21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  host_.reset(aura::WindowTreeHost::Create(gfx::Rect(default_window_size)));
22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  host_->InitHost();
23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  aura::client::SetWindowTreeClient(host_->window(), this);
242a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
258bcbed890bc3ce4d7a057a8f32cab53fa534672eTorne (Richard Coles)  focus_client_.reset(new aura::test::TestFocusClient);
26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  aura::client::SetFocusClient(host_->window(), focus_client_.get());
272a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  root_window_event_filter_.reset(new wm::CompoundEventFilter);
290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  host_->window()->AddPreTargetHandler(root_window_event_filter_.get());
302a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  input_method_filter_.reset(new wm::InputMethodEventFilter(
32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      host_->GetAcceleratedWidget()));
33a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  input_method_filter_->SetInputMethodPropertyInRootWindow(host_->window());
342a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  root_window_event_filter_->AddHandler(input_method_filter_.get());
352a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  new wm::DefaultActivationClient(host_->window());
372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  capture_client_.reset(
39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)      new aura::client::DefaultCaptureClient(host_->window()));
402a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
412a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)WMTestHelper::~WMTestHelper() {
432a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)  root_window_event_filter_->RemoveHandler(input_method_filter_.get());
442a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
452a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)aura::Window* WMTestHelper::GetDefaultParent(aura::Window* context,
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                             aura::Window* window,
48f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                                             const gfx::Rect& bounds) {
49a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)  return host_->window();
502a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)}
512a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)
52f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace wm
53