15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Copyright (c) 2012 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/test/aura_test_base.h" 65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 71e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)#include "ui/aura/client/window_tree_client.h" 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "ui/aura/test/aura_test_helper.h" 92a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)#include "ui/aura/test/test_window_delegate.h" 10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "ui/aura/window.h" 117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "ui/base/ime/input_method_initializer.h" 12a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/compositor/test/context_factories_for_test.h" 135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "ui/events/event_dispatcher.h" 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "ui/events/event_processor.h" 1568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)#include "ui/events/gestures/gesture_configuration.h" 16c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace aura { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace test { 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)AuraTestBase::AuraTestBase() 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) : setup_called_(false), 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) teardown_called_(false) { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)AuraTestBase::~AuraTestBase() { 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CHECK(setup_called_) 27c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << "You have overridden SetUp but never called super class's SetUp"; 28c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) CHECK(teardown_called_) 29c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) << "You have overridden TearDown but never called super class's TearDown"; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AuraTestBase::SetUp() { 33c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) setup_called_ = true; 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testing::Test::SetUp(); 357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ui::InitializeInputMethodForTesting(); 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Changing the parameters for gesture recognition shouldn't cause 385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // tests to fail, so we use a separate set of parameters for unit 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // testing. 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration::set_long_press_time_in_seconds(1.0); 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration::set_semi_long_press_time_in_seconds(0.4); 421e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) ui::GestureConfiguration::set_show_press_delay_in_ms(5); 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration::set_max_distance_for_two_finger_tap_in_pixels(300); 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration::set_max_seconds_between_double_click(0.7); 455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration:: 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_max_separation_for_gesture_touches_in_pixels(150); 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration:: 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) set_max_touch_down_duration_in_seconds_for_click(0.8); 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration::set_max_touch_move_in_pixels_for_click(5); 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration::set_max_distance_between_taps_for_double_tap(20); 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration::set_min_distance_for_pinch_scroll_in_pixels(20); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration::set_min_pinch_update_distance_in_pixels(5); 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ui::GestureConfiguration::set_default_radius(0); 542a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ui::GestureConfiguration::set_fling_velocity_cap(15000.0f); 550529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch ui::GestureConfiguration::set_min_swipe_speed(10); 562a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 57a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) // The ContextFactory must exist before any Compositors are created. 58a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) bool enable_pixel_output = false; 59cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ui::ContextFactory* context_factory = 60cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) ui::InitializeContextFactoryForTests(enable_pixel_output); 61a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_.reset(new AuraTestHelper(&message_loop_)); 63cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles) helper_->SetUp(context_factory); 645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AuraTestBase::TearDown() { 67c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) teardown_called_ = true; 68c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Flush the message loop because we have pending release tasks 705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // and these tasks if un-executed would upset Valgrind. 715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) RunAllPendingInMessageLoop(); 725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_->TearDown(); 74a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ui::TerminateContextFactoryForTests(); 757d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) ui::ShutdownInputMethodForTesting(); 765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) testing::Test::TearDown(); 775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 792a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)Window* AuraTestBase::CreateNormalWindow(int id, Window* parent, 802a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) WindowDelegate* delegate) { 812a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) Window* window = new Window( 822a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) delegate ? delegate : 832a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) test::TestWindowDelegate::CreateSelfDestroyingDelegate()); 842a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) window->set_id(id); 855d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) window->Init(aura::WINDOW_LAYER_TEXTURED); 862a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) parent->AddChild(window); 872a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) window->SetBounds(gfx::Rect(0, 0, 100, 100)); 882a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) window->Show(); 892a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) return window; 902a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles)} 912a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) 925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)void AuraTestBase::RunAllPendingInMessageLoop() { 935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) helper_->RunAllPendingInMessageLoop(); 945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 961e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)void AuraTestBase::ParentWindow(Window* window) { 971e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) client::ParentWindowWithContext(window, root_window(), gfx::Rect()); 981e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles)} 991e9bf3e0803691d0a228da41fc608347b6db4340Torne (Richard Coles) 1005d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)bool AuraTestBase::DispatchEventUsingWindowDispatcher(ui::Event* event) { 101a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) ui::EventDispatchDetails details = 102a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) event_processor()->OnEventFromSource(event); 1035d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) CHECK(!details.dispatcher_destroyed); 1045d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) return event->handled(); 1055d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)} 1065d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) 1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace test 1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace aura 109