Chromium Code Reviews| Index: chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.cc |
| diff --git a/chrome/browser/ui/webui/options/media_devices_selection_handler.cc b/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.cc |
| similarity index 70% |
| copy from chrome/browser/ui/webui/options/media_devices_selection_handler.cc |
| copy to chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.cc |
| index 77618f38866431cd4d0dfd7499f86b56e3e19de1..b3fa37c28c15c3a7e899de662321de57f9678b6c 100644 |
| --- a/chrome/browser/ui/webui/options/media_devices_selection_handler.cc |
| +++ b/chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.cc |
| @@ -1,8 +1,8 @@ |
| -// Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| +// Copyright 2016 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/ui/webui/options/media_devices_selection_handler.h" |
| +#include "chrome/browser/ui/webui/settings/settings_media_devices_selection_handler.h" |
| #include <stddef.h> |
| @@ -20,36 +20,27 @@ const char kVideo[] = "camera"; |
| } // namespace |
| -namespace options { |
| +namespace settings { |
| -MediaDevicesSelectionHandler::MediaDevicesSelectionHandler() {} |
| - |
| -MediaDevicesSelectionHandler::~MediaDevicesSelectionHandler() { |
| - MediaCaptureDevicesDispatcher::GetInstance()->RemoveObserver(this); |
| +MediaDevicesSelectionHandler::MediaDevicesSelectionHandler(Profile* profile) |
| + : profile_(profile), observer_(this) { |
| } |
| -void MediaDevicesSelectionHandler::GetLocalizedValues( |
| - base::DictionaryValue* values) { |
| - DCHECK(values); |
| - |
| - static OptionsStringResource resources[] = { |
| - { "mediaSelectMicLabel", IDS_MEDIA_SELECTED_MIC_LABEL }, |
| - { "mediaSelectCameraLabel", IDS_MEDIA_SELECTED_CAMERA_LABEL }, |
| - }; |
| - |
| - RegisterStrings(values, resources, arraysize(resources)); |
| +MediaDevicesSelectionHandler::~MediaDevicesSelectionHandler() { |
| } |
| -void MediaDevicesSelectionHandler::InitializePage() { |
| +void MediaDevicesSelectionHandler::OnJavascriptAllowed() { |
| // Register to the device observer list to get up-to-date device lists. |
| - MediaCaptureDevicesDispatcher::GetInstance()->AddObserver(this); |
| + observer_.Add(MediaCaptureDevicesDispatcher::GetInstance()); |
| +} |
| - // Update the device selection menus. |
| - UpdateDevicesMenuForType(AUDIO); |
| - UpdateDevicesMenuForType(VIDEO); |
| +void MediaDevicesSelectionHandler::OnJavascriptDisallowed() { |
| } |
|
michaelpg
2016/06/08 16:02:32
observer_.RemoveAll();
Finnur
2016/06/08 21:15:45
Makes sense. Done.
|
| void MediaDevicesSelectionHandler::RegisterMessages() { |
| + web_ui()->RegisterMessageCallback("getDefaultCaptureDevices", |
| + base::Bind(&MediaDevicesSelectionHandler::GetDefaultCaptureDevices, |
| + base::Unretained(this))); |
| web_ui()->RegisterMessageCallback("setDefaultCaptureDevice", |
| base::Bind(&MediaDevicesSelectionHandler::SetDefaultCaptureDevice, |
| base::Unretained(this))); |
| @@ -65,6 +56,22 @@ void MediaDevicesSelectionHandler::OnUpdateVideoDevices( |
| UpdateDevicesMenu(VIDEO, devices); |
| } |
| +void MediaDevicesSelectionHandler::GetDefaultCaptureDevices( |
| + const base::ListValue* args) { |
| + DCHECK_EQ(1U, args->GetSize()); |
| + std::string type; |
| + if (!args->GetString(0, &type)) { |
| + NOTREACHED(); |
| + return; |
| + } |
| + DCHECK(!type.empty()); |
| + |
| + if (type == kAudio) |
| + UpdateDevicesMenuForType(AUDIO); |
| + else if (type == kVideo) |
| + UpdateDevicesMenuForType(VIDEO); |
| +} |
| + |
| void MediaDevicesSelectionHandler::SetDefaultCaptureDevice( |
| const base::ListValue* args) { |
| DCHECK_EQ(2U, args->GetSize()); |
| @@ -77,8 +84,7 @@ void MediaDevicesSelectionHandler::SetDefaultCaptureDevice( |
| DCHECK(!type.empty()); |
| DCHECK(!device.empty()); |
| - Profile* profile = Profile::FromWebUI(web_ui()); |
| - PrefService* prefs = profile->GetPrefs(); |
| + PrefService* prefs = profile_->GetPrefs(); |
| if (type == kAudio) |
| prefs->SetString(prefs::kDefaultAudioCaptureDevice, device); |
| else if (type == kVideo) |
| @@ -89,9 +95,10 @@ void MediaDevicesSelectionHandler::SetDefaultCaptureDevice( |
| void MediaDevicesSelectionHandler::UpdateDevicesMenu( |
| DeviceType type, const content::MediaStreamDevices& devices) { |
| + AllowJavascript(); |
| + |
| // Get the default device unique id from prefs. |
| - Profile* profile = Profile::FromWebUI(web_ui()); |
| - PrefService* prefs = profile->GetPrefs(); |
| + PrefService* prefs = profile_->GetPrefs(); |
| std::string default_device; |
| std::string device_type; |
| switch (type) { |
| @@ -124,9 +131,11 @@ void MediaDevicesSelectionHandler::UpdateDevicesMenu( |
| base::StringValue default_value(default_id); |
| base::StringValue type_value(device_type); |
| - web_ui()->CallJavascriptFunctionUnsafe("ContentSettings.updateDevicesMenu", |
| - type_value, device_list, |
| - default_value); |
| + CallJavascriptFunction("cr.webUIListenerCallback", |
| + base::StringValue("updateDevicesMenu"), |
| + type_value, |
| + device_list, |
| + default_value); |
| } |
| void MediaDevicesSelectionHandler::UpdateDevicesMenuForType(DeviceType type) { |
| @@ -145,4 +154,4 @@ void MediaDevicesSelectionHandler::UpdateDevicesMenuForType(DeviceType type) { |
| UpdateDevicesMenu(type, devices); |
| } |
| -} // namespace options |
| +} // namespace settings |