Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(118)

Side by Side Diff: ash/common/system/chromeos/audio/audio_detailed_view.cc

Issue 2721733003: Handle the dual microphones and dual cameras cases. Activate the proper microphone when user activa… (Closed)
Patch Set: Nit: log only the invalid camera facing mode value. Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | chromeos/BUILD.gn » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ash/common/system/chromeos/audio/audio_detailed_view.h" 5 #include "ash/common/system/chromeos/audio/audio_detailed_view.h"
6 6
7 #include "ash/common/material_design/material_design_controller.h" 7 #include "ash/common/material_design/material_design_controller.h"
8 #include "ash/common/strings/grit/ash_strings.h" 8 #include "ash/common/strings/grit/ash_strings.h"
9 #include "ash/common/system/tray/hover_highlight_view.h" 9 #include "ash/common/system/tray/hover_highlight_view.h"
10 #include "ash/common/system/tray/tray_constants.h" 10 #include "ash/common/system/tray/tray_constants.h"
(...skipping 149 matching lines...) Expand 10 before | Expand all | Expand 10 after
160 160
161 void AudioDetailedView::CreateItems() { 161 void AudioDetailedView::CreateItems() {
162 CreateScrollableList(); 162 CreateScrollableList();
163 CreateTitleRow(IDS_ASH_STATUS_TRAY_AUDIO); 163 CreateTitleRow(IDS_ASH_STATUS_TRAY_AUDIO);
164 } 164 }
165 165
166 void AudioDetailedView::UpdateAudioDevices() { 166 void AudioDetailedView::UpdateAudioDevices() {
167 output_devices_.clear(); 167 output_devices_.clear();
168 input_devices_.clear(); 168 input_devices_.clear();
169 chromeos::AudioDeviceList devices; 169 chromeos::AudioDeviceList devices;
170 CrasAudioHandler::Get()->GetAudioDevices(&devices); 170 CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
171 audio_handler->GetAudioDevices(&devices);
172 bool has_dual_internal_mic = audio_handler->HasDualInternalMic();
173 bool is_front_or_rear_mic_active = false;
171 for (size_t i = 0; i < devices.size(); ++i) { 174 for (size_t i = 0; i < devices.size(); ++i) {
172 // Don't display keyboard mic or aokr type. 175 // Don't display keyboard mic or aokr type.
173 if (!devices[i].is_for_simple_usage()) 176 if (!devices[i].is_for_simple_usage())
174 continue; 177 continue;
175 if (devices[i].is_input) 178 if (devices[i].is_input) {
179 // Do not expose the internal front and rear mic to UI.
180 if (has_dual_internal_mic &&
181 audio_handler->IsFrontOrRearMic(devices[i])) {
182 if (devices[i].active)
183 is_front_or_rear_mic_active = true;
184 continue;
185 }
176 input_devices_.push_back(devices[i]); 186 input_devices_.push_back(devices[i]);
177 else 187 } else {
178 output_devices_.push_back(devices[i]); 188 output_devices_.push_back(devices[i]);
189 }
179 } 190 }
191
192 // Expose the dual internal mics as one device (internal mic) to user.
193 if (has_dual_internal_mic) {
194 // Create stub internal mic entry for UI rendering, which representing
195 // both internal front and rear mics.
196 chromeos::AudioDevice internal_mic;
197 internal_mic.is_input = true;
198 internal_mic.stable_device_id_version = 2;
199 internal_mic.type = chromeos::AUDIO_TYPE_INTERNAL_MIC;
200 internal_mic.active = is_front_or_rear_mic_active;
201 input_devices_.push_back(internal_mic);
202 }
203
180 UpdateScrollableList(); 204 UpdateScrollableList();
181 } 205 }
182 206
183 void AudioDetailedView::UpdateScrollableList() { 207 void AudioDetailedView::UpdateScrollableList() {
184 scroll_content()->RemoveAllChildViews(true); 208 scroll_content()->RemoveAllChildViews(true);
185 device_map_.clear(); 209 device_map_.clear();
186 210
187 // Add audio output devices. 211 // Add audio output devices.
188 const bool use_md = MaterialDesignController::IsSystemTrayMenuMaterial(); 212 const bool use_md = MaterialDesignController::IsSystemTrayMenuMaterial();
189 const bool has_output_devices = output_devices_.size() > 0; 213 const bool has_output_devices = output_devices_.size() > 0;
(...skipping 28 matching lines...) Expand all
218 242
219 scroll_content()->SizeToPreferredSize(); 243 scroll_content()->SizeToPreferredSize();
220 scroller()->Layout(); 244 scroller()->Layout();
221 } 245 }
222 246
223 void AudioDetailedView::HandleViewClicked(views::View* view) { 247 void AudioDetailedView::HandleViewClicked(views::View* view) {
224 AudioDeviceMap::iterator iter = device_map_.find(view); 248 AudioDeviceMap::iterator iter = device_map_.find(view);
225 if (iter == device_map_.end()) 249 if (iter == device_map_.end())
226 return; 250 return;
227 chromeos::AudioDevice device = iter->second; 251 chromeos::AudioDevice device = iter->second;
228 CrasAudioHandler::Get()->SwitchToDevice(device, true, 252 CrasAudioHandler* audio_handler = CrasAudioHandler::Get();
229 CrasAudioHandler::ACTIVATE_BY_USER); 253 if (device.type == chromeos::AUDIO_TYPE_INTERNAL_MIC &&
254 audio_handler->HasDualInternalMic()) {
255 audio_handler->SwitchToFrontOrRearMic();
256 } else {
257 audio_handler->SwitchToDevice(device, true,
258 CrasAudioHandler::ACTIVATE_BY_USER);
259 }
230 } 260 }
231 261
232 } // namespace tray 262 } // namespace tray
233 } // namespace ash 263 } // namespace ash
OLDNEW
« no previous file with comments | « no previous file | chromeos/BUILD.gn » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698