| // 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. |
| |
| #ifndef COBALT_MEDIA_CAST_TEST_UTILITY_STANDALONE_CAST_ENVIRONMENT_H_ |
| #define COBALT_MEDIA_CAST_TEST_UTILITY_STANDALONE_CAST_ENVIRONMENT_H_ |
| |
| #include "base/macros.h" |
| #include "base/threading/thread.h" |
| #include "base/threading/thread_checker.h" |
| #include "media/cast/cast_environment.h" |
| |
| namespace cobalt { |
| namespace media { |
| namespace cast { |
| |
| // A complete CastEnvironment where all task runners are spurned from |
| // internally-owned threads. Uses base::DefaultTickClock as a clock. |
| // |
| // A user of StandaloneCastEnvironment *must* call Shutdown() on the same thread |
| // that constructed the instance before the ref-count reaches zero. |
| // http://crbug.com/396480 |
| class StandaloneCastEnvironment : public CastEnvironment, |
| public base::ThreadChecker { |
| public: |
| StandaloneCastEnvironment(); |
| |
| // Stops all threads backing the task runners, blocking the caller until |
| // complete. |
| void Shutdown(); |
| |
| protected: |
| ~StandaloneCastEnvironment() override; |
| |
| base::Thread main_thread_; |
| base::Thread audio_thread_; |
| base::Thread video_thread_; |
| |
| DISALLOW_COPY_AND_ASSIGN(StandaloneCastEnvironment); |
| }; |
| |
| } // namespace cast |
| } // namespace media |
| } // namespace cobalt |
| |
| #endif // COBALT_MEDIA_CAST_TEST_UTILITY_STANDALONE_CAST_ENVIRONMENT_H_ |