| // 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 "chromecast/service/cast_service.h" |
| |
| #include "base/logging.h" |
| #include "base/run_loop.h" |
| #include "base/threading/thread_checker.h" |
| |
| namespace chromecast { |
| |
| CastService::CastService( |
| content::BrowserContext* browser_context, |
| PrefService* pref_service) |
| : browser_context_(browser_context), |
| pref_service_(pref_service), |
| stopped_(true), |
| thread_checker_(new base::ThreadChecker()) { |
| } |
| |
| CastService::~CastService() { |
| DCHECK(thread_checker_->CalledOnValidThread()); |
| DCHECK(stopped_); |
| } |
| |
| void CastService::Initialize() { |
| DCHECK(thread_checker_->CalledOnValidThread()); |
| InitializeInternal(); |
| } |
| |
| void CastService::Finalize() { |
| DCHECK(thread_checker_->CalledOnValidThread()); |
| FinalizeInternal(); |
| } |
| |
| void CastService::Start() { |
| DCHECK(thread_checker_->CalledOnValidThread()); |
| stopped_ = false; |
| StartInternal(); |
| } |
| |
| void CastService::Stop() { |
| DCHECK(thread_checker_->CalledOnValidThread()); |
| StopInternal(); |
| // Consume any pending tasks which should be done before destroying in-process |
| // renderer process, for example, destroying web_contents. |
| base::RunLoop().RunUntilIdle(); |
| stopped_ = true; |
| } |
| |
| } // namespace chromecast |