Chromium Code Reviews| Index: content/renderer/media/texttrack_impl.cc |
| diff --git a/content/renderer/media/texttrack_impl.cc b/content/renderer/media/texttrack_impl.cc |
| index 7acf39a1a488039c5748bfa031ec9e7ece5a83da..fe96bdedca65fbd84603eaba264fd79697a90766 100644 |
| --- a/content/renderer/media/texttrack_impl.cc |
| +++ b/content/renderer/media/texttrack_impl.cc |
| @@ -4,21 +4,31 @@ |
| #include "content/renderer/media/texttrack_impl.h" |
| +#include "base/bind.h" |
| +#include "base/message_loop/message_loop_proxy.h" |
| #include "content/renderer/media/webinbandtexttrack_impl.h" |
| +#include "media/base/bind_to_loop.h" |
|
acolwell GONE FROM CHROMIUM
2013/10/24 18:57:51
nit:Remove. It doesn't appear to be used anywhere.
Matthew Heaney (Chromium)
2013/10/25 03:05:38
Done.
|
| #include "third_party/WebKit/public/web/WebInbandTextTrackClient.h" |
| #include "third_party/WebKit/public/web/WebMediaPlayerClient.h" |
| namespace content { |
| -TextTrackImpl::TextTrackImpl(WebKit::WebMediaPlayerClient* client, |
| - WebInbandTextTrackImpl* text_track) |
| - : client_(client), text_track_(text_track) { |
| +TextTrackImpl::TextTrackImpl( |
| + const scoped_refptr<base::MessageLoopProxy>& message_loop, |
| + WebKit::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() { |
| - if (text_track_->client()) |
| - client_->removeTextTrack(text_track_.get()); |
| + message_loop_->PostTask( |
| + FROM_HERE, |
| + base::Bind(&TextTrackImpl::OnRemoveTrack, |
| + client_, |
| + base::Passed(&text_track_))); |
| } |
| void TextTrackImpl::addWebVTTCue(const base::TimeDelta& start, |
| @@ -26,12 +36,34 @@ void TextTrackImpl::addWebVTTCue(const base::TimeDelta& start, |
| const std::string& id, |
| const std::string& content, |
| const std::string& settings) { |
| - if (WebKit::WebInbandTextTrackClient* client = text_track_->client()) |
| + 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 (WebKit::WebInbandTextTrackClient* client = text_track->client()) { |
| client->addWebVTTCue(start.InSecondsF(), |
| end.InSecondsF(), |
| WebKit::WebString::fromUTF8(id), |
| WebKit::WebString::fromUTF8(content), |
| WebKit::WebString::fromUTF8(settings)); |
| + } |
| +} |
| + |
| +void TextTrackImpl::OnRemoveTrack( |
| + WebKit::WebMediaPlayerClient* client, |
| + scoped_ptr<WebInbandTextTrackImpl> text_track) { |
| + if (text_track->client()) |
| + client->removeTextTrack(text_track.get()); |
| } |
| } // namespace content |