| Index: third_party/WebKit/Source/core/input/InputDeviceCapabilities.h
|
| diff --git a/third_party/WebKit/Source/core/input/InputDeviceCapabilities.h b/third_party/WebKit/Source/core/input/InputDeviceCapabilities.h
|
| index d8731f3e86d0cc2fe91c3b074b8e74b5f7338689..f94b0567d735a1a5d4267ebae7a8568e28040df6 100644
|
| --- a/third_party/WebKit/Source/core/input/InputDeviceCapabilities.h
|
| +++ b/third_party/WebKit/Source/core/input/InputDeviceCapabilities.h
|
| @@ -11,14 +11,25 @@
|
|
|
| namespace blink {
|
|
|
| +class DOMWindow;
|
| +
|
| class CORE_EXPORT InputDeviceCapabilities final
|
| : public GarbageCollected<InputDeviceCapabilities>,
|
| public ScriptWrappable {
|
| DEFINE_WRAPPERTYPEINFO();
|
|
|
| public:
|
| - static InputDeviceCapabilities* create(bool firesTouchEvents) {
|
| - return new InputDeviceCapabilities(firesTouchEvents);
|
| + enum Descriptor {
|
| + // |Null| represents a null InputDeviceCapabilities*.
|
| + Null = 0x0,
|
| + // |None| represents an empty InputDeviceCapabilities instance with
|
| + // no capabilities.
|
| + None = 0x1,
|
| + FiresTouchEvents = 0x2,
|
| + };
|
| +
|
| + static InputDeviceCapabilities* create(Descriptor descriptor) {
|
| + return new InputDeviceCapabilities(descriptor);
|
| }
|
|
|
| static InputDeviceCapabilities* create(
|
| @@ -31,8 +42,8 @@ class CORE_EXPORT InputDeviceCapabilities final
|
| DEFINE_INLINE_TRACE() {}
|
|
|
| private:
|
| - InputDeviceCapabilities(bool firesTouchEvents);
|
| - InputDeviceCapabilities(const InputDeviceCapabilitiesInit&);
|
| + explicit InputDeviceCapabilities(Descriptor);
|
| + explicit InputDeviceCapabilities(const InputDeviceCapabilitiesInit&);
|
|
|
| // Whether this device dispatches touch events. This mainly lets developers
|
| // avoid handling both touch and mouse events dispatched for a single user
|
| @@ -40,19 +51,50 @@ class CORE_EXPORT InputDeviceCapabilities final
|
| bool m_firesTouchEvents;
|
| };
|
|
|
| -// Grouping constant-valued InputDeviceCapabilities objects together,
|
| -// which is kept and used by each 'view' (DOMWindow) that dispatches
|
| -// events parameterized over InputDeviceCapabilities.
|
| -//
|
| -// TODO(sof): lazily instantiate InputDeviceCapabilities instances upon
|
| -// UIEvent access instead. This would allow internal tracking of such
|
| -// capabilities by value.
|
| +// To be able to delay the creation of InputDeviceCapabilities instances
|
| +// until requested from script, we characterize the capabilities by a
|
| +// descriptor and propagate its value internally.
|
| +class InputDeviceCapabilitiesValue final {
|
| + DISALLOW_NEW();
|
| +
|
| + public:
|
| + InputDeviceCapabilitiesValue()
|
| + : m_descriptor(InputDeviceCapabilities::Null) {}
|
| +
|
| + InputDeviceCapabilitiesValue(const InputDeviceCapabilities::Descriptor desc)
|
| + : m_descriptor(desc) {}
|
| +
|
| + // Provided for convenience while InputDeviceCapabilities only supports
|
| + // a single capability.
|
| + explicit InputDeviceCapabilitiesValue(bool firesTouchEvents)
|
| + : m_descriptor(firesTouchEvents
|
| + ? InputDeviceCapabilities::FiresTouchEvents
|
| + : InputDeviceCapabilities::None) {}
|
| +
|
| + explicit InputDeviceCapabilitiesValue(InputDeviceCapabilities* capabilities)
|
| + : m_descriptor(InputDeviceCapabilities::Null),
|
| + m_capabilities(capabilities) {}
|
| +
|
| + InputDeviceCapabilitiesValue(const InputDeviceCapabilitiesValue& other)
|
| + : m_descriptor(other.m_descriptor),
|
| + m_capabilities(other.m_capabilities) {}
|
| +
|
| + InputDeviceCapabilities* getCapabilities(DOMWindow*);
|
| +
|
| + DEFINE_INLINE_TRACE() { visitor->trace(m_capabilities); }
|
| +
|
| + private:
|
| + InputDeviceCapabilities::Descriptor m_descriptor;
|
| + Member<InputDeviceCapabilities> m_capabilities;
|
| +};
|
| +
|
| +// Grouping a DOMWindow's InputDeviceCapabilities objects together.
|
| class InputDeviceCapabilitiesConstants final
|
| : public GarbageCollected<InputDeviceCapabilitiesConstants> {
|
| public:
|
| // Returns an InputDeviceCapabilities which has
|
| // |firesTouchEvents| set to value of |firesTouch|.
|
| - InputDeviceCapabilities* firesTouchEvents(bool firesTouch);
|
| + InputDeviceCapabilities* get(InputDeviceCapabilities::Descriptor);
|
|
|
| DEFINE_INLINE_TRACE() {
|
| visitor->trace(m_firesTouchEvents);
|
|
|