| // Copyright 2015 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 "modules/remoteplayback/HTMLMediaElementRemotePlayback.h" |
| |
| #include "core/dom/Document.h" |
| #include "core/dom/QualifiedName.h" |
| #include "core/html/HTMLMediaElement.h" |
| #include "modules/remoteplayback/RemotePlayback.h" |
| |
| namespace blink { |
| |
| // static |
| bool HTMLMediaElementRemotePlayback::fastHasAttribute(const QualifiedName& name, const HTMLMediaElement& element) |
| { |
| ASSERT(name == HTMLNames::disableremoteplaybackAttr); |
| return element.fastHasAttribute(name); |
| } |
| |
| // static |
| void HTMLMediaElementRemotePlayback::setBooleanAttribute(const QualifiedName& name, HTMLMediaElement& element, bool value) |
| { |
| ASSERT(name == HTMLNames::disableremoteplaybackAttr); |
| element.setBooleanAttribute(name, value); |
| } |
| |
| // static |
| HTMLMediaElementRemotePlayback& HTMLMediaElementRemotePlayback::from(HTMLMediaElement& element) |
| { |
| HTMLMediaElementRemotePlayback* supplement = static_cast<HTMLMediaElementRemotePlayback*>(WillBeHeapSupplement<HTMLMediaElement>::from(element, supplementName())); |
| if (!supplement) { |
| supplement = new HTMLMediaElementRemotePlayback(); |
| provideTo(element, supplementName(), adoptPtrWillBeNoop(supplement)); |
| } |
| return *supplement; |
| } |
| |
| // static |
| RemotePlayback* HTMLMediaElementRemotePlayback::remote(HTMLMediaElement& element) |
| { |
| HTMLMediaElementRemotePlayback& self = HTMLMediaElementRemotePlayback::from(element); |
| Document& document = element.document(); |
| if (!document.frame()) |
| return nullptr; |
| |
| if (!self.m_remote) |
| self.m_remote = RemotePlayback::create(element); |
| |
| return self.m_remote; |
| } |
| |
| // static |
| const char* HTMLMediaElementRemotePlayback::supplementName() |
| { |
| return "HTMLMediaElementRemotePlayback"; |
| } |
| |
| DEFINE_TRACE(HTMLMediaElementRemotePlayback) |
| { |
| visitor->trace(m_remote); |
| WillBeHeapSupplement<HTMLMediaElement>::trace(visitor); |
| } |
| |
| } // namespace blink |