OLD | NEW |
| (Empty) |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "content/renderer/media/texttrack_impl.h" | |
6 | |
7 #include "base/bind.h" | |
8 #include "base/location.h" | |
9 #include "base/single_thread_task_runner.h" | |
10 #include "content/renderer/media/webinbandtexttrack_impl.h" | |
11 #include "media/base/bind_to_current_loop.h" | |
12 #include "third_party/WebKit/public/platform/WebInbandTextTrackClient.h" | |
13 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h" | |
14 | |
15 namespace content { | |
16 | |
17 TextTrackImpl::TextTrackImpl( | |
18 const scoped_refptr<base::SingleThreadTaskRunner>& task_runner, | |
19 blink::WebMediaPlayerClient* client, | |
20 scoped_ptr<WebInbandTextTrackImpl> text_track) | |
21 : task_runner_(task_runner), | |
22 client_(client), | |
23 text_track_(text_track.Pass()) { | |
24 client_->addTextTrack(text_track_.get()); | |
25 } | |
26 | |
27 TextTrackImpl::~TextTrackImpl() { | |
28 task_runner_->PostTask( | |
29 FROM_HERE, | |
30 base::Bind(&TextTrackImpl::OnRemoveTrack, | |
31 client_, | |
32 base::Passed(&text_track_))); | |
33 } | |
34 | |
35 void TextTrackImpl::addWebVTTCue(const base::TimeDelta& start, | |
36 const base::TimeDelta& end, | |
37 const std::string& id, | |
38 const std::string& content, | |
39 const std::string& settings) { | |
40 task_runner_->PostTask( | |
41 FROM_HERE, | |
42 base::Bind(&TextTrackImpl::OnAddCue, | |
43 text_track_.get(), | |
44 start, end, | |
45 id, content, settings)); | |
46 } | |
47 | |
48 void TextTrackImpl::OnAddCue(WebInbandTextTrackImpl* text_track, | |
49 const base::TimeDelta& start, | |
50 const base::TimeDelta& end, | |
51 const std::string& id, | |
52 const std::string& content, | |
53 const std::string& settings) { | |
54 if (blink::WebInbandTextTrackClient* client = text_track->client()) { | |
55 client->addWebVTTCue(start.InSecondsF(), | |
56 end.InSecondsF(), | |
57 blink::WebString::fromUTF8(id), | |
58 blink::WebString::fromUTF8(content), | |
59 blink::WebString::fromUTF8(settings)); | |
60 } | |
61 } | |
62 | |
63 void TextTrackImpl::OnRemoveTrack( | |
64 blink::WebMediaPlayerClient* client, | |
65 scoped_ptr<WebInbandTextTrackImpl> text_track) { | |
66 if (text_track->client()) | |
67 client->removeTextTrack(text_track.get()); | |
68 } | |
69 | |
70 } // namespace content | |
OLD | NEW |