| 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..dcbca0e6343fa97d5edabb750479944da6bcf479 100644
|
| --- a/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp
|
| +++ b/third_party/WebKit/Source/core/html/shadow/MediaControlElements.cpp
|
| @@ -1104,4 +1104,135 @@ MediaControlCurrentTimeDisplayElement::create(MediaControls& mediaControls) {
|
| return element;
|
| }
|
|
|
| +// ----------------------------
|
| +
|
| +class MediaRemotingDisableButtonElement::MouseEventsListener final
|
| + : public EventListener {
|
| + public:
|
| + explicit MouseEventsListener(MediaRemotingDisableButtonElement& element)
|
| + : 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();
|
| + const double x = mouseEvent->x();
|
| + const double y = mouseEvent->y();
|
| + if (x < clientRect->left() || x > clientRect->right() ||
|
| + y < clientRect->top() || y > clientRect->bottom())
|
| + return;
|
| +
|
| + m_element->mediaElement().disableMediaRemoting();
|
| + event->setDefaultHandled();
|
| + event->stopPropagation();
|
| + m_element->document().removeEventListener(EventTypeNames::click, this,
|
| + true);
|
| + }
|
| +
|
| + Member<MediaRemotingDisableButtonElement> m_element;
|
| +};
|
| +
|
| +MediaRemotingDisableButtonElement::MediaRemotingDisableButtonElement(
|
| + MediaRemotingInterstitialElements& interstitialElements)
|
| + : HTMLInputElement(interstitialElements.document(), false),
|
| + m_interstitialElements(interstitialElements) {
|
| + m_listener = new MouseEventsListener(*this);
|
| + ensureUserAgentShadowRoot();
|
| + setType(InputTypeNames::text);
|
| + setValue(interstitialElements.mediaElement().locale().queryString(
|
| + WebLocalizedString::MediaRemotingDisableText));
|
| + setShadowPseudoId(AtomicString("-internal-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_interstitialElements);
|
| + visitor->trace(m_listener);
|
| + HTMLInputElement::trace(visitor);
|
| +}
|
| +
|
| +// ----------------------------
|
| +
|
| +MediaRemotingCastIconElement::MediaRemotingCastIconElement(
|
| + MediaRemotingInterstitialElements& remotingInterstitial)
|
| + : HTMLInputElement(remotingInterstitial.document(), false) {
|
| + ensureUserAgentShadowRoot();
|
| + setType(InputTypeNames::button);
|
| + setShadowPseudoId(AtomicString("-internal-media-remoting-cast-icon"));
|
| +}
|
| +
|
| +void MediaRemotingCastIconElement::show() {
|
| + removeInlineStyleProperty(CSSPropertyDisplay);
|
| +}
|
| +
|
| +void MediaRemotingCastIconElement::hide() {
|
| + setInlineStyleProperty(CSSPropertyDisplay, CSSValueNone);
|
| +}
|
| +
|
| +// ----------------------------
|
| +
|
| +MediaRemotingCastMessageElement::MediaRemotingCastMessageElement(
|
| + MediaRemotingInterstitialElements& remotingInterstitial)
|
| + : HTMLInputElement(remotingInterstitial.document(), false) {
|
| + ensureUserAgentShadowRoot();
|
| + setType(InputTypeNames::text);
|
| + setValue(remotingInterstitial.mediaElement().locale().queryString(
|
| + WebLocalizedString::MediaRemotingCastingVideoText));
|
| + setShadowPseudoId(AtomicString("-internal-media-remoting-cast-text"));
|
| +}
|
| +
|
| +void MediaRemotingCastMessageElement::show() {
|
| + removeInlineStyleProperty(CSSPropertyDisplay);
|
| +}
|
| +
|
| +void MediaRemotingCastMessageElement::hide() {
|
| + setInlineStyleProperty(CSSPropertyDisplay, CSSValueNone);
|
| +}
|
| +
|
| +// ----------------------------
|
| +
|
| +MediaRemotingBackgroundImageElement::MediaRemotingBackgroundImageElement(
|
| + MediaRemotingInterstitial& remotingInterstitial)
|
| + : HTMLInputElement(remotingInterstitial.document(), false),
|
| + m_interstitial(remotingInterstitial) {
|
| + ensureUserAgentShadowRoot();
|
| + setType(InputTypeNames::image);
|
| + setShadowPseudoId(AtomicString("-internal-media-remoting-background-image"));
|
| +}
|
| +
|
| +void MediaRemotingBackgroundImageElement::show() {
|
| + setAttribute(srcAttr,
|
| + m_interstitial->mediaElement().getAttribute(posterAttr));
|
| + removeInlineStyleProperty(CSSPropertyDisplay);
|
| +}
|
| +
|
| +void MediaRemotingBackgroundImageElement::hide() {
|
| + setInlineStyleProperty(CSSPropertyDisplay, CSSValueNone);
|
| +}
|
| +
|
| +DEFINE_TRACE(MediaRemotingBackgroundImageElement) {
|
| + visitor->trace(m_interstitial);
|
| + HTMLInputElement::trace(visitor);
|
| +}
|
| +
|
| } // namespace blink
|
|
|