1a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved. 2a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)// found in the LICENSE file. 4a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 5a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "media/cast/test/utility/standalone_cast_environment.h" 6a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 7a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#include "base/time/default_tick_clock.h" 8a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 9a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace media { 10a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)namespace cast { 11a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 12effb81e5f8246d0db0270817048dc992db66e9fbBen MurdochStandaloneCastEnvironment::StandaloneCastEnvironment() 13a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) : CastEnvironment( 14a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) make_scoped_ptr<base::TickClock>(new base::DefaultTickClock()), 15a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) NULL, 16a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) NULL, 17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch NULL), 18a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) main_thread_("StandaloneCastEnvironment Main"), 19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch audio_thread_("StandaloneCastEnvironment Audio"), 20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch video_thread_("StandaloneCastEnvironment Video") { 21a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#define CREATE_TASK_RUNNER(name, options) \ 22a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) name##_thread_.StartWithOptions(options); \ 23a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CastEnvironment::name##_thread_proxy_ = name##_thread_.message_loop_proxy() 24a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 25a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) CREATE_TASK_RUNNER(main, 26a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) base::Thread::Options(base::MessageLoop::TYPE_IO, 0)); 27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CREATE_TASK_RUNNER(audio, base::Thread::Options()); 28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch CREATE_TASK_RUNNER(video, base::Thread::Options()); 29a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)#undef CREATE_TASK_RUNNER 30a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 31a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 32a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)StandaloneCastEnvironment::~StandaloneCastEnvironment() { 335f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CHECK(CalledOnValidThread()); 345f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CHECK(!main_thread_.IsRunning()); 355f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CHECK(!audio_thread_.IsRunning()); 365f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CHECK(!video_thread_.IsRunning()); 37a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 38a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 39a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)void StandaloneCastEnvironment::Shutdown() { 405f1c94371a64b3196d4be9466099bb892df9b88eTorne (Richard Coles) CHECK(CalledOnValidThread()); 41a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) main_thread_.Stop(); 42effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch audio_thread_.Stop(); 43effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch video_thread_.Stop(); 44a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} 45a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles) 46a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace cast 47a1401311d1ab56c4ed0a474bd38c108f75cb0cd9Torne (Richard Coles)} // namespace media 48