naiveproxy/services/ui/public/interfaces/event_matcher.mojom
2018-02-02 05:49:39 -05:00

57 lines
1.9 KiB
Plaintext

// Copyright 2015 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.
module ui.mojom;
import "ui/events/mojo/event_constants.mojom";
import "ui/events/mojo/keyboard_codes.mojom";
import "ui/gfx/geometry/mojo/geometry.mojom";
struct KeyEventMatcher {
ui.mojom.KeyboardCode keyboard_code;
};
struct PointerKindMatcher {
ui.mojom.PointerKind pointer_kind;
};
struct PointerLocationMatcher {
gfx.mojom.RectF region;
};
struct EventTypeMatcher {
ui.mojom.EventType type;
};
struct EventFlagsMatcher {
// A bitfield of kEventFlag* and kMouseEventFlag* values in
// input_event_constants.mojom.
int32 flags;
};
// If a specific matcher is missing, then an Event will match this EventMatcher
// (if relevant). For example, if |type_matcher| is missing, then events of all
// types will match this EventMatcher. Similarly, if |key_matcher| is missing,
// then all key-events will match.
// An example matcher to match the Ctrl+A accelerator would be:
// - |type_matcher.type| = ui::mojom::EventType::KEY_PRESSED
// - |flags_matcher.flags| = ui::mojom::kEventFlagControlDown
// - |key_matcher.keyboard_code| = ui::mojom::KeyboardCode::A
//
// A matcher to match any key-press event would be:
// - |type_matcher.type| = ui::mojom::EventType::KEY_PRESSED
struct EventMatcher {
// |accelerator_phase| is only applicable to accelerators.
// TODO(jamescook): Move this to somewhere accelerator-specific.
ui.mojom.AcceleratorPhase accelerator_phase;
EventTypeMatcher? type_matcher;
EventFlagsMatcher? flags_matcher;
// These flags will be stripped from incoming events' flags when comparing
// against |flags_matcher|.
EventFlagsMatcher? ignore_flags_matcher;
KeyEventMatcher? key_matcher;
PointerKindMatcher? pointer_kind_matcher;
PointerLocationMatcher? pointer_location_matcher;
};