OLD | NEW |
| (Empty) |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | |
2 // Use of this source code is governed by a BSD-style license that can be | |
3 // found in the LICENSE file. | |
4 | |
5 #include "chromeos/dbus/dbus_client_types.h" | |
6 | |
7 #include "base/macros.h" | |
8 #include "base/strings/string_split.h" | |
9 #include "base/strings/string_util.h" | |
10 | |
11 namespace chromeos { | |
12 | |
13 namespace { | |
14 | |
15 // Command line switch mapping for --dbus-real-clients. | |
16 const struct { | |
17 const char* param_name; | |
18 DBusClientType client_type; | |
19 } kClientTypeMap[] = { | |
20 {"bluetooth", DBusClientType::BLUETOOTH}, | |
21 {"cras", DBusClientType::CRAS}, | |
22 {"cros_disks", DBusClientType::CROS_DISKS}, | |
23 {"cryptohome", DBusClientType::CRYPTOHOME}, | |
24 {"debug_daemon", DBusClientType::DEBUG_DAEMON}, | |
25 {"easy_unlock", DBusClientType::EASY_UNLOCK}, | |
26 {"lorgnette_manager", DBusClientType::LORGNETTE_MANAGER}, | |
27 {"shill", DBusClientType::SHILL}, | |
28 {"gsm_sms", DBusClientType::GSM_SMS}, | |
29 {"image_burner", DBusClientType::IMAGE_BURNER}, | |
30 {"modem_messaging", DBusClientType::MODEM_MESSAGING}, | |
31 {"permission_broker", DBusClientType::PERMISSION_BROKER}, | |
32 {"power_manager", DBusClientType::POWER_MANAGER}, | |
33 {"session_manager", DBusClientType::SESSION_MANAGER}, | |
34 {"sms", DBusClientType::SMS}, | |
35 {"system_clock", DBusClientType::SYSTEM_CLOCK}, | |
36 {"update_engine", DBusClientType::UPDATE_ENGINE}, | |
37 {"arc_obb_mounter", DBusClientType::ARC_OBB_MOUNTER}, | |
38 }; | |
39 | |
40 // Parses single command line param value for dbus subsystem. If successful, | |
41 // returns its enum representation. Otherwise returns NONE. | |
42 DBusClientType GetDBusClientType(const std::string& client_type_name) { | |
43 for (size_t i = 0; i < arraysize(kClientTypeMap); i++) { | |
44 if (base::LowerCaseEqualsASCII(client_type_name, | |
45 kClientTypeMap[i].param_name)) | |
46 return kClientTypeMap[i].client_type; | |
47 } | |
48 return DBusClientType::NONE; | |
49 } | |
50 | |
51 } // namespace | |
52 | |
53 DBusClientTypeMask ParseDBusRealClientsList(const std::string& clients_list) { | |
54 DBusClientTypeMask real_client_mask = 0; | |
55 for (const std::string& cur : base::SplitString( | |
56 clients_list, ",", base::TRIM_WHITESPACE, base::SPLIT_WANT_ALL)) { | |
57 DBusClientType client = GetDBusClientType(cur); | |
58 if (client != DBusClientType::NONE) { | |
59 LOG(WARNING) << "Forcing real dbus client for " << cur; | |
60 real_client_mask |= static_cast<int>(client); | |
61 } else { | |
62 LOG(ERROR) << "Unknown dbus client: " << cur; | |
63 } | |
64 } | |
65 | |
66 return real_client_mask; | |
67 } | |
68 | |
69 } // namespace chromeos | |
OLD | NEW |