blob: d181b9a7c6bbe412b01754a10c1126025b122cae [file] [log] [blame]
// 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