Chromium Code Reviews| Index: third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp |
| diff --git a/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp b/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp |
| index 56f2ac372f8d6d4c522ac91ddad70933705e95f9..3467351539da1997faae370fbba54def2d2c9301 100644 |
| --- a/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp |
| +++ b/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp |
| @@ -1104,4 +1104,70 @@ MediaControlCurrentTimeDisplayElement::create(MediaControls& mediaControls) { |
| return element; |
| } |
| +// ---------------------------- |
| + |
| +class MediaRemotingDisableButtonElement::MouseEventsListener final |
| + : public EventListener { |
| + public: |
| + MouseEventsListener(MediaRemotingDisableButtonElement& element) |
|
miu
2017/03/22 21:26:48
nit: explicit
xjz
2017/03/22 22:25:09
Done.
|
| + : EventListener(CPPEventListenerType), m_element(element) {} |
| + |
| + bool operator==(const EventListener& other) const override { |
| + return this == &other; |
| + } |
| + |
| + void trace(blink::Visitor* visitor) { |
| + visitor->trace(m_element); |
| + EventListener::trace(visitor); |
| + } |
| + |
| + private: |
| + void handleEvent(ExecutionContext* context, Event* event) override { |
| + DCHECK(event->type() == EventTypeNames::click); |
| + |
| + MouseEvent* mouseEvent = toMouseEvent(event); |
| + ClientRect* clientRect = m_element->getBoundingClientRect(); |
| + double x = mouseEvent->x(); |
| + double y = mouseEvent->y(); |
| + if (x < clientRect->left() || y < clientRect->top() || |
| + x > clientRect->left() + clientRect->width() || |
|
miu
2017/03/22 21:26:48
nit: x > clientRect->right()
xjz
2017/03/22 22:25:09
Done.
|
| + y > clientRect->top() + clientRect->height()) |
|
miu
2017/03/22 21:26:48
nit: y > clientRect->bottom()
xjz
2017/03/22 22:25:09
Done.
|
| + return; |
| + |
| + m_element->mediaElement().disableMediaRemoting(); |
| + event->setDefaultHandled(); |
| + event->stopPropagation(); |
| + m_element->document().removeEventListener(EventTypeNames::click, this, |
| + true); |
| + } |
| + |
| + Member<MediaRemotingDisableButtonElement> m_element; |
| +}; |
| + |
| +MediaRemotingDisableButtonElement::MediaRemotingDisableButtonElement( |
| + MediaRemotingInterstitial& remotingInterstitial) |
| + : HTMLInputElement(remotingInterstitial.document(), false), |
| + m_interstitial(remotingInterstitial) { |
| + m_listener = new MouseEventsListener(*this); |
| + ensureUserAgentShadowRoot(); |
| + setType(InputTypeNames::button); |
| + setShadowPseudoId(AtomicString("-webkit-media-remoting-disable-button")); |
| +} |
| + |
| +void MediaRemotingDisableButtonElement::show() { |
| + removeInlineStyleProperty(CSSPropertyDisplay); |
| + document().addEventListener(EventTypeNames::click, m_listener, true); |
| +} |
| + |
| +void MediaRemotingDisableButtonElement::hide() { |
| + setInlineStyleProperty(CSSPropertyDisplay, CSSValueNone); |
| + document().removeEventListener(EventTypeNames::click, m_listener, true); |
| +} |
| + |
| +DEFINE_TRACE(MediaRemotingDisableButtonElement) { |
| + visitor->trace(m_interstitial); |
| + visitor->trace(m_listener); |
| + HTMLInputElement::trace(visitor); |
| +} |
| + |
| } // namespace blink |