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 |