| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "chrome/browser/ui/bluetooth/bluetooth_chooser_controller.h" | 5 #include "chrome/browser/ui/bluetooth/bluetooth_chooser_controller.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 | 8 |
| 9 #include "base/logging.h" | 9 #include "base/logging.h" |
| 10 #include "base/metrics/histogram_macros.h" | 10 #include "base/metrics/histogram_macros.h" |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 60 } | 60 } |
| 61 | 61 |
| 62 size_t BluetoothChooserController::NumOptions() const { | 62 size_t BluetoothChooserController::NumOptions() const { |
| 63 return devices_.size(); | 63 return devices_.size(); |
| 64 } | 64 } |
| 65 | 65 |
| 66 int BluetoothChooserController::GetSignalStrengthLevel(size_t index) const { | 66 int BluetoothChooserController::GetSignalStrengthLevel(size_t index) const { |
| 67 return devices_[index].signal_strength_level; | 67 return devices_[index].signal_strength_level; |
| 68 } | 68 } |
| 69 | 69 |
| 70 bool BluetoothChooserController::IsConnected(size_t index) const { |
| 71 return devices_[index].is_connected; |
| 72 } |
| 73 |
| 74 bool BluetoothChooserController::IsPaired(size_t index) const { |
| 75 return devices_[index].is_paired; |
| 76 } |
| 77 |
| 70 base::string16 BluetoothChooserController::GetOption(size_t index) const { | 78 base::string16 BluetoothChooserController::GetOption(size_t index) const { |
| 71 DCHECK_LT(index, devices_.size()); | 79 DCHECK_LT(index, devices_.size()); |
| 72 const std::string& device_id = devices_[index].id; | 80 const std::string& device_id = devices_[index].id; |
| 73 const auto& device_name_it = device_id_to_name_map_.find(device_id); | 81 const auto& device_name_it = device_id_to_name_map_.find(device_id); |
| 74 DCHECK(device_name_it != device_id_to_name_map_.end()); | 82 DCHECK(device_name_it != device_id_to_name_map_.end()); |
| 75 const auto& it = device_name_counts_.find(device_name_it->second); | 83 const auto& it = device_name_counts_.find(device_name_it->second); |
| 76 DCHECK(it != device_name_counts_.end()); | 84 DCHECK(it != device_name_counts_.end()); |
| 77 return it->second == 1 | 85 return it->second == 1 |
| 78 ? device_name_it->second | 86 ? device_name_it->second |
| 79 : l10n_util::GetStringFUTF16( | 87 : l10n_util::GetStringFUTF16( |
| (...skipping 121 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 201 ++device_name_counts_[device_name]; | 209 ++device_name_counts_[device_name]; |
| 202 } | 210 } |
| 203 | 211 |
| 204 auto device_it = | 212 auto device_it = |
| 205 std::find_if(devices_.begin(), devices_.end(), | 213 std::find_if(devices_.begin(), devices_.end(), |
| 206 [&device_id](const BluetoothDeviceInfo& device) { | 214 [&device_id](const BluetoothDeviceInfo& device) { |
| 207 return device.id == device_id; | 215 return device.id == device_id; |
| 208 }); | 216 }); |
| 209 | 217 |
| 210 DCHECK(device_it != devices_.end()); | 218 DCHECK(device_it != devices_.end()); |
| 211 // http://crbug.com/543466 Update connection and paired status | |
| 212 | |
| 213 // When Bluetooth device scanning stops, the |signal_strength_level| | 219 // When Bluetooth device scanning stops, the |signal_strength_level| |
| 214 // is -1, and in this case, should still use the previously stored | 220 // is -1, and in this case, should still use the previously stored |
| 215 // signal strength level value. | 221 // signal strength level value. |
| 216 if (signal_strength_level != -1) | 222 if (signal_strength_level != -1) |
| 217 device_it->signal_strength_level = signal_strength_level; | 223 device_it->signal_strength_level = signal_strength_level; |
| 224 device_it->is_connected = is_gatt_connected; |
| 225 device_it->is_paired = is_paired; |
| 218 if (view()) | 226 if (view()) |
| 219 view()->OnOptionUpdated(device_it - devices_.begin()); | 227 view()->OnOptionUpdated(device_it - devices_.begin()); |
| 220 return; | 228 return; |
| 221 } | 229 } |
| 222 | 230 |
| 223 devices_.push_back({device_id, signal_strength_level}); | 231 devices_.push_back( |
| 232 {device_id, signal_strength_level, is_gatt_connected, is_paired}); |
| 224 device_id_to_name_map_.insert({device_id, device_name}); | 233 device_id_to_name_map_.insert({device_id, device_name}); |
| 225 ++device_name_counts_[device_name]; | 234 ++device_name_counts_[device_name]; |
| 226 if (view()) | 235 if (view()) |
| 227 view()->OnOptionAdded(devices_.size() - 1); | 236 view()->OnOptionAdded(devices_.size() - 1); |
| 228 } | 237 } |
| 229 | 238 |
| 230 void BluetoothChooserController::RemoveDevice(const std::string& device_id) { | 239 void BluetoothChooserController::RemoveDevice(const std::string& device_id) { |
| 231 const auto& name_it = device_id_to_name_map_.find(device_id); | 240 const auto& name_it = device_id_to_name_map_.find(device_id); |
| 232 if (name_it == device_id_to_name_map_.end()) | 241 if (name_it == device_id_to_name_map_.end()) |
| 233 return; | 242 return; |
| (...skipping 24 matching lines...) Expand all Loading... |
| 258 | 267 |
| 259 void BluetoothChooserController::ResetEventHandler() { | 268 void BluetoothChooserController::ResetEventHandler() { |
| 260 event_handler_.Reset(); | 269 event_handler_.Reset(); |
| 261 } | 270 } |
| 262 | 271 |
| 263 void BluetoothChooserController::ClearAllDevices() { | 272 void BluetoothChooserController::ClearAllDevices() { |
| 264 devices_.clear(); | 273 devices_.clear(); |
| 265 device_id_to_name_map_.clear(); | 274 device_id_to_name_map_.clear(); |
| 266 device_name_counts_.clear(); | 275 device_name_counts_.clear(); |
| 267 } | 276 } |
| OLD | NEW |