Commit 2e35d508 authored by Hayato Ito's avatar Hayato Ito Committed by Commit Bot

Use a reference instead of a pointer in core/dom/events.

They never be nullptr. There are still other places which should be
a reference, which can be done in another CL.

Bug: 874385
Change-Id: I278e022b40a621115d627ac21cdbb9658f98733e
Reviewed-on: https://chromium-review.googlesource.com/c/1333167
Commit-Queue: Hayato Ito <hayato@chromium.org>
Reviewed-by: default avatarKent Tamura <tkent@chromium.org>
Cr-Commit-Position: refs/heads/master@{#607478}
parent 16c71b54
......@@ -1119,7 +1119,7 @@ void CSSAnimations::CalculateTransitionActiveInterpolations(
}
EventTarget* CSSAnimations::AnimationEventDelegate::GetEventTarget() const {
return EventPath::EventTargetRespectingTargetRules(*animation_target_);
return &EventPath::EventTargetRespectingTargetRules(*animation_target_);
}
void CSSAnimations::AnimationEventDelegate::MaybeDispatch(
......@@ -1189,7 +1189,7 @@ void CSSAnimations::AnimationEventDelegate::Trace(blink::Visitor* visitor) {
}
EventTarget* CSSAnimations::TransitionEventDelegate::GetEventTarget() const {
return EventPath::EventTargetRespectingTargetRules(*transition_target_);
return &EventPath::EventTargetRespectingTargetRules(*transition_target_);
}
void CSSAnimations::TransitionEventDelegate::OnEventCondition(
......
......@@ -70,7 +70,7 @@ EventDispatcher::EventDispatcher(Node& node, Event& event)
void EventDispatcher::DispatchScopedEvent(Node& node, Event& event) {
// We need to set the target here because it can go away by the time we
// actually fire the event.
event.SetTarget(EventPath::EventTargetRespectingTargetRules(node));
event.SetTarget(&EventPath::EventTargetRespectingTargetRules(node));
ScopedEventQueue::Instance()->EnqueueEvent(event);
}
......@@ -192,7 +192,7 @@ DispatchEventResult EventDispatcher::Dispatch() {
}
}
event_->SetTarget(EventPath::EventTargetRespectingTargetRules(*node_));
event_->SetTarget(&EventPath::EventTargetRespectingTargetRules(*node_));
#if DCHECK_IS_ON()
DCHECK(!EventDispatchForbiddenScope::IsEventDispatchForbidden());
#endif
......@@ -306,7 +306,7 @@ inline void EventDispatcher::DispatchEventAtBubbling() {
inline void EventDispatcher::DispatchEventPostProcess(
Node* activation_target,
EventDispatchHandlingState* pre_dispatch_event_handler_result) {
event_->SetTarget(EventPath::EventTargetRespectingTargetRules(*node_));
event_->SetTarget(&EventPath::EventTargetRespectingTargetRules(*node_));
// https://dom.spec.whatwg.org/#concept-event-dispatch
// 14. Unset event’s dispatch flag, stop propagation flag, and stop immediate
// propagation flag.
......
......@@ -38,13 +38,13 @@
namespace blink {
EventTarget* EventPath::EventTargetRespectingTargetRules(Node& reference_node) {
EventTarget& EventPath::EventTargetRespectingTargetRules(Node& reference_node) {
if (reference_node.IsPseudoElement()) {
DCHECK(reference_node.parentNode());
return reference_node.parentNode();
return *reference_node.parentNode();
}
return &reference_node;
return reference_node;
}
static inline bool ShouldStopAtShadowRoot(Event& event,
......@@ -133,8 +133,9 @@ void EventPath::CalculatePath() {
node_event_contexts_.ReserveCapacity(nodes_in_path.size());
for (Node* node_in_path : nodes_in_path) {
DCHECK(node_in_path);
node_event_contexts_.push_back(NodeEventContext(
node_in_path, EventTargetRespectingTargetRules(*node_in_path)));
*node_in_path, EventTargetRespectingTargetRules(*node_in_path)));
}
}
......@@ -189,7 +190,7 @@ TreeScopeEventContext* EventPath::EnsureTreeScopeEventContext(
if (parent_tree_scope_event_context &&
parent_tree_scope_event_context->Target()) {
tree_scope_event_context->SetTarget(
parent_tree_scope_event_context->Target());
*parent_tree_scope_event_context->Target());
} else if (current_target) {
tree_scope_event_context->SetTarget(
EventTargetRespectingTargetRules(*current_target));
......@@ -273,7 +274,7 @@ void EventPath::RetargetRelatedTarget(const Node& related_target_node) {
EventTarget* adjusted_related_target = FindRelatedNode(
tree_scope_event_context->GetTreeScope(), related_node_map);
DCHECK(adjusted_related_target);
tree_scope_event_context.Get()->SetRelatedTarget(adjusted_related_target);
tree_scope_event_context.Get()->SetRelatedTarget(*adjusted_related_target);
}
}
......
......@@ -82,7 +82,7 @@ class CORE_EXPORT EventPath final
NodeEventContext& TopNodeEventContext();
static EventTarget* EventTargetRespectingTargetRules(Node&);
static EventTarget& EventTargetRespectingTargetRules(Node&);
void Trace(blink::Visitor*);
void Clear() {
......
......@@ -35,10 +35,8 @@
namespace blink {
NodeEventContext::NodeEventContext(Node* node, EventTarget* current_target)
: node_(node), current_target_(current_target) {
DCHECK(node_);
}
NodeEventContext::NodeEventContext(Node& node, EventTarget& current_target)
: node_(node), current_target_(current_target) {}
void NodeEventContext::Trace(blink::Visitor* visitor) {
visitor->Trace(node_);
......
......@@ -42,7 +42,7 @@ class CORE_EXPORT NodeEventContext {
public:
// FIXME: Use ContainerNode instead of Node.
NodeEventContext(Node*, EventTarget* current_target);
NodeEventContext(Node&, EventTarget& current_target);
void Trace(blink::Visitor*);
Node* GetNode() const { return node_.Get(); }
......
......@@ -54,10 +54,10 @@ class CORE_EXPORT TreeScopeEventContext final
ContainerNode& RootNode() const { return tree_scope_->RootNode(); }
EventTarget* Target() const { return target_.Get(); }
void SetTarget(EventTarget*);
void SetTarget(EventTarget&);
EventTarget* RelatedTarget() const { return related_target_.Get(); }
void SetRelatedTarget(EventTarget*);
void SetRelatedTarget(EventTarget&);
TouchEventContext* GetTouchEventContext() const {
return touch_event_context_.Get();
......@@ -118,16 +118,14 @@ inline void TreeScopeEventContext::CheckReachableNode(EventTarget& target) {
inline void TreeScopeEventContext::CheckReachableNode(EventTarget&) {}
#endif
inline void TreeScopeEventContext::SetTarget(EventTarget* target) {
DCHECK(target);
CheckReachableNode(*target);
inline void TreeScopeEventContext::SetTarget(EventTarget& target) {
CheckReachableNode(target);
target_ = target;
}
inline void TreeScopeEventContext::SetRelatedTarget(
EventTarget* related_target) {
DCHECK(related_target);
CheckReachableNode(*related_target);
EventTarget& related_target) {
CheckReachableNode(related_target);
related_target_ = related_target;
}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment