1 // 2 // Copyright (C) 2015 The Android Open Source Project 3 // 4 // Licensed under the Apache License, Version 2.0 (the "License"); 5 // you may not use this file except in compliance with the License. 6 // You may obtain a copy of the License at 7 // 8 // http://www.apache.org/licenses/LICENSE-2.0 9 // 10 // Unless required by applicable law or agreed to in writing, software 11 // distributed under the License is distributed on an "AS IS" BASIS, 12 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 // See the License for the specific language governing permissions and 14 // limitations under the License. 15 // 16 17 #ifndef SHILL_DBUS_CHROMEOS_DBUS_CONTROL_H_ 18 #define SHILL_DBUS_CHROMEOS_DBUS_CONTROL_H_ 19 20 #include <memory> 21 #include <string> 22 23 #include <brillo/dbus/exported_object_manager.h> 24 25 #include "shill/control_interface.h" 26 27 namespace shill { 28 29 class EventDispatcher; 30 class Manager; 31 32 class ChromeosDBusControl : public ControlInterface { 33 public: 34 ChromeosDBusControl(EventDispatcher* dispatcher); 35 ~ChromeosDBusControl() override; 36 37 void RegisterManagerObject( 38 Manager* manager, 39 const base::Closure& registration_done_callback) override; 40 DeviceAdaptorInterface* CreateDeviceAdaptor(Device* device) override; 41 IPConfigAdaptorInterface* CreateIPConfigAdaptor(IPConfig* ipconfig) override; 42 ManagerAdaptorInterface* CreateManagerAdaptor(Manager* manager) override; 43 ProfileAdaptorInterface* CreateProfileAdaptor(Profile* profile) override; 44 RPCTaskAdaptorInterface* CreateRPCTaskAdaptor(RPCTask* task) override; 45 ServiceAdaptorInterface* CreateServiceAdaptor(Service* service) override; 46 #ifndef DISABLE_VPN 47 ThirdPartyVpnAdaptorInterface* CreateThirdPartyVpnAdaptor( 48 ThirdPartyVpnDriver* driver) override; 49 #endif 50 51 const std::string& NullRPCIdentifier() override; 52 53 // The caller retains ownership of 'delegate'. It must not be deleted before 54 // the proxy. 55 PowerManagerProxyInterface* CreatePowerManagerProxy( 56 PowerManagerProxyDelegate* delegate, 57 const base::Closure& service_appeared_callback, 58 const base::Closure& service_vanished_callback) override; 59 60 #if !defined(DISABLE_WIFI) || !defined(DISABLE_WIRED_8021X) 61 SupplicantProcessProxyInterface* CreateSupplicantProcessProxy( 62 const base::Closure& service_appeared_callback, 63 const base::Closure& service_vanished_callback) override; 64 65 SupplicantInterfaceProxyInterface* CreateSupplicantInterfaceProxy( 66 SupplicantEventDelegateInterface* delegate, 67 const std::string& object_path) override; 68 69 SupplicantNetworkProxyInterface* CreateSupplicantNetworkProxy( 70 const std::string& object_path) override; 71 #endif // DISABLE_WIFI || DISABLE_WIRED_8021X 72 73 #if !defined(DISABLE_WIFI) 74 // See comment in supplicant_bss_proxy.h, about bare pointer. 75 SupplicantBSSProxyInterface* CreateSupplicantBSSProxy( 76 WiFiEndpoint* wifi_endpoint, 77 const std::string& object_path) override; 78 #endif // DISABLE_WIFI 79 80 UpstartProxyInterface* CreateUpstartProxy() override; 81 82 DHCPCDListenerInterface* CreateDHCPCDListener( 83 DHCPProvider* provider) override; 84 85 DHCPProxyInterface* CreateDHCPProxy(const std::string& service) override; 86 87 FirewallProxyInterface* CreateFirewallProxy() override; 88 89 #if !defined(DISABLE_CELLULAR) 90 DBusPropertiesProxyInterface* CreateDBusPropertiesProxy( 91 const std::string& path, 92 const std::string& service) override; 93 94 DBusObjectManagerProxyInterface* CreateDBusObjectManagerProxy( 95 const std::string& path, 96 const std::string& service, 97 const base::Closure& service_appeared_callback, 98 const base::Closure& service_vanished_callback) override; 99 100 ModemManagerProxyInterface* CreateModemManagerProxy( 101 ModemManagerClassic* manager, 102 const std::string& path, 103 const std::string& service, 104 const base::Closure& service_appeared_callback, 105 const base::Closure& service_vanished_callback) override; 106 107 ModemProxyInterface* CreateModemProxy(const std::string& path, 108 const std::string& service) override; 109 110 ModemSimpleProxyInterface* CreateModemSimpleProxy( 111 const std::string& path, 112 const std::string& service) override; 113 114 ModemCDMAProxyInterface* CreateModemCDMAProxy( 115 const std::string& path, 116 const std::string& service) override; 117 118 ModemGSMCardProxyInterface* CreateModemGSMCardProxy( 119 const std::string& path, 120 const std::string& service) override; 121 122 ModemGSMNetworkProxyInterface* CreateModemGSMNetworkProxy( 123 const std::string& path, 124 const std::string& service) override; 125 126 ModemGobiProxyInterface* CreateModemGobiProxy( 127 const std::string& path, 128 const std::string& service) override; 129 130 // Proxies for ModemManager1 interfaces 131 mm1::ModemModem3gppProxyInterface* CreateMM1ModemModem3gppProxy( 132 const std::string& path, 133 const std::string& service) override; 134 135 mm1::ModemModemCdmaProxyInterface* CreateMM1ModemModemCdmaProxy( 136 const std::string& path, 137 const std::string& service) override; 138 139 mm1::ModemProxyInterface* CreateMM1ModemProxy( 140 const std::string& path, 141 const std::string& service) override; 142 143 mm1::ModemSimpleProxyInterface* CreateMM1ModemSimpleProxy( 144 const std::string& path, 145 const std::string& service) override; 146 147 mm1::SimProxyInterface* CreateSimProxy( 148 const std::string& path, 149 const std::string& service) override; 150 #endif // DISABLE_CELLULAR 151 152 #if !defined(DISABLE_WIMAX) 153 WiMaxDeviceProxyInterface* CreateWiMaxDeviceProxy( 154 const std::string& path) override; 155 WiMaxManagerProxyInterface* CreateWiMaxManagerProxy( 156 const base::Closure& service_appeared_callback, 157 const base::Closure& service_vanished_callback) override; 158 WiMaxNetworkProxyInterface* CreateWiMaxNetworkProxy( 159 const std::string& path) override; 160 #endif // DISABLE_WIMAX 161 162 private: 163 template <typename Object, typename AdaptorInterface, typename Adaptor> 164 AdaptorInterface* CreateAdaptor(Object* object); 165 166 void OnDBusServiceRegistered( 167 const base::Callback<void(bool)>& completion_action, bool success); 168 void TakeServiceOwnership(bool success); 169 170 static const char kNullPath[]; 171 172 // Use separate bus connection for adaptors and proxies. This allows the 173 // proxy to receive all broadcast signal messages that it is interested in. 174 // Refer to crbug.com/446837 for more info. 175 scoped_refptr<dbus::Bus> adaptor_bus_; 176 scoped_refptr<dbus::Bus> proxy_bus_; 177 EventDispatcher* dispatcher_; 178 std::string null_identifier_; 179 base::Closure registration_done_callback_; 180 }; 181 182 } // namespace shill 183 184 #endif // SHILL_DBUS_CHROMEOS_DBUS_CONTROL_H_ 185