1// Copyright 2014 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 "media/cast/test/utility/standalone_cast_environment.h"
6
7#include "base/time/default_tick_clock.h"
8
9namespace media {
10namespace cast {
11
12StandaloneCastEnvironment::StandaloneCastEnvironment()
13    : CastEnvironment(
14          make_scoped_ptr<base::TickClock>(new base::DefaultTickClock()),
15          NULL,
16          NULL,
17          NULL),
18      main_thread_("StandaloneCastEnvironment Main"),
19      audio_thread_("StandaloneCastEnvironment Audio"),
20      video_thread_("StandaloneCastEnvironment Video") {
21#define CREATE_TASK_RUNNER(name, options)   \
22  name##_thread_.StartWithOptions(options); \
23  CastEnvironment::name##_thread_proxy_ = name##_thread_.message_loop_proxy()
24
25  CREATE_TASK_RUNNER(main,
26                     base::Thread::Options(base::MessageLoop::TYPE_IO, 0));
27  CREATE_TASK_RUNNER(audio, base::Thread::Options());
28  CREATE_TASK_RUNNER(video, base::Thread::Options());
29#undef CREATE_TASK_RUNNER
30}
31
32StandaloneCastEnvironment::~StandaloneCastEnvironment() {
33  CHECK(CalledOnValidThread());
34  CHECK(!main_thread_.IsRunning());
35  CHECK(!audio_thread_.IsRunning());
36  CHECK(!video_thread_.IsRunning());
37}
38
39void StandaloneCastEnvironment::Shutdown() {
40  CHECK(CalledOnValidThread());
41  main_thread_.Stop();
42  audio_thread_.Stop();
43  video_thread_.Stop();
44}
45
46}  // namespace cast
47}  // namespace media
48