blob: e804ad2f412811434e2676a8320f974062f6e84a [file] [log] [blame]
// Copyright 2018 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "services/ws/injected_event_handler.h"
#include <memory>
#include "services/ws/event_injector.h"
#include "services/ws/window_delegate_impl.h"
#include "services/ws/window_service.h"
#include "services/ws/window_service_test_helper.h"
#include "services/ws/window_service_test_setup.h"
#include "testing/gtest/include/gtest/gtest.h"
#include "ui/aura/test/aura_test_helper.h"
#include "ui/aura/window.h"
#include "ui/aura/window_tree_host.h"
#include "ui/display/display.h"
#include "ui/display/screen.h"
#include "ui/events/event_source.h"
#include "ui/events/test/test_event_rewriter.h"
namespace ws {
namespace {
std::unique_ptr<ui::Event> CreateTestEvent() {
return std::make_unique<ui::MouseEvent>(ui::ET_MOUSE_PRESSED, gfx::Point(),
gfx::Point(), base::TimeTicks::Now(),
ui::EF_NONE, ui::EF_NONE);
}
} // namespace
TEST(EventInjectorTest, NoAck) {
WindowServiceTestSetup test_setup;
test_setup.service()->OnStart();
auto* event_source = test_setup.root()->GetHost()->GetEventSource();
ui::test::TestEventRewriter test_event_rewriter;
event_source->AddEventRewriter(&test_event_rewriter);
EventInjector* event_injector =
WindowServiceTestHelper(test_setup.service()).event_injector();
mojom::EventInjector* mojom_event_injector =
static_cast<mojom::EventInjector*>(event_injector);
auto display_id = display::Screen::GetScreen()->GetPrimaryDisplay().id();
mojom_event_injector->InjectEventNoAck(display_id, CreateTestEvent());
EXPECT_EQ(1, test_event_rewriter.events_seen());
EXPECT_FALSE(event_injector->HasQueuedEvents());
test_event_rewriter.clear_events_seen();
// Repeat, using the API that circumvents rewriters.
mojom_event_injector->InjectEventNoAckNoRewriters(display_id,
CreateTestEvent());
EXPECT_EQ(0, test_event_rewriter.events_seen());
EXPECT_FALSE(event_injector->HasQueuedEvents());
event_source->RemoveEventRewriter(&test_event_rewriter);
}
} // namespace ws