This source file includes following definitions.
- m_asyncEventQueue
- length
- item
- add
- remove
- clear
- createAndFireEvent
- interfaceName
- executionContext
- trace
#include "config.h"
#include "modules/mediasource/WebKitSourceBufferList.h"
#include "core/events/Event.h"
#include "core/events/GenericEventQueue.h"
#include "modules/mediasource/WebKitSourceBuffer.h"
namespace WebCore {
WebKitSourceBufferList::WebKitSourceBufferList(ExecutionContext* context, GenericEventQueue* asyncEventQueue)
: m_executionContext(context)
, m_asyncEventQueue(asyncEventQueue)
{
ScriptWrappable::init(this);
}
unsigned long WebKitSourceBufferList::length() const
{
return m_list.size();
}
WebKitSourceBuffer* WebKitSourceBufferList::item(unsigned index) const
{
if (index >= m_list.size())
return 0;
return m_list[index].get();
}
void WebKitSourceBufferList::add(PassRefPtrWillBeRawPtr<WebKitSourceBuffer> buffer)
{
m_list.append(buffer);
createAndFireEvent(EventTypeNames::webkitaddsourcebuffer);
}
bool WebKitSourceBufferList::remove(WebKitSourceBuffer* buffer)
{
size_t index = m_list.find(buffer);
if (index == kNotFound)
return false;
buffer->removedFromMediaSource();
m_list.remove(index);
createAndFireEvent(EventTypeNames::webkitremovesourcebuffer);
return true;
}
void WebKitSourceBufferList::clear()
{
for (size_t i = 0; i < m_list.size(); ++i)
m_list[i]->removedFromMediaSource();
m_list.clear();
createAndFireEvent(EventTypeNames::webkitremovesourcebuffer);
}
void WebKitSourceBufferList::createAndFireEvent(const AtomicString& eventName)
{
ASSERT(m_asyncEventQueue);
RefPtrWillBeRawPtr<Event> event = Event::create(eventName);
event->setTarget(this);
m_asyncEventQueue->enqueueEvent(event.release());
}
const AtomicString& WebKitSourceBufferList::interfaceName() const
{
return EventTargetNames::WebKitSourceBufferList;
}
ExecutionContext* WebKitSourceBufferList::executionContext() const
{
return m_executionContext;
}
void WebKitSourceBufferList::trace(Visitor* visitor)
{
visitor->trace(m_list);
}
}