Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 "device/serial/serial_device_enumerator_mac.h" | 5 #include "device/serial/serial_device_enumerator_mac.h" |
| 6 | 6 |
| 7 #include "base/file_util.h" | 7 #include "base/file_util.h" |
| 8 #include "base/files/file_enumerator.h" | 8 #include "base/files/file_enumerator.h" |
| 9 #include "base/files/file_path.h" | 9 #include "base/files/file_path.h" |
| 10 #include "base/memory/linked_ptr.h" | |
| 11 #include "base/memory/scoped_ptr.h" | 10 #include "base/memory/scoped_ptr.h" |
| 12 #include "base/strings/string_util.h" | 11 #include "base/strings/string_util.h" |
| 13 | 12 |
| 14 namespace device { | 13 namespace device { |
| 15 | 14 |
| 16 // static | 15 // static |
| 17 scoped_ptr<SerialDeviceEnumerator> SerialDeviceEnumerator::Create() { | 16 scoped_ptr<SerialDeviceEnumerator> SerialDeviceEnumerator::Create() { |
| 18 return scoped_ptr<SerialDeviceEnumerator>(new SerialDeviceEnumeratorMac()); | 17 return scoped_ptr<SerialDeviceEnumerator>(new SerialDeviceEnumeratorMac()); |
| 19 } | 18 } |
| 20 | 19 |
| 21 SerialDeviceEnumeratorMac::SerialDeviceEnumeratorMac() {} | 20 SerialDeviceEnumeratorMac::SerialDeviceEnumeratorMac() {} |
| 22 | 21 |
| 23 SerialDeviceEnumeratorMac::~SerialDeviceEnumeratorMac() {} | 22 SerialDeviceEnumeratorMac::~SerialDeviceEnumeratorMac() {} |
| 24 | 23 |
| 25 // TODO(rockot): Use IOKit to enumerate serial interfaces. | 24 // TODO(rockot): Use IOKit to enumerate serial interfaces. |
| 26 void SerialDeviceEnumeratorMac::GetDevices(SerialDeviceInfoList* devices) { | 25 mojo::Array<SerialDeviceInfoPtr> SerialDeviceEnumeratorMac::GetDevices() { |
| 27 const base::FilePath kDevRoot("/dev"); | 26 const base::FilePath kDevRoot("/dev"); |
| 28 const int kFilesAndSymLinks = | 27 const int kFilesAndSymLinks = |
| 29 base::FileEnumerator::FILES | base::FileEnumerator::SHOW_SYM_LINKS; | 28 base::FileEnumerator::FILES | base::FileEnumerator::SHOW_SYM_LINKS; |
| 30 | 29 |
| 31 std::set<std::string> valid_patterns; | 30 std::set<std::string> valid_patterns; |
| 32 valid_patterns.insert("/dev/*Bluetooth*"); | 31 valid_patterns.insert("/dev/*Bluetooth*"); |
| 33 valid_patterns.insert("/dev/*Modem*"); | 32 valid_patterns.insert("/dev/*Modem*"); |
| 34 valid_patterns.insert("/dev/*bluetooth*"); | 33 valid_patterns.insert("/dev/*bluetooth*"); |
| 35 valid_patterns.insert("/dev/*modem*"); | 34 valid_patterns.insert("/dev/*modem*"); |
| 36 valid_patterns.insert("/dev/*serial*"); | 35 valid_patterns.insert("/dev/*serial*"); |
| 37 valid_patterns.insert("/dev/tty.*"); | 36 valid_patterns.insert("/dev/tty.*"); |
| 38 valid_patterns.insert("/dev/cu.*"); | 37 valid_patterns.insert("/dev/cu.*"); |
| 39 | 38 |
| 40 devices->clear(); | 39 mojo::Array<SerialDeviceInfoPtr> devices; |
| 41 base::FileEnumerator enumerator(kDevRoot, false, kFilesAndSymLinks); | 40 base::FileEnumerator enumerator(kDevRoot, false, kFilesAndSymLinks); |
| 42 do { | 41 do { |
| 43 const base::FilePath next_device_path(enumerator.Next()); | 42 const base::FilePath next_device_path(enumerator.Next()); |
| 44 const std::string next_device = next_device_path.value(); | 43 const std::string next_device = next_device_path.value(); |
| 45 if (next_device.empty()) | 44 if (next_device.empty()) |
| 46 break; | 45 break; |
| 47 | 46 |
| 48 std::set<std::string>::const_iterator i = valid_patterns.begin(); | 47 std::set<std::string>::const_iterator i = valid_patterns.begin(); |
| 49 for (; i != valid_patterns.end(); ++i) { | 48 for (; i != valid_patterns.end(); ++i) { |
| 50 if (MatchPattern(next_device, *i)) { | 49 if (MatchPattern(next_device, *i)) { |
| 51 linked_ptr<SerialDeviceInfo> info(new SerialDeviceInfo); | 50 SerialDeviceInfoPtr info(SerialDeviceInfo::New()); |
| 52 info->path = next_device; | 51 info->path = mojo::String::From(next_device); |
|
darin (slow to review)
2014/06/16 16:59:19
use of mojo::String::From here is unnecessary. you
Sam McNally
2014/06/17 07:07:20
Done.
| |
| 53 devices->push_back(info); | 52 devices.push_back(info.Pass()); |
| 54 break; | 53 break; |
| 55 } | 54 } |
| 56 } | 55 } |
| 57 } while (true); | 56 } while (true); |
| 57 return devices.Pass(); | |
| 58 } | 58 } |
| 59 | 59 |
| 60 } // namespace device | 60 } // namespace device |
| OLD | NEW |