Index: chrome/browser/media/media_internals.cc |
=================================================================== |
--- chrome/browser/media/media_internals.cc (revision 179909) |
+++ chrome/browser/media/media_internals.cc (working copy) |
@@ -1,254 +0,0 @@ |
-// Copyright (c) 2012 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 "chrome/browser/media/media_internals.h" |
- |
-#include "base/memory/scoped_ptr.h" |
-#include "base/string16.h" |
-#include "base/stringprintf.h" |
-#include "chrome/browser/media/media_capture_devices_dispatcher.h" |
-#include "chrome/browser/media/media_internals_observer.h" |
-#include "chrome/browser/media/media_stream_capture_indicator.h" |
-#include "chrome/browser/prefs/scoped_user_pref_update.h" |
-#include "chrome/browser/profiles/profile.h" |
-#include "chrome/common/pref_names.h" |
-#include "content/public/browser/browser_thread.h" |
-#include "content/public/browser/web_ui.h" |
-#include "media/base/media_log.h" |
-#include "media/base/media_log_event.h" |
- |
-using content::BrowserThread; |
- |
-namespace media { |
- |
-namespace { |
- |
-const content::MediaStreamDevice* FindDefaultDeviceWithId( |
- const content::MediaStreamDevices& devices, |
- const std::string& device_id) { |
- if (devices.empty()) |
- return NULL; |
- |
- content::MediaStreamDevices::const_iterator iter = devices.begin(); |
- for (; iter != devices.end(); ++iter) { |
- if (iter->id == device_id) { |
- return &(*iter); |
- } |
- } |
- |
- return &(*devices.begin()); |
-}; |
- |
-} // namespace |
- |
-void GetDefaultDevicesForProfile(Profile* profile, |
- bool audio, |
- bool video, |
- content::MediaStreamDevices* devices) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(audio || video); |
- |
- PrefService* prefs = profile->GetPrefs(); |
- std::string default_device; |
- if (audio) { |
- default_device = prefs->GetString(prefs::kDefaultAudioCaptureDevice); |
- GetRequestedDevice(default_device, true, false, devices); |
- } |
- |
- if (video) { |
- default_device = prefs->GetString(prefs::kDefaultVideoCaptureDevice); |
- GetRequestedDevice(default_device, false, true, devices); |
- } |
-} |
- |
-void GetRequestedDevice(const std::string& requested_device_id, |
- bool audio, |
- bool video, |
- content::MediaStreamDevices* devices) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI)); |
- DCHECK(audio || video); |
- |
- MediaCaptureDevicesDispatcher* dispatcher = |
- MediaInternals::GetInstance()->GetMediaCaptureDevicesDispatcher(); |
- if (audio) { |
- const content::MediaStreamDevices& audio_devices = |
- dispatcher->GetAudioCaptureDevices(); |
- const content::MediaStreamDevice* const device = |
- media::FindDefaultDeviceWithId(audio_devices, requested_device_id); |
- if (device) |
- devices->push_back(*device); |
- } |
- if (video) { |
- const content::MediaStreamDevices& video_devices = |
- dispatcher->GetVideoCaptureDevices(); |
- const content::MediaStreamDevice* const device = |
- media::FindDefaultDeviceWithId(video_devices, requested_device_id); |
- if (device) |
- devices->push_back(*device); |
- } |
-} |
- |
-} // namespace media |
- |
-MediaInternals* MediaInternals::GetInstance() { |
- return Singleton<MediaInternals>::get(); |
-} |
- |
-MediaInternals::~MediaInternals() {} |
- |
-void MediaInternals::OnDeleteAudioStream(void* host, int stream_id) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- std::string stream = base::StringPrintf("audio_streams.%p:%d", |
- host, stream_id); |
- DeleteItem(stream); |
-} |
- |
-void MediaInternals::OnSetAudioStreamPlaying( |
- void* host, int stream_id, bool playing) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- UpdateAudioStream(host, stream_id, |
- "playing", Value::CreateBooleanValue(playing)); |
-} |
- |
-void MediaInternals::OnSetAudioStreamStatus( |
- void* host, int stream_id, const std::string& status) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- UpdateAudioStream(host, stream_id, |
- "status", Value::CreateStringValue(status)); |
-} |
- |
-void MediaInternals::OnSetAudioStreamVolume( |
- void* host, int stream_id, double volume) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- UpdateAudioStream(host, stream_id, |
- "volume", Value::CreateDoubleValue(volume)); |
-} |
- |
-void MediaInternals::OnMediaEvent( |
- int render_process_id, const media::MediaLogEvent& event) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- |
- // Notify observers that |event| has occured. |
- DictionaryValue dict; |
- dict.SetInteger("renderer", render_process_id); |
- dict.SetInteger("player", event.id); |
- dict.SetString("type", media::MediaLog::EventTypeToString(event.type)); |
- dict.SetDouble("time", event.time.ToDoubleT()); |
- dict.Set("params", event.params.DeepCopy()); |
- SendUpdate("media.onMediaEvent", &dict); |
-} |
- |
-void MediaInternals::OnCaptureDevicesOpened( |
- int render_process_id, |
- int render_view_id, |
- const content::MediaStreamDevices& devices) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- media_stream_capture_indicator_->CaptureDevicesOpened(render_process_id, |
- render_view_id, |
- devices); |
-} |
- |
-void MediaInternals::OnCaptureDevicesClosed( |
- int render_process_id, |
- int render_view_id, |
- const content::MediaStreamDevices& devices) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- media_stream_capture_indicator_->CaptureDevicesClosed(render_process_id, |
- render_view_id, |
- devices); |
-} |
- |
-void MediaInternals::OnAudioCaptureDevicesChanged( |
- const content::MediaStreamDevices& devices) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- media_devices_dispatcher_->AudioCaptureDevicesChanged(devices); |
-} |
- |
-void MediaInternals::OnVideoCaptureDevicesChanged( |
- const content::MediaStreamDevices& devices) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- media_devices_dispatcher_->VideoCaptureDevicesChanged(devices); |
-} |
- |
-void MediaInternals::OnMediaRequestStateChanged( |
- int render_process_id, |
- int render_view_id, |
- const content::MediaStreamDevice& device, |
- content::MediaRequestState state) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- |
- if (observers_.size()) { |
- FOR_EACH_OBSERVER( |
- MediaInternalsObserver, observers_, OnRequestUpdate(render_process_id, |
- render_view_id, |
- device, |
- state)); |
- } |
-} |
- |
-void MediaInternals::AddObserver(MediaInternalsObserver* observer) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- observers_.AddObserver(observer); |
-} |
- |
-void MediaInternals::RemoveObserver(MediaInternalsObserver* observer) { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- observers_.RemoveObserver(observer); |
-} |
- |
-void MediaInternals::SendEverything() { |
- DCHECK(BrowserThread::CurrentlyOn(BrowserThread::IO)); |
- SendUpdate("media.onReceiveEverything", &data_); |
-} |
- |
-scoped_refptr<MediaCaptureDevicesDispatcher> |
-MediaInternals::GetMediaCaptureDevicesDispatcher() { |
- return media_devices_dispatcher_; |
-} |
- |
-scoped_refptr<MediaStreamCaptureIndicator> |
-MediaInternals::GetMediaStreamCaptureIndicator() { |
- return media_stream_capture_indicator_.get(); |
-} |
- |
-MediaInternals::MediaInternals() |
- : media_stream_capture_indicator_(new MediaStreamCaptureIndicator()), |
- media_devices_dispatcher_(new MediaCaptureDevicesDispatcher()) { |
-} |
- |
-void MediaInternals::UpdateAudioStream( |
- void* host, int stream_id, const std::string& property, Value* value) { |
- std::string stream = base::StringPrintf("audio_streams.%p:%d", |
- host, stream_id); |
- UpdateItem("media.addAudioStream", stream, property, value); |
-} |
- |
-void MediaInternals::DeleteItem(const std::string& item) { |
- data_.Remove(item, NULL); |
- scoped_ptr<Value> value(Value::CreateStringValue(item)); |
- SendUpdate("media.onItemDeleted", value.get()); |
-} |
- |
-void MediaInternals::UpdateItem( |
- const std::string& update_fn, const std::string& id, |
- const std::string& property, Value* value) { |
- DictionaryValue* item_properties; |
- if (!data_.GetDictionary(id, &item_properties)) { |
- item_properties = new DictionaryValue(); |
- data_.Set(id, item_properties); |
- item_properties->SetString("id", id); |
- } |
- item_properties->Set(property, value); |
- SendUpdate(update_fn, item_properties); |
-} |
- |
-void MediaInternals::SendUpdate(const std::string& function, Value* value) { |
- // Only bother serializing the update to JSON if someone is watching. |
- if (observers_.size()) { |
- std::vector<const Value*> args; |
- args.push_back(value); |
- string16 update = content::WebUI::GetJavascriptCall(function, args); |
- FOR_EACH_OBSERVER(MediaInternalsObserver, observers_, OnUpdate(update)); |
- } |
-} |