// 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(WillBeHeapSupplement::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::trace(visitor); } } // namespace blink