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.
5 #include "media/blink/texttrack_impl.h"
8 #include "base/location.h"
9 #include "base/single_thread_task_runner.h"
10 #include "media/base/bind_to_current_loop.h"
11 #include "media/blink/webinbandtexttrack_impl.h"
12 #include "third_party/WebKit/public/platform/WebInbandTextTrackClient.h"
13 #include "third_party/WebKit/public/platform/WebMediaPlayerClient.h"
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
),
23 text_track_(text_track
.Pass()) {
24 client_
->addTextTrack(text_track_
.get());
27 TextTrackImpl::~TextTrackImpl() {
28 task_runner_
->PostTask(
30 base::Bind(&TextTrackImpl::OnRemoveTrack
,
32 base::Passed(&text_track_
)));
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(
42 base::Bind(&TextTrackImpl::OnAddCue
,
45 id
, content
, settings
));
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(),
57 blink::WebString::fromUTF8(id
),
58 blink::WebString::fromUTF8(content
),
59 blink::WebString::fromUTF8(settings
));
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());