diff options
Diffstat (limited to 'chromium/third_party/blink/renderer/core/events')
34 files changed, 475 insertions, 202 deletions
diff --git a/chromium/third_party/blink/renderer/core/events/BUILD.gn b/chromium/third_party/blink/renderer/core/events/BUILD.gn index f7facc6bd6a..b6f51c73afe 100644 --- a/chromium/third_party/blink/renderer/core/events/BUILD.gn +++ b/chromium/third_party/blink/renderer/core/events/BUILD.gn @@ -6,12 +6,14 @@ import("//third_party/blink/renderer/core/core.gni") blink_core_sources("events") { sources = [ + "after_print_event.h", "animation_event.cc", "animation_event.h", "animation_playback_event.cc", "animation_playback_event.h", "application_cache_error_event.cc", "application_cache_error_event.h", + "before_print_event.h", "before_text_inserted_event.cc", "before_text_inserted_event.h", "before_unload_event.cc", @@ -46,6 +48,8 @@ blink_core_sources("events") { "mutation_event.h", "navigator_events.cc", "navigator_events.h", + "overscroll_event.cc", + "overscroll_event.h", "page_transition_event.cc", "page_transition_event.h", "picture_in_picture_control_event.cc", @@ -56,6 +60,8 @@ blink_core_sources("events") { "pointer_event_factory.h", "pop_state_event.cc", "pop_state_event.h", + "portal_activate_event.cc", + "portal_activate_event.h", "progress_event.cc", "progress_event.h", "promise_rejection_event.cc", diff --git a/chromium/third_party/blink/renderer/core/events/after_print_event.h b/chromium/third_party/blink/renderer/core/events/after_print_event.h new file mode 100644 index 00000000000..5fad32c6555 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/events/after_print_event.h @@ -0,0 +1,34 @@ +// 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. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_AFTER_PRINT_EVENT_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_AFTER_PRINT_EVENT_H_ + +#include "third_party/blink/renderer/core/dom/events/event.h" +#include "third_party/blink/renderer/core/event_type_names.h" + +namespace blink { + +class AfterPrintEvent final : public Event { + public: + static AfterPrintEvent* Create() { + return MakeGarbageCollected<AfterPrintEvent>(); + } + + AfterPrintEvent() + : Event(event_type_names::kAfterprint, Bubbles::kNo, Cancelable::kNo) {} + ~AfterPrintEvent() override = default; + + // beforeprint/afterprint events need to be dispatched while the execution + // context is paused. When printing, window.print() invoked by beforeprint/ + // afterprint event listeners should have no effect, hence the event dispatch + // needs to be done during the pause. + bool ShouldDispatchEvenWhenExecutionContextIsPaused() const override { + return true; + } +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_AFTER_PRINT_EVENT_H_ diff --git a/chromium/third_party/blink/renderer/core/events/animation_event.h b/chromium/third_party/blink/renderer/core/events/animation_event.h index 199d47f182a..9f468caeccf 100644 --- a/chromium/third_party/blink/renderer/core/events/animation_event.h +++ b/chromium/third_party/blink/renderer/core/events/animation_event.h @@ -35,19 +35,27 @@ class AnimationEvent final : public Event { DEFINE_WRAPPERTYPEINFO(); public: - static AnimationEvent* Create() { return new AnimationEvent; } + static AnimationEvent* Create() { + return (MakeGarbageCollected<AnimationEvent>()); + } static AnimationEvent* Create(const AtomicString& type, const String& animation_name, double elapsed_time, const String& pseudo_element) { - return new AnimationEvent(type, animation_name, elapsed_time, - pseudo_element); + return MakeGarbageCollected<AnimationEvent>(type, animation_name, + elapsed_time, pseudo_element); } static AnimationEvent* Create(const AtomicString& type, const AnimationEventInit* initializer) { - return new AnimationEvent(type, initializer); + return MakeGarbageCollected<AnimationEvent>(type, initializer); } + AnimationEvent(); + AnimationEvent(const AtomicString& type, + const String& animation_name, + double elapsed_time, + const String& pseudo_element); + AnimationEvent(const AtomicString&, const AnimationEventInit*); ~AnimationEvent() override; const String& animationName() const; @@ -59,13 +67,6 @@ class AnimationEvent final : public Event { void Trace(blink::Visitor*) override; private: - AnimationEvent(); - AnimationEvent(const AtomicString& type, - const String& animation_name, - double elapsed_time, - const String& pseudo_element); - AnimationEvent(const AtomicString&, const AnimationEventInit*); - String animation_name_; double elapsed_time_; String pseudo_element_; diff --git a/chromium/third_party/blink/renderer/core/events/animation_playback_event.h b/chromium/third_party/blink/renderer/core/events/animation_playback_event.h index ed953d6998b..c69886eedb8 100644 --- a/chromium/third_party/blink/renderer/core/events/animation_playback_event.h +++ b/chromium/third_party/blink/renderer/core/events/animation_playback_event.h @@ -18,14 +18,20 @@ class AnimationPlaybackEvent final : public Event { static AnimationPlaybackEvent* Create(const AtomicString& type, double current_time, double timeline_time) { - return new AnimationPlaybackEvent(type, current_time, timeline_time); + return MakeGarbageCollected<AnimationPlaybackEvent>(type, current_time, + timeline_time); } static AnimationPlaybackEvent* Create( const AtomicString& type, const AnimationPlaybackEventInit* initializer) { - return new AnimationPlaybackEvent(type, initializer); + return MakeGarbageCollected<AnimationPlaybackEvent>(type, initializer); } + AnimationPlaybackEvent(const AtomicString& type, + double current_time, + double timeline_time); + AnimationPlaybackEvent(const AtomicString&, + const AnimationPlaybackEventInit*); ~AnimationPlaybackEvent() override; double currentTime(bool& is_null) const; @@ -36,12 +42,6 @@ class AnimationPlaybackEvent final : public Event { void Trace(blink::Visitor*) override; private: - AnimationPlaybackEvent(const AtomicString& type, - double current_time, - double timeline_time); - AnimationPlaybackEvent(const AtomicString&, - const AnimationPlaybackEventInit*); - base::Optional<double> current_time_; base::Optional<double> timeline_time_; }; diff --git a/chromium/third_party/blink/renderer/core/events/application_cache_error_event.cc b/chromium/third_party/blink/renderer/core/events/application_cache_error_event.cc index 561ed3ace45..545095351ca 100644 --- a/chromium/third_party/blink/renderer/core/events/application_cache_error_event.cc +++ b/chromium/third_party/blink/renderer/core/events/application_cache_error_event.cc @@ -4,12 +4,12 @@ #include "third_party/blink/renderer/core/events/application_cache_error_event.h" +#include "third_party/blink/public/mojom/appcache/appcache.mojom-blink.h" #include "third_party/blink/renderer/core/event_type_names.h" namespace blink { -static const String& ErrorReasonToString( - WebApplicationCacheHost::ErrorReason reason) { +static const String& ErrorReasonToString(mojom::AppCacheErrorReason reason) { DEFINE_STATIC_LOCAL(String, error_manifest, ("manifest")); DEFINE_STATIC_LOCAL(String, error_signature, ("signature")); DEFINE_STATIC_LOCAL(String, error_resource, ("resource")); @@ -20,21 +20,21 @@ static const String& ErrorReasonToString( DEFINE_STATIC_LOCAL(String, error_unknown, ("unknown")); switch (reason) { - case WebApplicationCacheHost::kManifestError: + case mojom::AppCacheErrorReason::APPCACHE_MANIFEST_ERROR: return error_manifest; - case WebApplicationCacheHost::kSignatureError: + case mojom::AppCacheErrorReason::APPCACHE_SIGNATURE_ERROR: return error_signature; - case WebApplicationCacheHost::kResourceError: + case mojom::AppCacheErrorReason::APPCACHE_RESOURCE_ERROR: return error_resource; - case WebApplicationCacheHost::kChangedError: + case mojom::AppCacheErrorReason::APPCACHE_CHANGED_ERROR: return error_changed; - case WebApplicationCacheHost::kAbortError: + case mojom::AppCacheErrorReason::APPCACHE_ABORT_ERROR: return error_abort; - case WebApplicationCacheHost::kQuotaError: + case mojom::AppCacheErrorReason::APPCACHE_QUOTA_ERROR: return error_quota; - case WebApplicationCacheHost::kPolicyError: + case mojom::AppCacheErrorReason::APPCACHE_POLICY_ERROR: return error_policy; - case WebApplicationCacheHost::kUnknownError: + case mojom::AppCacheErrorReason::APPCACHE_UNKNOWN_ERROR: return error_unknown; } NOTREACHED(); @@ -42,7 +42,7 @@ static const String& ErrorReasonToString( } ApplicationCacheErrorEvent::ApplicationCacheErrorEvent( - WebApplicationCacheHost::ErrorReason reason, + mojom::AppCacheErrorReason reason, const String& url, int status, const String& message) diff --git a/chromium/third_party/blink/renderer/core/events/application_cache_error_event.h b/chromium/third_party/blink/renderer/core/events/application_cache_error_event.h index c4822d2dfc1..a36022cabfc 100644 --- a/chromium/third_party/blink/renderer/core/events/application_cache_error_event.h +++ b/chromium/third_party/blink/renderer/core/events/application_cache_error_event.h @@ -5,6 +5,7 @@ #ifndef THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_APPLICATION_CACHE_ERROR_EVENT_H_ #define THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_APPLICATION_CACHE_ERROR_EVENT_H_ +#include "third_party/blink/public/mojom/appcache/appcache.mojom-blink.h" #include "third_party/blink/public/platform/web_application_cache_host_client.h" #include "third_party/blink/renderer/core/dom/events/event.h" #include "third_party/blink/renderer/core/event_interface_names.h" @@ -17,20 +18,27 @@ class ApplicationCacheErrorEvent final : public Event { DEFINE_WRAPPERTYPEINFO(); public: + ApplicationCacheErrorEvent(mojom::AppCacheErrorReason, + const String& url, + int status, + const String& message); + ApplicationCacheErrorEvent(const AtomicString& event_type, + const ApplicationCacheErrorEventInit* initializer); ~ApplicationCacheErrorEvent() override; - static ApplicationCacheErrorEvent* Create( - WebApplicationCacheHost::ErrorReason reason, - const String& url, - int status, - const String& message) { - return new ApplicationCacheErrorEvent(reason, url, status, message); + static ApplicationCacheErrorEvent* Create(mojom::AppCacheErrorReason reason, + const String& url, + int status, + const String& message) { + return MakeGarbageCollected<ApplicationCacheErrorEvent>(reason, url, status, + message); } static ApplicationCacheErrorEvent* Create( const AtomicString& event_type, const ApplicationCacheErrorEventInit* initializer) { - return new ApplicationCacheErrorEvent(event_type, initializer); + return MakeGarbageCollected<ApplicationCacheErrorEvent>(event_type, + initializer); } const String& reason() const { return reason_; } @@ -45,13 +53,6 @@ class ApplicationCacheErrorEvent final : public Event { void Trace(blink::Visitor*) override; private: - ApplicationCacheErrorEvent(WebApplicationCacheHost::ErrorReason, - const String& url, - int status, - const String& message); - ApplicationCacheErrorEvent(const AtomicString& event_type, - const ApplicationCacheErrorEventInit* initializer); - String reason_; String url_; int status_; diff --git a/chromium/third_party/blink/renderer/core/events/before_print_event.h b/chromium/third_party/blink/renderer/core/events/before_print_event.h new file mode 100644 index 00000000000..20b02b73593 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/events/before_print_event.h @@ -0,0 +1,34 @@ +// 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. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_BEFORE_PRINT_EVENT_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_BEFORE_PRINT_EVENT_H_ + +#include "third_party/blink/renderer/core/dom/events/event.h" +#include "third_party/blink/renderer/core/event_type_names.h" + +namespace blink { + +class BeforePrintEvent final : public Event { + public: + static BeforePrintEvent* Create() { + return MakeGarbageCollected<BeforePrintEvent>(); + } + + BeforePrintEvent() + : Event(event_type_names::kBeforeprint, Bubbles::kNo, Cancelable::kNo) {} + ~BeforePrintEvent() override = default; + + // beforeprint/afterprint events need to be dispatched while the execution + // context is paused. When printing, window.print() invoked by beforeprint/ + // afterprint event listeners should have no effect, hence the event dispatch + // needs to be done during the pause. + bool ShouldDispatchEvenWhenExecutionContextIsPaused() const override { + return true; + } +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_BEFORE_PRINT_EVENT_H_ diff --git a/chromium/third_party/blink/renderer/core/events/before_text_inserted_event.h b/chromium/third_party/blink/renderer/core/events/before_text_inserted_event.h index 13a5d2628c6..d593f9e9946 100644 --- a/chromium/third_party/blink/renderer/core/events/before_text_inserted_event.h +++ b/chromium/third_party/blink/renderer/core/events/before_text_inserted_event.h @@ -32,10 +32,11 @@ namespace blink { class BeforeTextInsertedEvent final : public Event { public: + explicit BeforeTextInsertedEvent(const String&); ~BeforeTextInsertedEvent() override; static BeforeTextInsertedEvent* Create(const String& text) { - return new BeforeTextInsertedEvent(text); + return MakeGarbageCollected<BeforeTextInsertedEvent>(text); } const AtomicString& InterfaceName() const override; @@ -47,8 +48,6 @@ class BeforeTextInsertedEvent final : public Event { void Trace(blink::Visitor*) override; private: - explicit BeforeTextInsertedEvent(const String&); - String text_; }; diff --git a/chromium/third_party/blink/renderer/core/events/before_unload_event.h b/chromium/third_party/blink/renderer/core/events/before_unload_event.h index 6d735418639..2782808c164 100644 --- a/chromium/third_party/blink/renderer/core/events/before_unload_event.h +++ b/chromium/third_party/blink/renderer/core/events/before_unload_event.h @@ -34,9 +34,12 @@ class BeforeUnloadEvent final : public Event { DEFINE_WRAPPERTYPEINFO(); public: + BeforeUnloadEvent(); ~BeforeUnloadEvent() override; - static BeforeUnloadEvent* Create() { return new BeforeUnloadEvent; } + static BeforeUnloadEvent* Create() { + return MakeGarbageCollected<BeforeUnloadEvent>(); + } bool IsBeforeUnloadEvent() const override; @@ -49,11 +52,16 @@ class BeforeUnloadEvent final : public Event { return event_interface_names::kBeforeUnloadEvent; } + // A confirmation dialog for leaving a page is expected to be shown + // regardless of the state of the page. So, beforeunload's event + // listeners should always run regardless of pause. + bool ShouldDispatchEvenWhenExecutionContextIsPaused() const override { + return true; + } + void Trace(blink::Visitor*) override; private: - BeforeUnloadEvent(); - String return_value_; }; diff --git a/chromium/third_party/blink/renderer/core/events/clipboard_event.h b/chromium/third_party/blink/renderer/core/events/clipboard_event.h index a0a8afbf758..a0f55a6099c 100644 --- a/chromium/third_party/blink/renderer/core/events/clipboard_event.h +++ b/chromium/third_party/blink/renderer/core/events/clipboard_event.h @@ -35,16 +35,18 @@ class ClipboardEvent final : public Event { DEFINE_WRAPPERTYPEINFO(); public: + ClipboardEvent(const AtomicString& type, DataTransfer* clipboard_data); + ClipboardEvent(const AtomicString& type, const ClipboardEventInit*); ~ClipboardEvent() override; static ClipboardEvent* Create(const AtomicString& type, DataTransfer* data_transfer) { - return new ClipboardEvent(type, data_transfer); + return MakeGarbageCollected<ClipboardEvent>(type, data_transfer); } static ClipboardEvent* Create(const AtomicString& type, const ClipboardEventInit* initializer) { - return new ClipboardEvent(type, initializer); + return MakeGarbageCollected<ClipboardEvent>(type, initializer); } DataTransfer* clipboardData() const { return clipboard_data_.Get(); } @@ -52,10 +54,6 @@ class ClipboardEvent final : public Event { void Trace(blink::Visitor*) override; private: - ClipboardEvent(const AtomicString& type, - DataTransfer* clipboard_data); - ClipboardEvent(const AtomicString& type, const ClipboardEventInit*); - const AtomicString& InterfaceName() const override; bool IsClipboardEvent() const override; diff --git a/chromium/third_party/blink/renderer/core/events/composition_event.h b/chromium/third_party/blink/renderer/core/events/composition_event.h index 6588fe28977..ec3bc420141 100644 --- a/chromium/third_party/blink/renderer/core/events/composition_event.h +++ b/chromium/third_party/blink/renderer/core/events/composition_event.h @@ -36,19 +36,24 @@ class CompositionEvent final : public UIEvent { DEFINE_WRAPPERTYPEINFO(); public: - static CompositionEvent* Create() { return new CompositionEvent; } + static CompositionEvent* Create() { + return MakeGarbageCollected<CompositionEvent>(); + } static CompositionEvent* Create(const AtomicString& type, AbstractView* view, const String& data) { - return new CompositionEvent(type, view, data); + return MakeGarbageCollected<CompositionEvent>(type, view, data); } static CompositionEvent* Create(const AtomicString& type, const CompositionEventInit* initializer) { - return new CompositionEvent(type, initializer); + return MakeGarbageCollected<CompositionEvent>(type, initializer); } + CompositionEvent(); + CompositionEvent(const AtomicString& type, AbstractView*, const String&); + CompositionEvent(const AtomicString& type, const CompositionEventInit*); ~CompositionEvent() override; void initCompositionEvent(const AtomicString& type, @@ -66,10 +71,6 @@ class CompositionEvent final : public UIEvent { void Trace(blink::Visitor*) override; private: - CompositionEvent(); - CompositionEvent(const AtomicString& type, AbstractView*, const String&); - CompositionEvent(const AtomicString& type, const CompositionEventInit*); - String data_; }; diff --git a/chromium/third_party/blink/renderer/core/events/composition_event.idl b/chromium/third_party/blink/renderer/core/events/composition_event.idl index 891ba598387..fd8a17947b0 100644 --- a/chromium/third_party/blink/renderer/core/events/composition_event.idl +++ b/chromium/third_party/blink/renderer/core/events/composition_event.idl @@ -34,9 +34,9 @@ // https://w3c.github.io/uievents/#idl-interface-CompositionEvent-initializers // TODO(foolip): None of the initCompositionEvent() arguments should be // optional, and the spec has a locale argument after data. - [Measure] void initCompositionEvent([Default=Undefined] optional DOMString type, - [Default=Undefined] optional boolean bubbles, - [Default=Undefined] optional boolean cancelable, - [Default=Undefined] optional Window? view, - [Default=Undefined] optional DOMString data); + [Measure] void initCompositionEvent([DefaultValue=Undefined] optional DOMString type, + [DefaultValue=Undefined] optional boolean bubbles, + [DefaultValue=Undefined] optional boolean cancelable, + [DefaultValue=Undefined] optional Window? view, + [DefaultValue=Undefined] optional DOMString data); }; diff --git a/chromium/third_party/blink/renderer/core/events/error_event.idl b/chromium/third_party/blink/renderer/core/events/error_event.idl index d6298b109c8..89d3b0cde09 100644 --- a/chromium/third_party/blink/renderer/core/events/error_event.idl +++ b/chromium/third_party/blink/renderer/core/events/error_event.idl @@ -32,8 +32,8 @@ [ Constructor(DOMString type, optional ErrorEventInit eventInitDict), - ConstructorCallWith=ScriptState - // TODO(foolip): Exposed=(Window,Worker) + ConstructorCallWith=ScriptState, + Exposed=(Window,Worker) ] interface ErrorEvent : Event { readonly attribute DOMString message; readonly attribute DOMString filename; diff --git a/chromium/third_party/blink/renderer/core/events/event_type_names.json5 b/chromium/third_party/blink/renderer/core/events/event_type_names.json5 index 7ccc7fe8402..dcf0c8b722c 100644 --- a/chromium/third_party/blink/renderer/core/events/event_type_names.json5 +++ b/chromium/third_party/blink/renderer/core/events/event_type_names.json5 @@ -30,6 +30,7 @@ "addsourcebuffer", "addstream", "addtrack", + "advertisementreceived", "afterprint", "animationend", "animationiteration", @@ -105,6 +106,7 @@ "dragstart", "drop", "durationchange", + "elementtimingbufferfull", "emptied", "encrypted", "end", @@ -191,6 +193,7 @@ "online", "open", "orientationchange", + "overscroll", "pagehide", "pageshow", "paste", @@ -214,6 +217,7 @@ "pointerrawmove", "pointerup", "popstate", + "portalactivate", "progress", "processorerror", "push", @@ -233,6 +237,7 @@ "result", "resume", "scroll", + "scrollend", "search", "securitypolicyviolation", "seeked", diff --git a/chromium/third_party/blink/renderer/core/events/input_event.cc b/chromium/third_party/blink/renderer/core/events/input_event.cc index 26f60649ea8..9b4eb5304bd 100644 --- a/chromium/third_party/blink/renderer/core/events/input_event.cc +++ b/chromium/third_party/blink/renderer/core/events/input_event.cc @@ -4,6 +4,7 @@ #include "third_party/blink/renderer/core/events/input_event.h" +#include "base/stl_util.h" #include "third_party/blink/public/platform/web_editing_command_type.h" #include "third_party/blink/renderer/core/dom/events/event_dispatcher.h" #include "third_party/blink/renderer/core/dom/range.h" @@ -59,7 +60,7 @@ const struct { }; static_assert( - arraysize(kInputTypeStringNameMap) == + base::size(kInputTypeStringNameMap) == static_cast<size_t>(InputEvent::InputType::kNumberOfInputTypes), "must handle all InputEvent::InputType"); diff --git a/chromium/third_party/blink/renderer/core/events/message_event.idl b/chromium/third_party/blink/renderer/core/events/message_event.idl index 317eda18574..250ed2ce591 100644 --- a/chromium/third_party/blink/renderer/core/events/message_event.idl +++ b/chromium/third_party/blink/renderer/core/events/message_event.idl @@ -40,14 +40,14 @@ [CachedAttribute=isPortsDirty] readonly attribute FrozenArray<MessagePort> ports; [RuntimeEnabled=UserActivationAPI] readonly attribute UserActivation? userActivation; - // TODO(foolip): none of the arguments should have [Default=Undefined] (they + // TODO(foolip): none of the arguments should have [DefaultValue=Undefined] (they // have other default values in the spec) and |sourceArg|'s type is wrong. [Custom, MeasureAs=InitMessageEvent] void initMessageEvent(DOMString typeArg, - [Default=Undefined] optional boolean canBubbleArg, - [Default=Undefined] optional boolean cancelableArg, - [Default=Undefined] optional any dataArg, - [Default=Undefined] optional DOMString originArg, - [Default=Undefined] optional DOMString lastEventIdArg, - [Default=Undefined] optional EventTarget sourceArg, - [Default=Undefined] optional sequence<MessagePort> portsArg); + [DefaultValue=Undefined] optional boolean canBubbleArg, + [DefaultValue=Undefined] optional boolean cancelableArg, + [DefaultValue=Undefined] optional any dataArg, + [DefaultValue=Undefined] optional DOMString originArg, + [DefaultValue=Undefined] optional DOMString lastEventIdArg, + [DefaultValue=Undefined] optional EventTarget sourceArg, + [DefaultValue=Undefined] optional sequence<MessagePort> portsArg); }; diff --git a/chromium/third_party/blink/renderer/core/events/mouse_event.idl b/chromium/third_party/blink/renderer/core/events/mouse_event.idl index 8dc2e487a73..3135644e421 100644 --- a/chromium/third_party/blink/renderer/core/events/mouse_event.idl +++ b/chromium/third_party/blink/renderer/core/events/mouse_event.idl @@ -39,21 +39,21 @@ // https://w3c.github.io/uievents/#idl-interface-MouseEvent-initializers // TODO(foolip): None of the initMouseEvent() arguments should be optional. - [CallWith=ScriptState, Measure] void initMouseEvent([Default=Undefined] optional DOMString type, - [Default=Undefined] optional boolean bubbles, - [Default=Undefined] optional boolean cancelable, - [Default=Undefined] optional Window? view, - [Default=Undefined] optional long detail, - [Default=Undefined] optional long screenX, - [Default=Undefined] optional long screenY, - [Default=Undefined] optional long clientX, - [Default=Undefined] optional long clientY, - [Default=Undefined] optional boolean ctrlKey, - [Default=Undefined] optional boolean altKey, - [Default=Undefined] optional boolean shiftKey, - [Default=Undefined] optional boolean metaKey, - [Default=Undefined] optional unsigned short button, - [Default=Undefined] optional EventTarget? relatedTarget); + [CallWith=ScriptState, Measure] void initMouseEvent([DefaultValue=Undefined] optional DOMString type, + [DefaultValue=Undefined] optional boolean bubbles, + [DefaultValue=Undefined] optional boolean cancelable, + [DefaultValue=Undefined] optional Window? view, + [DefaultValue=Undefined] optional long detail, + [DefaultValue=Undefined] optional long screenX, + [DefaultValue=Undefined] optional long screenY, + [DefaultValue=Undefined] optional long clientX, + [DefaultValue=Undefined] optional long clientY, + [DefaultValue=Undefined] optional boolean ctrlKey, + [DefaultValue=Undefined] optional boolean altKey, + [DefaultValue=Undefined] optional boolean shiftKey, + [DefaultValue=Undefined] optional boolean metaKey, + [DefaultValue=Undefined] optional unsigned short button, + [DefaultValue=Undefined] optional EventTarget? relatedTarget); readonly attribute double pageX; readonly attribute double pageY; diff --git a/chromium/third_party/blink/renderer/core/events/mutation_event.idl b/chromium/third_party/blink/renderer/core/events/mutation_event.idl index c377ae55fd9..562049599e0 100644 --- a/chromium/third_party/blink/renderer/core/events/mutation_event.idl +++ b/chromium/third_party/blink/renderer/core/events/mutation_event.idl @@ -31,12 +31,12 @@ interface MutationEvent : Event { readonly attribute DOMString attrName; readonly attribute unsigned short attrChange; // TODO(foolip): None of the initMutationEvent() arguments should be optional. - [Measure] void initMutationEvent([Default=Undefined] optional DOMString type, - [Default=Undefined] optional boolean bubbles, - [Default=Undefined] optional boolean cancelable, - [Default=Undefined] optional Node? relatedNode, - [Default=Undefined] optional DOMString prevValue, - [Default=Undefined] optional DOMString newValue, - [Default=Undefined] optional DOMString attrName, - [Default=Undefined] optional unsigned short attrChange); + [Measure] void initMutationEvent([DefaultValue=Undefined] optional DOMString type, + [DefaultValue=Undefined] optional boolean bubbles, + [DefaultValue=Undefined] optional boolean cancelable, + [DefaultValue=Undefined] optional Node? relatedNode, + [DefaultValue=Undefined] optional DOMString prevValue, + [DefaultValue=Undefined] optional DOMString newValue, + [DefaultValue=Undefined] optional DOMString attrName, + [DefaultValue=Undefined] optional unsigned short attrChange); }; diff --git a/chromium/third_party/blink/renderer/core/events/navigator_events.idl b/chromium/third_party/blink/renderer/core/events/navigator_events.idl index 0bc89e285f8..da8d0e7af72 100644 --- a/chromium/third_party/blink/renderer/core/events/navigator_events.idl +++ b/chromium/third_party/blink/renderer/core/events/navigator_events.idl @@ -33,5 +33,5 @@ [ ImplementedAs=NavigatorEvents ] partial interface Navigator { - readonly attribute long maxTouchPoints; + [HighEntropy, MeasureAs=NavigatorMaxTouchPoints] readonly attribute long maxTouchPoints; }; diff --git a/chromium/third_party/blink/renderer/core/events/overscroll_event.cc b/chromium/third_party/blink/renderer/core/events/overscroll_event.cc new file mode 100644 index 00000000000..d171cb08091 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/events/overscroll_event.cc @@ -0,0 +1,25 @@ +// 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 "third_party/blink/renderer/core/events/overscroll_event.h" + +namespace blink { +OverscrollEvent::OverscrollEvent(const AtomicString& type, + double delta_x, + double delta_y) + : Event(type, Bubbles::kNo, Cancelable::kNo), + delta_x_(delta_x), + delta_y_(delta_y) {} + +OverscrollEvent::OverscrollEvent(const AtomicString& type, + const OverscrollEventInit* initializer) + : Event(type, Bubbles::kNo, Cancelable::kNo), + delta_x_(initializer->deltaX()), + delta_y_(initializer->deltaY()) {} + +void OverscrollEvent::Trace(blink::Visitor* visitor) { + Event::Trace(visitor); +} + +} // namespace blink diff --git a/chromium/third_party/blink/renderer/core/events/overscroll_event.h b/chromium/third_party/blink/renderer/core/events/overscroll_event.h new file mode 100644 index 00000000000..ab7cffe0ab6 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/events/overscroll_event.h @@ -0,0 +1,42 @@ +// 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. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_OVERSCROLL_EVENT_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_OVERSCROLL_EVENT_H_ + +#include "third_party/blink/renderer/core/dom/events/event.h" +#include "third_party/blink/renderer/core/events/overscroll_event_init.h" + +namespace blink { + +class OverscrollEvent final : public Event { + DEFINE_WRAPPERTYPEINFO(); + + public: + static OverscrollEvent* Create(const AtomicString& type, + double delta_x, + double delta_y) { + return MakeGarbageCollected<OverscrollEvent>(type, delta_x, delta_y); + } + static OverscrollEvent* Create(const AtomicString& type, + const OverscrollEventInit* initializer) { + return MakeGarbageCollected<OverscrollEvent>(type, initializer); + } + + OverscrollEvent(const AtomicString&, double delta_x, double delta_y); + OverscrollEvent(const AtomicString&, const OverscrollEventInit*); + + double deltaX() const { return delta_x_; } + double deltaY() const { return delta_y_; } + + void Trace(blink::Visitor*) override; + + private: + double delta_x_ = 0; + double delta_y_ = 0; +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_OVERSCROLL_EVENT_H_ diff --git a/chromium/third_party/blink/renderer/core/events/overscroll_event.idl b/chromium/third_party/blink/renderer/core/events/overscroll_event.idl new file mode 100644 index 00000000000..a29ed0f7b85 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/events/overscroll_event.idl @@ -0,0 +1,13 @@ +// 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. + +// TODO(sahel): Add link to w3c. https://crbugs.com/907601 + +[ + Constructor(DOMString type, optional OverscrollEventInit eventInitDict), + RuntimeEnabled=OverscrollCustomization +] interface OverscrollEvent : Event { + readonly attribute double deltaX; + readonly attribute double deltaY; +}; diff --git a/chromium/third_party/blink/renderer/core/events/overscroll_event_init.idl b/chromium/third_party/blink/renderer/core/events/overscroll_event_init.idl new file mode 100644 index 00000000000..6d9e286b916 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/events/overscroll_event_init.idl @@ -0,0 +1,10 @@ +// 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. + +// TODO(sahel): Add link to w3c. https://crbugs.com/907601 + +dictionary OverscrollEventInit : EventInit { + double deltaX = 0.0; + double deltaY = 0.0; +}; diff --git a/chromium/third_party/blink/renderer/core/events/pointer_event.h b/chromium/third_party/blink/renderer/core/events/pointer_event.h index 22626408581..8b90668588b 100644 --- a/chromium/third_party/blink/renderer/core/events/pointer_event.h +++ b/chromium/third_party/blink/renderer/core/events/pointer_event.h @@ -29,7 +29,7 @@ class CORE_EXPORT PointerEvent final : public MouseEvent { const PointerEventInit*, TimeTicks platform_time_stamp); - int32_t pointerId() const { return pointer_id_; } + PointerId pointerId() const { return pointer_id_; } double width() const { return width_; } double height() const { return height_; } float pressure() const { return pressure_; } @@ -70,7 +70,7 @@ class CORE_EXPORT PointerEvent final : public MouseEvent { void Trace(blink::Visitor*) override; private: - int32_t pointer_id_; + PointerId pointer_id_; double width_; double height_; float pressure_; diff --git a/chromium/third_party/blink/renderer/core/events/pointer_event_factory.cc b/chromium/third_party/blink/renderer/core/events/pointer_event_factory.cc index 7b57f3554c0..12d5f4503fc 100644 --- a/chromium/third_party/blink/renderer/core/events/pointer_event_factory.cc +++ b/chromium/third_party/blink/renderer/core/events/pointer_event_factory.cc @@ -181,10 +181,10 @@ HeapVector<Member<PointerEvent>> PointerEventFactory::CreateEventSequence( return result; } -const int PointerEventFactory::kInvalidId = 0; +const PointerId PointerEventFactory::kInvalidId = 0; // Mouse id is 1 to behave the same as MS Edge for compatibility reasons. -const int PointerEventFactory::kMouseId = 1; +const PointerId PointerEventFactory::kMouseId = 1; PointerEventInit* PointerEventFactory::ConvertIdTypeButtonsEvent( const WebPointerEvent& web_pointer_event) { @@ -220,8 +220,8 @@ PointerEventInit* PointerEventFactory::ConvertIdTypeButtonsEvent( pointer_event_init->setButtons(buttons); const IncomingId incoming_id(pointer_type, web_pointer_event.id); - int pointer_id = AddIdAndActiveButtons(incoming_id, buttons != 0, - web_pointer_event.hovering); + PointerId pointer_id = AddIdAndActiveButtons(incoming_id, buttons != 0, + web_pointer_event.hovering); pointer_event_init->setPointerId(pointer_id); pointer_event_init->setPointerType( PointerTypeNameForWebPointPointerType(pointer_type)); @@ -460,9 +460,9 @@ void PointerEventFactory::Clear() { current_id_ = PointerEventFactory::kMouseId + 1; } -int PointerEventFactory::AddIdAndActiveButtons(const IncomingId p, - bool is_active_buttons, - bool hovering) { +PointerId PointerEventFactory::AddIdAndActiveButtons(const IncomingId p, + bool is_active_buttons, + bool hovering) { // Do not add extra mouse pointer as it was added in initialization if (p.GetPointerType() == WebPointerProperties::PointerType::kMouse) { pointer_id_mapping_.Set(kMouseId, @@ -471,14 +471,14 @@ int PointerEventFactory::AddIdAndActiveButtons(const IncomingId p, } if (pointer_incoming_id_mapping_.Contains(p)) { - int mapped_id = pointer_incoming_id_mapping_.at(p); + PointerId mapped_id = pointer_incoming_id_mapping_.at(p); pointer_id_mapping_.Set(mapped_id, PointerAttributes(p, is_active_buttons, hovering)); return mapped_id; } int type_int = p.PointerTypeInt(); // We do not handle the overflow of m_currentId as it should be very rare - int mapped_id = current_id_++; + PointerId mapped_id = current_id_++; if (!id_count_[type_int]) primary_id_[type_int] = mapped_id; id_count_[type_int]++; @@ -488,7 +488,7 @@ int PointerEventFactory::AddIdAndActiveButtons(const IncomingId p, return mapped_id; } -bool PointerEventFactory::Remove(const int mapped_id) { +bool PointerEventFactory::Remove(const PointerId mapped_id) { // Do not remove mouse pointer id as it should always be there if (mapped_id == kMouseId || !pointer_id_mapping_.Contains(mapped_id)) return false; @@ -504,12 +504,13 @@ bool PointerEventFactory::Remove(const int mapped_id) { return true; } -Vector<int> PointerEventFactory::GetPointerIdsOfNonHoveringPointers() const { - Vector<int> mapped_ids; +Vector<PointerId> PointerEventFactory::GetPointerIdsOfNonHoveringPointers() + const { + Vector<PointerId> mapped_ids; for (auto iter = pointer_id_mapping_.begin(); iter != pointer_id_mapping_.end(); ++iter) { - int mapped_id = iter->key; + PointerId mapped_id = iter->key; if (!iter->value.hovering) mapped_ids.push_back(mapped_id); } @@ -519,7 +520,7 @@ Vector<int> PointerEventFactory::GetPointerIdsOfNonHoveringPointers() const { return mapped_ids; } -bool PointerEventFactory::IsPrimary(int mapped_id) const { +bool PointerEventFactory::IsPrimary(PointerId mapped_id) const { if (!pointer_id_mapping_.Contains(mapped_id)) return false; @@ -527,7 +528,7 @@ bool PointerEventFactory::IsPrimary(int mapped_id) const { return primary_id_[p.PointerTypeInt()] == mapped_id; } -bool PointerEventFactory::IsActive(const int pointer_id) const { +bool PointerEventFactory::IsActive(const PointerId pointer_id) const { return pointer_id_mapping_.Contains(pointer_id); } @@ -542,24 +543,25 @@ bool PointerEventFactory::IsPrimary( if (!id_count_[static_cast<int>(properties.pointer_type)]) return true; - int pointer_id = GetPointerEventId(properties); + PointerId pointer_id = GetPointerEventId(properties); return (pointer_id != PointerEventFactory::kInvalidId && IsPrimary(pointer_id)); } -bool PointerEventFactory::IsActiveButtonsState(const int pointer_id) const { +bool PointerEventFactory::IsActiveButtonsState( + const PointerId pointer_id) const { return pointer_id_mapping_.Contains(pointer_id) && pointer_id_mapping_.at(pointer_id).is_active_buttons; } WebPointerProperties::PointerType PointerEventFactory::GetPointerType( - int pointer_id) const { + PointerId pointer_id) const { if (!IsActive(pointer_id)) return WebPointerProperties::PointerType::kUnknown; return pointer_id_mapping_.at(pointer_id).incoming_id.GetPointerType(); } -int PointerEventFactory::GetPointerEventId( +PointerId PointerEventFactory::GetPointerEventId( const WebPointerProperties& properties) const { if (properties.pointer_type == WebPointerProperties::PointerType::kMouse) return PointerEventFactory::kMouseId; diff --git a/chromium/third_party/blink/renderer/core/events/pointer_event_factory.h b/chromium/third_party/blink/renderer/core/events/pointer_event_factory.h index 67413673980..6592a2b4ffb 100644 --- a/chromium/third_party/blink/renderer/core/events/pointer_event_factory.h +++ b/chromium/third_party/blink/renderer/core/events/pointer_event_factory.h @@ -35,9 +35,8 @@ class CORE_EXPORT PointerEventFactory { const Vector<WebPointerEvent>& predicted_events, LocalDOMWindow* view); - PointerEvent* CreatePointerCancelEvent( - const int pointer_id, - TimeTicks platfrom_time_stamp); + PointerEvent* CreatePointerCancelEvent(const PointerId pointer_id, + TimeTicks platfrom_time_stamp); // For creating raw move events in chorded button case. PointerEvent* CreatePointerRawMoveEvent(PointerEvent*); @@ -56,16 +55,16 @@ class CORE_EXPORT PointerEventFactory { // When a particular pointerId is removed, the id is considered free even // though there might have been other PointerEvents that were generated with // the same id before. - bool Remove(const int); + bool Remove(const PointerId); // Returns all ids of pointers that are not hovering. - Vector<int> GetPointerIdsOfNonHoveringPointers() const; + Vector<PointerId> GetPointerIdsOfNonHoveringPointers() const; // Returns whether a pointer id exists and active. - bool IsActive(const int) const; + bool IsActive(const PointerId) const; // Returns whether a pointer id exists and has at least one pressed button. - bool IsActiveButtonsState(const int) const; + bool IsActiveButtonsState(const PointerId) const; // Returns the id of the pointer event corresponding to the given pointer // properties if exists otherwise s_invalidId. @@ -73,24 +72,23 @@ class CORE_EXPORT PointerEventFactory { // Returns pointerType of for the given pointerId if such id is active. // Otherwise it returns WebPointerProperties::PointerType::Unknown. - WebPointerProperties::PointerType GetPointerType(int pointer_id) const; + WebPointerProperties::PointerType GetPointerType(PointerId pointer_id) const; // Returns whether a WebPoinerProperties is primary pointer. bool IsPrimary(const WebPointerProperties&) const; - static const int kMouseId; + static const PointerId kMouseId; // Removes pointer_id from the map. - void RemoveLastPosition(const int pointer_id); + void RemoveLastPosition(const PointerId pointer_id); // Returns last_position of for the given pointerId if such id is active. // Otherwise it returns the PositionInScreen of the given events, so we will // get movement = 0 when there is no last position. - FloatPoint GetLastPointerPosition(int pointer_id, + FloatPoint GetLastPointerPosition(PointerId pointer_id, const WebPointerProperties& event) const; private: - typedef WTF::UnsignedWithZeroKeyHashTraits<int> UnsignedHash; typedef struct IncomingId : public std::pair<int, int> { IncomingId() = default; IncomingId(WebPointerProperties::PointerType pointer_type, int raw_id) @@ -115,10 +113,10 @@ class CORE_EXPORT PointerEventFactory { hovering(hovering) {} } PointerAttributes; - int AddIdAndActiveButtons(const IncomingId, - bool is_active_buttons, - bool hovering); - bool IsPrimary(const int) const; + PointerId AddIdAndActiveButtons(const IncomingId, + bool is_active_buttons, + bool hovering); + bool IsPrimary(const PointerId) const; PointerEventInit* ConvertIdTypeButtonsEvent(const WebPointerEvent&); void SetEventSpecificFields(PointerEventInit*, const AtomicString& type); @@ -134,17 +132,21 @@ class CORE_EXPORT PointerEventFactory { const Vector<WebPointerEvent>& event_list, LocalDOMWindow* view); - void SetLastPosition(int pointer_id, const WebPointerProperties& event); + void SetLastPosition(PointerId pointer_id, const WebPointerProperties& event); - static const int kInvalidId; + static const PointerId kInvalidId; - int current_id_; + PointerId current_id_; HashMap<IncomingId, - int, + PointerId, WTF::PairHash<int, int>, - WTF::PairHashTraits<UnsignedHash, UnsignedHash>> + WTF::PairHashTraits<WTF::UnsignedWithZeroKeyHashTraits<int>, + WTF::UnsignedWithZeroKeyHashTraits<int>>> pointer_incoming_id_mapping_; - HashMap<int, PointerAttributes, WTF::IntHash<int>, UnsignedHash> + HashMap<PointerId, + PointerAttributes, + WTF::IntHash<PointerId>, + WTF::UnsignedWithZeroKeyHashTraits<PointerId>> pointer_id_mapping_; int primary_id_[static_cast<int>( WebPointerProperties::PointerType::kLastEntry) + @@ -153,7 +155,10 @@ class CORE_EXPORT PointerEventFactory { WebPointerProperties::PointerType::kLastEntry) + 1]; - HashMap<int, FloatPoint, WTF::IntHash<int>, UnsignedHash> + HashMap<PointerId, + FloatPoint, + WTF::IntHash<PointerId>, + WTF::UnsignedWithZeroKeyHashTraits<PointerId>> pointer_id_last_position_mapping_; }; diff --git a/chromium/third_party/blink/renderer/core/events/portal_activate_event.cc b/chromium/third_party/blink/renderer/core/events/portal_activate_event.cc new file mode 100644 index 00000000000..5d7ddae0ea5 --- /dev/null +++ b/chromium/third_party/blink/renderer/core/events/portal_activate_event.cc @@ -0,0 +1,32 @@ +// Copyright 2019 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 "third_party/blink/renderer/core/events/portal_activate_event.h" + +#include "third_party/blink/renderer/core/event_type_names.h" +#include "third_party/blink/renderer/platform/wtf/time.h" + +namespace blink { + +PortalActivateEvent* PortalActivateEvent::Create() { + return MakeGarbageCollected<PortalActivateEvent>(); +} + +PortalActivateEvent::PortalActivateEvent() + : Event(event_type_names::kPortalactivate, + Bubbles::kNo, + Cancelable::kNo, + CurrentTimeTicks()) {} + +PortalActivateEvent::~PortalActivateEvent() = default; + +void PortalActivateEvent::Trace(blink::Visitor* visitor) { + Event::Trace(visitor); +} + +const AtomicString& PortalActivateEvent::InterfaceName() const { + return event_type_names::kPortalactivate; +} + +} // namespace blink diff --git a/chromium/third_party/blink/renderer/core/events/portal_activate_event.h b/chromium/third_party/blink/renderer/core/events/portal_activate_event.h new file mode 100644 index 00000000000..8936f89d54f --- /dev/null +++ b/chromium/third_party/blink/renderer/core/events/portal_activate_event.h @@ -0,0 +1,35 @@ +// Copyright 2019 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. + +#ifndef THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_PORTAL_ACTIVATE_EVENT_H_ +#define THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_PORTAL_ACTIVATE_EVENT_H_ + +#include "third_party/blink/renderer/platform/heap/heap.h" + +#include "third_party/blink/renderer/core/core_export.h" +#include "third_party/blink/renderer/core/dom/events/event.h" +#include "third_party/blink/renderer/core/dom/events/event_target.h" + +namespace blink { + +class CORE_EXPORT PortalActivateEvent : public Event { + DEFINE_WRAPPERTYPEINFO(); + + public: + static PortalActivateEvent* Create(); + + PortalActivateEvent(); + ~PortalActivateEvent() override; + + void Trace(blink::Visitor*) override; + + // Event overrides + const AtomicString& InterfaceName() const override; + + private: +}; + +} // namespace blink + +#endif // THIRD_PARTY_BLINK_RENDERER_CORE_EVENTS_PORTAL_ACTIVATE_EVENT_H_ diff --git a/chromium/third_party/blink/renderer/core/events/portal_activate_event.idl b/chromium/third_party/blink/renderer/core/events/portal_activate_event.idl new file mode 100644 index 00000000000..74e22f914fb --- /dev/null +++ b/chromium/third_party/blink/renderer/core/events/portal_activate_event.idl @@ -0,0 +1,9 @@ +// Copyright 2019 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. + +// https://wicg.github.io/portals/#the-portalactivateevent-interface + +[Exposed=Window, RuntimeEnabled=Portals] +interface PortalActivateEvent : Event { +}; diff --git a/chromium/third_party/blink/renderer/core/events/text_event.idl b/chromium/third_party/blink/renderer/core/events/text_event.idl index 2ae52eb0a1a..37ea2536407 100644 --- a/chromium/third_party/blink/renderer/core/events/text_event.idl +++ b/chromium/third_party/blink/renderer/core/events/text_event.idl @@ -35,10 +35,10 @@ interface TextEvent : UIEvent { [Measure] readonly attribute DOMString data; - [Measure] void initTextEvent([Default=Undefined] optional DOMString type, - [Default=Undefined] optional boolean bubbles, - [Default=Undefined] optional boolean cancelable, - [Default=Undefined] optional Window? view, - [Default=Undefined] optional DOMString data); + [Measure] void initTextEvent([DefaultValue=Undefined] optional DOMString type, + [DefaultValue=Undefined] optional boolean bubbles, + [DefaultValue=Undefined] optional boolean cancelable, + [DefaultValue=Undefined] optional Window? view, + [DefaultValue=Undefined] optional DOMString data); }; diff --git a/chromium/third_party/blink/renderer/core/events/touch_event_test.cc b/chromium/third_party/blink/renderer/core/events/touch_event_test.cc index 652db736442..b987a51cf00 100644 --- a/chromium/third_party/blink/renderer/core/events/touch_event_test.cc +++ b/chromium/third_party/blink/renderer/core/events/touch_event_test.cc @@ -47,7 +47,7 @@ class ConsoleCapturingChromeClient : public EmptyChromeClient { class TouchEventTest : public PageTestBase { public: void SetUp() override { - chrome_client_ = new ConsoleCapturingChromeClient(); + chrome_client_ = MakeGarbageCollected<ConsoleCapturingChromeClient>(); Page::PageClients clients; FillWithEmptyClients(clients); clients.chrome_client = chrome_client_.Get(); diff --git a/chromium/third_party/blink/renderer/core/events/ui_event.idl b/chromium/third_party/blink/renderer/core/events/ui_event.idl index 20e8fc95224..ed34dba7c05 100644 --- a/chromium/third_party/blink/renderer/core/events/ui_event.idl +++ b/chromium/third_party/blink/renderer/core/events/ui_event.idl @@ -29,11 +29,11 @@ // https://w3c.github.io/uievents/#idl-interface-UIEvent-initializers // TODO(foolip): None of the initUIEvent() arguments should be optional. - [Measure] void initUIEvent([Default=Undefined] optional DOMString type, - [Default=Undefined] optional boolean bubbles, - [Default=Undefined] optional boolean cancelable, - [Default=Undefined] optional Window? view, - [Default=Undefined] optional long detail); + [Measure] void initUIEvent([DefaultValue=Undefined] optional DOMString type, + [DefaultValue=Undefined] optional boolean bubbles, + [DefaultValue=Undefined] optional boolean cancelable, + [DefaultValue=Undefined] optional Window? view, + [DefaultValue=Undefined] optional long detail); readonly attribute unsigned long which; }; diff --git a/chromium/third_party/blink/renderer/core/events/web_input_event_conversion_test.cc b/chromium/third_party/blink/renderer/core/events/web_input_event_conversion_test.cc index ae1d84dfb87..93f5fe7822d 100644 --- a/chromium/third_party/blink/renderer/core/events/web_input_event_conversion_test.cc +++ b/chromium/third_party/blink/renderer/core/events/web_input_event_conversion_test.cc @@ -123,7 +123,7 @@ TEST(WebInputEventConversionTest, InputEventsScaling) { web_view->GetSettings()->SetViewportEnabled(true); int page_width = 640; int page_height = 480; - web_view->Resize(WebSize(page_width, page_height)); + web_view->MainFrameWidget()->Resize(WebSize(page_width, page_height)); web_view->MainFrameWidget()->UpdateAllLifecyclePhases( WebWidget::LifecycleUpdateReason::kTest); @@ -337,12 +337,11 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { web_view->GetSettings()->SetViewportEnabled(true); int page_width = 640; int page_height = 480; - web_view->Resize(WebSize(page_width, page_height)); + web_view->MainFrameWidget()->Resize(WebSize(page_width, page_height)); web_view->MainFrameWidget()->UpdateAllLifecyclePhases( WebWidget::LifecycleUpdateReason::kTest); web_view->SetPageScaleFactor(2); - web_view->MainFrameImpl()->SetInputEventsScaleForEmulation(1.5); LocalFrameView* view = ToLocalFrame(web_view->GetPage()->MainFrame())->View(); @@ -359,8 +358,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { TransformWebMouseEvent(view, web_mouse_event); FloatPoint position = transformed_event.PositionInRootFrame(); - EXPECT_FLOAT_EQ(30, position.X()); - EXPECT_FLOAT_EQ(30, position.Y()); + EXPECT_FLOAT_EQ(45, position.X()); + EXPECT_FLOAT_EQ(45, position.Y()); EXPECT_EQ(90, transformed_event.PositionInScreen().x); EXPECT_EQ(90, transformed_event.PositionInScreen().y); EXPECT_EQ(60, transformed_event.movement_x); @@ -392,8 +391,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { EXPECT_EQ(events.size(), coalescedevents.size()); FloatPoint position = coalescedevents[0].PositionInRootFrame(); - EXPECT_FLOAT_EQ(30, position.X()); - EXPECT_FLOAT_EQ(30, position.Y()); + EXPECT_FLOAT_EQ(45, position.X()); + EXPECT_FLOAT_EQ(45, position.Y()); EXPECT_EQ(90, coalescedevents[0].PositionInScreen().x); EXPECT_EQ(90, coalescedevents[0].PositionInScreen().y); @@ -401,8 +400,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { EXPECT_EQ(60, coalescedevents[0].movement_y); position = coalescedevents[1].PositionInRootFrame(); - EXPECT_FLOAT_EQ(30, position.X()); - EXPECT_FLOAT_EQ(40, position.Y()); + EXPECT_FLOAT_EQ(45, position.X()); + EXPECT_FLOAT_EQ(60, position.Y()); EXPECT_EQ(90, coalescedevents[1].PositionInScreen().x); EXPECT_EQ(120, coalescedevents[1].PositionInScreen().y); @@ -424,12 +423,12 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { TransformWebGestureEvent(view, web_gesture_event); FloatPoint position = scaled_gesture_event.PositionInRootFrame(); - EXPECT_FLOAT_EQ(30, position.X()); - EXPECT_FLOAT_EQ(30, position.Y()); + EXPECT_FLOAT_EQ(45, position.X()); + EXPECT_FLOAT_EQ(45, position.Y()); EXPECT_EQ(90, scaled_gesture_event.PositionInScreen().x); EXPECT_EQ(90, scaled_gesture_event.PositionInScreen().y); - EXPECT_EQ(20, scaled_gesture_event.DeltaXInRootFrame()); - EXPECT_EQ(20, scaled_gesture_event.DeltaYInRootFrame()); + EXPECT_EQ(30, scaled_gesture_event.DeltaXInRootFrame()); + EXPECT_EQ(30, scaled_gesture_event.DeltaYInRootFrame()); } { @@ -443,8 +442,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { WebGestureEvent scaled_gesture_event = TransformWebGestureEvent(view, web_gesture_event); IntSize area = FlooredIntSize(scaled_gesture_event.TapAreaInRootFrame()); - EXPECT_EQ(10, area.Width()); - EXPECT_EQ(10, area.Height()); + EXPECT_EQ(15, area.Width()); + EXPECT_EQ(15, area.Height()); } { @@ -458,8 +457,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { WebGestureEvent scaled_gesture_event = TransformWebGestureEvent(view, web_gesture_event); IntSize area = FlooredIntSize(scaled_gesture_event.TapAreaInRootFrame()); - EXPECT_EQ(10, area.Width()); - EXPECT_EQ(10, area.Height()); + EXPECT_EQ(15, area.Width()); + EXPECT_EQ(15, area.Height()); } { @@ -473,8 +472,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { WebGestureEvent scaled_gesture_event = TransformWebGestureEvent(view, web_gesture_event); IntSize area = FlooredIntSize(scaled_gesture_event.TapAreaInRootFrame()); - EXPECT_EQ(10, area.Width()); - EXPECT_EQ(10, area.Height()); + EXPECT_EQ(15, area.Width()); + EXPECT_EQ(15, area.Height()); } { @@ -488,8 +487,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { WebGestureEvent scaled_gesture_event = TransformWebGestureEvent(view, web_gesture_event); IntSize area = FlooredIntSize(scaled_gesture_event.TapAreaInRootFrame()); - EXPECT_EQ(10, area.Width()); - EXPECT_EQ(10, area.Height()); + EXPECT_EQ(15, area.Width()); + EXPECT_EQ(15, area.Height()); } { @@ -503,8 +502,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { WebGestureEvent scaled_gesture_event = TransformWebGestureEvent(view, web_gesture_event); IntSize area = FlooredIntSize(scaled_gesture_event.TapAreaInRootFrame()); - EXPECT_EQ(10, area.Width()); - EXPECT_EQ(10, area.Height()); + EXPECT_EQ(15, area.Width()); + EXPECT_EQ(15, area.Height()); } { @@ -518,8 +517,8 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { WebGestureEvent scaled_gesture_event = TransformWebGestureEvent(view, web_gesture_event); IntSize area = FlooredIntSize(scaled_gesture_event.TapAreaInRootFrame()); - EXPECT_EQ(10, area.Width()); - EXPECT_EQ(10, area.Height()); + EXPECT_EQ(15, area.Width()); + EXPECT_EQ(15, area.Height()); } { @@ -536,10 +535,10 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { EXPECT_FLOAT_EQ(90, transformed_event.PositionInScreen().x); EXPECT_FLOAT_EQ(90, transformed_event.PositionInScreen().y); - EXPECT_FLOAT_EQ(30, transformed_event.PositionInWidget().x); - EXPECT_FLOAT_EQ(30, transformed_event.PositionInWidget().y); - EXPECT_FLOAT_EQ(10, transformed_event.width); - EXPECT_FLOAT_EQ(10, transformed_event.height); + EXPECT_FLOAT_EQ(45, transformed_event.PositionInWidget().x); + EXPECT_FLOAT_EQ(45, transformed_event.PositionInWidget().y); + EXPECT_FLOAT_EQ(15, transformed_event.width); + EXPECT_FLOAT_EQ(15, transformed_event.height); } { @@ -569,18 +568,18 @@ TEST(WebInputEventConversionTest, InputEventsTransform) { coalescedevents[0].WebPointerEventInRootFrame(); EXPECT_FLOAT_EQ(90, transformed_event.PositionInScreen().x); EXPECT_FLOAT_EQ(90, transformed_event.PositionInScreen().y); - EXPECT_FLOAT_EQ(30, transformed_event.PositionInWidget().x); - EXPECT_FLOAT_EQ(30, transformed_event.PositionInWidget().y); - EXPECT_FLOAT_EQ(10, transformed_event.width); - EXPECT_FLOAT_EQ(10, transformed_event.height); + EXPECT_FLOAT_EQ(45, transformed_event.PositionInWidget().x); + EXPECT_FLOAT_EQ(45, transformed_event.PositionInWidget().y); + EXPECT_FLOAT_EQ(15, transformed_event.width); + EXPECT_FLOAT_EQ(15, transformed_event.height); transformed_event = coalescedevents[1].WebPointerEventInRootFrame(); EXPECT_FLOAT_EQ(120, transformed_event.PositionInScreen().x); EXPECT_FLOAT_EQ(90, transformed_event.PositionInScreen().y); - EXPECT_FLOAT_EQ(40, transformed_event.PositionInWidget().x); - EXPECT_FLOAT_EQ(30, transformed_event.PositionInWidget().y); - EXPECT_FLOAT_EQ(20, transformed_event.width); - EXPECT_FLOAT_EQ(10, transformed_event.height); + EXPECT_FLOAT_EQ(60, transformed_event.PositionInWidget().x); + EXPECT_FLOAT_EQ(45, transformed_event.PositionInWidget().y); + EXPECT_FLOAT_EQ(30, transformed_event.width); + EXPECT_FLOAT_EQ(15, transformed_event.height); } } @@ -594,7 +593,7 @@ TEST(WebInputEventConversionTest, InputEventsConversions) { web_view_helper.InitializeAndLoad(base_url + file_name); int page_width = 640; int page_height = 480; - web_view->Resize(WebSize(page_width, page_height)); + web_view->MainFrameWidget()->Resize(WebSize(page_width, page_height)); web_view->MainFrameWidget()->UpdateAllLifecyclePhases( WebWidget::LifecycleUpdateReason::kTest); @@ -632,7 +631,7 @@ TEST(WebInputEventConversionTest, VisualViewportOffset) { web_view_helper.InitializeAndLoad(base_url + file_name); int page_width = 640; int page_height = 480; - web_view->Resize(WebSize(page_width, page_height)); + web_view->MainFrameWidget()->Resize(WebSize(page_width, page_height)); web_view->MainFrameWidget()->UpdateAllLifecyclePhases( WebWidget::LifecycleUpdateReason::kTest); @@ -731,14 +730,14 @@ TEST(WebInputEventConversionTest, ElasticOverscroll) { web_view_helper.InitializeAndLoad(base_url + file_name); int page_width = 640; int page_height = 480; - web_view->Resize(WebSize(page_width, page_height)); + web_view->MainFrameWidget()->Resize(WebSize(page_width, page_height)); web_view->MainFrameWidget()->UpdateAllLifecyclePhases( WebWidget::LifecycleUpdateReason::kTest); LocalFrameView* view = ToLocalFrame(web_view->GetPage()->MainFrame())->View(); gfx::Vector2dF elastic_overscroll(10, -20); - web_view->ApplyViewportChanges( + web_view->MainFrameWidget()->ApplyViewportChanges( {gfx::ScrollOffset(), elastic_overscroll, 1.0f, 0.0f}); // Just elastic overscroll. @@ -807,12 +806,12 @@ TEST(WebInputEventConversionTest, ElasticOverscrollWithPageReload) { web_view_helper.InitializeAndLoad(base_url + file_name); int page_width = 640; int page_height = 480; - web_view->Resize(WebSize(page_width, page_height)); + web_view->MainFrameWidget()->Resize(WebSize(page_width, page_height)); web_view->MainFrameWidget()->UpdateAllLifecyclePhases( WebWidget::LifecycleUpdateReason::kTest); gfx::Vector2dF elastic_overscroll(10, -20); - web_view->ApplyViewportChanges( + web_view->MainFrameWidget()->ApplyViewportChanges( {gfx::ScrollOffset(), elastic_overscroll, 1.0f, 0.0f}); frame_test_helpers::ReloadFrame( web_view_helper.GetWebView()->MainFrameImpl()); diff --git a/chromium/third_party/blink/renderer/core/events/wheel_event.cc b/chromium/third_party/blink/renderer/core/events/wheel_event.cc index c7cb037aef2..2fa4989abf4 100644 --- a/chromium/third_party/blink/renderer/core/events/wheel_event.cc +++ b/chromium/third_party/blink/renderer/core/events/wheel_event.cc @@ -26,6 +26,7 @@ #include "third_party/blink/renderer/core/clipboard/data_transfer.h" #include "third_party/blink/renderer/core/dom/events/event_dispatcher.h" #include "third_party/blink/renderer/core/event_interface_names.h" +#include "third_party/blink/renderer/core/frame/intervention.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/use_counter.h" @@ -122,10 +123,22 @@ bool WheelEvent::IsWheelEvent() const { void WheelEvent::preventDefault() { MouseEvent::preventDefault(); + PassiveMode passive_mode = HandlingPassive(); + if (passive_mode == PassiveMode::kPassiveForcedDocumentLevel) { + String id = "PreventDefaultPassive"; + String message = + "Unable to preventDefault inside passive event listener due to " + "target being treated as passive. See " + "https://www.chromestatus.com/features/6662647093133312"; + if (view() && view()->IsLocalDOMWindow() && view()->GetFrame()) { + Intervention::GenerateReport(ToLocalDOMWindow(view())->GetFrame(), id, + message); + } + } + if (!currentTarget() || !currentTarget()->IsTopLevelNode()) return; - PassiveMode passive_mode = HandlingPassive(); if (passive_mode == PassiveMode::kPassiveForcedDocumentLevel || passive_mode == PassiveMode::kNotPassiveDefault) { if (ExecutionContext* context = currentTarget()->GetExecutionContext()) { |