blob: 41c6e94d5a7cb0dfc480526f97ca4842eff8043d [file] [log] [blame]
// Copyright 2014 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "media/cast/test/utility/standalone_cast_environment.h"
#include "base/memory/ptr_util.h"
#include "base/time/default_tick_clock.h"
namespace cobalt {
namespace media {
namespace cast {
StandaloneCastEnvironment::StandaloneCastEnvironment()
: CastEnvironment(
base::WrapUnique<base::TickClock>(new base::DefaultTickClock()), NULL,
NULL, NULL),
main_thread_("StandaloneCastEnvironment Main"),
audio_thread_("StandaloneCastEnvironment Audio"),
video_thread_("StandaloneCastEnvironment Video") {
#define CREATE_TASK_RUNNER(name, options) \
name##_thread_.StartWithOptions(options); \
CastEnvironment::name##_thread_proxy_ = name##_thread_.task_runner()
CREATE_TASK_RUNNER(main,
base::Thread::Options(base::MessageLoop::TYPE_IO, 0));
CREATE_TASK_RUNNER(audio, base::Thread::Options());
CREATE_TASK_RUNNER(video, base::Thread::Options());
#undef CREATE_TASK_RUNNER
}
StandaloneCastEnvironment::~StandaloneCastEnvironment() {
CHECK(CalledOnValidThread());
CHECK(!main_thread_.IsRunning());
CHECK(!audio_thread_.IsRunning());
CHECK(!video_thread_.IsRunning());
}
void StandaloneCastEnvironment::Shutdown() {
CHECK(CalledOnValidThread());
main_thread_.Stop();
audio_thread_.Stop();
video_thread_.Stop();
}
} // namespace cast
} // namespace media
} // namespace cobalt