| Index: content/renderer/media/media_stream_source_observer.cc
|
| diff --git a/content/renderer/media/media_stream_source_observer.cc b/content/renderer/media/media_stream_source_observer.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a62c997525c06d603349fdc5ee5e2ba9add7e8e9
|
| --- /dev/null
|
| +++ b/content/renderer/media/media_stream_source_observer.cc
|
| @@ -0,0 +1,63 @@
|
| +// Copyright (c) 2013 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 "content/renderer/media/media_stream_source_observer.h"
|
| +
|
| +#include "base/logging.h"
|
| +#include "content/renderer/media/media_stream_source_extra_data.h"
|
| +
|
| +namespace content {
|
| +
|
| +MediaStreamSourceObserver::MediaStreamSourceObserver(
|
| + webrtc::MediaSourceInterface* webrtc_source,
|
| + MediaStreamSourceExtraData* extra_data)
|
| + : state_(webrtc_source->state()),
|
| + webrtc_source_(webrtc_source),
|
| + extra_data_(extra_data) {
|
| + webrtc_source_->RegisterObserver(this);
|
| +}
|
| +
|
| +MediaStreamSourceObserver::~MediaStreamSourceObserver() {
|
| + DCHECK(CalledOnValidThread());
|
| + if (webrtc_source_)
|
| + webrtc_source_->UnregisterObserver(this);
|
| +}
|
| +
|
| +void MediaStreamSourceObserver::OnChanged() {
|
| + DCHECK(CalledOnValidThread());
|
| + // There should be no more notification after kEnded.
|
| + DCHECK(webrtc_source_ != NULL);
|
| +
|
| + webrtc::MediaSourceInterface::SourceState state = webrtc_source_->state();
|
| + if (state == state_)
|
| + return;
|
| + state_ = state;
|
| + WebKit::WebMediaStreamSource webkit_source(extra_data_->webkit_source());
|
| +
|
| + switch (state) {
|
| + case webrtc::MediaSourceInterface::kInitializing:
|
| + // Ignore the kInitializing state since there is no match in
|
| + // WebMediaStreamSource::ReadyState.
|
| + break;
|
| + case webrtc::MediaSourceInterface::kLive:
|
| + webkit_source.setReadyState(
|
| + WebKit::WebMediaStreamSource::ReadyStateLive);
|
| + break;
|
| + case webrtc::MediaSourceInterface::kMuted:
|
| + webkit_source.setReadyState(
|
| + WebKit::WebMediaStreamSource::ReadyStateMuted);
|
| + break;
|
| + case webrtc::MediaSourceInterface::kEnded:
|
| + webkit_source.setReadyState(
|
| + WebKit::WebMediaStreamSource::ReadyStateEnded);
|
| + webrtc_source_->UnregisterObserver(this);
|
| + webrtc_source_ = NULL;
|
| + break;
|
| + default:
|
| + NOTREACHED();
|
| + break;
|
| + }
|
| +}
|
| +
|
| +} // namespace content
|
|
|