// Copyright 2013 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 "content/renderer/media/texttrack_impl.h" #include "base/bind.h" #include "base/location.h" #include "base/message_loop/message_loop_proxy.h" #include "content/renderer/media/webinbandtexttrack_impl.h" #include "media/base/bind_to_loop.h" #include "third_party/WebKit/public/platform/WebInbandTextTrackClient.h" #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" namespace content { TextTrackImpl::TextTrackImpl( const scoped_refptr<base::MessageLoopProxy>& message_loop, blink::WebMediaPlayerClient* client, scoped_ptr<WebInbandTextTrackImpl> text_track) : message_loop_(message_loop), client_(client), text_track_(text_track.Pass()) { client_->addTextTrack(text_track_.get()); } TextTrackImpl::~TextTrackImpl() { message_loop_->PostTask( FROM_HERE, base::Bind(&TextTrackImpl::OnRemoveTrack, client_, base::Passed(&text_track_))); } void TextTrackImpl::addWebVTTCue(const base::TimeDelta& start, const base::TimeDelta& end, const std::string& id, const std::string& content, const std::string& settings) { message_loop_->PostTask( FROM_HERE, base::Bind(&TextTrackImpl::OnAddCue, text_track_.get(), start, end, id, content, settings)); } void TextTrackImpl::OnAddCue(WebInbandTextTrackImpl* text_track, const base::TimeDelta& start, const base::TimeDelta& end, const std::string& id, const std::string& content, const std::string& settings) { if (blink::WebInbandTextTrackClient* client = text_track->client()) { client->addWebVTTCue(start.InSecondsF(), end.InSecondsF(), blink::WebString::fromUTF8(id), blink::WebString::fromUTF8(content), blink::WebString::fromUTF8(settings)); } } void TextTrackImpl::OnRemoveTrack( blink::WebMediaPlayerClient* client, scoped_ptr<WebInbandTextTrackImpl> text_track) { if (text_track->client()) client->removeTextTrack(text_track.get()); } } // namespace content