mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-19 16:25:38 +00:00
339308fcab
Synthesizing keyboard events is dangerous and such API is requested only by fuzzing test. So, we should add it into FuzzingFunctions which is built only when |ac_add_options --enable-fuzzing| is specified and enabled by the pref. This patch implements the API as synthesizing keyboard events in the focused widget and the synthesized events are propagated as native key events except APZ (because keyboard events are synthesized only in the process). This behavior allows to test including any default action handlers such as EventStateManager and setting WidgetGUIEvent::mWidget since some C++ handler checks if it's nullptr. Differential Revision: https://phabricator.services.mozilla.com/D5516 --HG-- extra : moz-landing-system : lando
79 lines
2.6 KiB
C++
79 lines
2.6 KiB
C++
/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
|
|
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
|
|
|
|
#ifndef mozilla_dom_FuzzingFunctions
|
|
#define mozilla_dom_FuzzingFunctions
|
|
|
|
#include "mozilla/EventForwards.h"
|
|
|
|
class nsIWidget;
|
|
|
|
namespace mozilla {
|
|
|
|
class ErrorResult;
|
|
class TextInputProcessor;
|
|
|
|
namespace dom {
|
|
|
|
class GlobalObject;
|
|
struct KeyboardEventInit;
|
|
|
|
class FuzzingFunctions final
|
|
{
|
|
public:
|
|
static void
|
|
GarbageCollect(const GlobalObject&);
|
|
|
|
static void
|
|
CycleCollect(const GlobalObject&);
|
|
|
|
static void
|
|
EnableAccessibility(const GlobalObject&, ErrorResult& aRv);
|
|
|
|
static void
|
|
SynthesizeKeyboardEvents(const GlobalObject& aGlobalObject,
|
|
const nsAString& aKeyValue,
|
|
const KeyboardEventInit& aKeyboardEvent,
|
|
ErrorResult& aRv);
|
|
|
|
private:
|
|
/**
|
|
* ActivateModifiers() activates aModifiers in the TextInputProcessor.
|
|
*
|
|
* @param aTextInputProcessor The TIP whose modifier state you want to change.
|
|
* @param aModifiers Modifiers which you want to activate.
|
|
* @param aWidget The widget which should be set to
|
|
* WidgetKeyboardEvent.
|
|
* @param aRv Returns error if TextInputProcessor fails to
|
|
* dispatch a modifier key event.
|
|
* @return Modifiers which are activated by the call.
|
|
*/
|
|
static Modifiers
|
|
ActivateModifiers(TextInputProcessor* aTextInputProcessor,
|
|
Modifiers aModifiers, nsIWidget* aWidget, ErrorResult& aRv);
|
|
|
|
/**
|
|
* InactivateModifiers() inactivates aModifiers in the TextInputProcessor.
|
|
*
|
|
* @param aTextInputProcessor The TIP whose modifier state you want to change.
|
|
* @param aModifiers Modifiers which you want to inactivate.
|
|
* @param aWidget The widget which should be set to
|
|
* WidgetKeyboardEvent.
|
|
* @param aRv Returns error if TextInputProcessor fails to
|
|
* dispatch a modifier key event.
|
|
* @return Modifiers which are inactivated by the call.
|
|
*/
|
|
static Modifiers
|
|
InactivateModifiers(TextInputProcessor* aTextInputProcessor,
|
|
Modifiers aModifiers, nsIWidget* aWidget,
|
|
ErrorResult& aRv);
|
|
};
|
|
|
|
} // namespace dom
|
|
} // namespace mozilla
|
|
|
|
#endif // mozilla_dom_FuzzingFunctions
|