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

Side by Side Diff: chromeos/dbus/shill_stub_helper.cc

Issue 181413006: Replace misc. network stub flags with more flexible ones (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Rebase Created 6 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 | Annotate | Revision Log
« no previous file with comments | « chromeos/dbus/shill_stub_helper.h ('k') | chromeos/dbus/sms_client.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2013 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/shill_stub_helper.h"
6
7 #include "base/bind.h"
8 #include "base/command_line.h"
9 #include "base/strings/string_tokenizer.h"
10 #include "chromeos/chromeos_switches.h"
11 #include "chromeos/dbus/dbus_thread_manager.h"
12 #include "chromeos/dbus/shill_device_client.h"
13 #include "chromeos/dbus/shill_manager_client.h"
14 #include "chromeos/dbus/shill_profile_client.h"
15 #include "chromeos/dbus/shill_service_client.h"
16 #include "third_party/cros_system_api/dbus/service_constants.h"
17
18 namespace chromeos {
19 namespace shill_stub_helper {
20
21 namespace {
22
23 void UpdatePortalledWifiState(const std::string& service_path) {
24 ShillServiceClient::TestInterface* services =
25 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
26
27 services->SetServiceProperty(service_path,
28 shill::kStateProperty,
29 base::StringValue(shill::kStatePortal));
30 }
31
32 // Returns true if |network_type| is found in the comma separated list given
33 // with kEnabledStubNetworkTypes switch.
34 bool IsStubNetworkTypeEnabled(const std::string& network_type) {
35 CommandLine* command_line = CommandLine::ForCurrentProcess();
36 // If the switch is not present, enabled by default.
37 if (!command_line->HasSwitch(switches::kEnabledStubNetworkTypes))
38 return true;
39
40 const std::string value =
41 command_line->GetSwitchValueASCII(switches::kEnabledStubNetworkTypes);
42 base::StringTokenizer tokenizer(value, ",");
43 while (tokenizer.GetNext()) {
44 if (tokenizer.token() == network_type)
45 return true;
46 }
47 return false;
48 }
49
50 } // namespace
51
52 void SetupDefaultEnvironment() {
53 ShillServiceClient::TestInterface* services =
54 DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
55 ShillProfileClient::TestInterface* profiles =
56 DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface();
57 ShillManagerClient::TestInterface* manager =
58 DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface();
59 ShillDeviceClient::TestInterface* devices =
60 DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface();
61 if (!services || !profiles || !manager | !devices)
62 return;
63
64 // Stub Technologies.
65 manager->AddTechnology(shill::kTypeEthernet, true);
66 manager->AddTechnology(shill::kTypeWifi, true);
67 manager->AddTechnology(shill::kTypeCellular, true);
68 manager->AddTechnology(shill::kTypeWimax, true);
69
70 std::string shared_profile = ShillProfileClient::GetSharedProfilePath();
71 profiles->AddProfile(shared_profile, std::string());
72
73 devices->AddDevice("/device/eth1", shill::kTypeEthernet, "stub_eth_device1");
74 devices->AddDevice("/device/wifi1", shill::kTypeWifi, "stub_wifi_device1");
75
76 devices->AddDevice(
77 "/device/cellular1", shill::kTypeCellular, "stub_cellular_device1");
78 devices->SetDeviceProperty("/device/cellular1",
79 shill::kCarrierProperty,
80 base::StringValue(shill::kCarrierSprint));
81
82 devices->AddDevice("/device/wimax1", shill::kTypeWimax, "stub_wimax_device1");
83
84 const bool add_to_visible = true;
85 const bool add_to_watchlist = true;
86
87 // On real devices, service is not added for ethernet if cable is disconneted.
88 if (IsStubNetworkTypeEnabled(shill::kTypeEthernet)) {
89 services->AddService("eth1", "eth1",
90 shill::kTypeEthernet,
91 shill::kStateOnline,
92 add_to_visible, add_to_watchlist);
93 profiles->AddService(shared_profile, "eth1");
94 }
95
96 // Wifi
97
98 services->AddService("wifi1",
99 "wifi1",
100 shill::kTypeWifi,
101 IsStubNetworkTypeEnabled(shill::kTypeWifi) ?
102 shill::kStateOnline : shill::kStateIdle,
103 add_to_visible, add_to_watchlist);
104 services->SetServiceProperty("wifi1",
105 shill::kSecurityProperty,
106 base::StringValue(shill::kSecurityWep));
107 profiles->AddService(shared_profile, "wifi1");
108
109 services->AddService("wifi2",
110 "wifi2_PSK",
111 shill::kTypeWifi,
112 shill::kStateIdle,
113 add_to_visible, add_to_watchlist);
114 services->SetServiceProperty("wifi2",
115 shill::kSecurityProperty,
116 base::StringValue(shill::kSecurityPsk));
117 base::FundamentalValue strength_value(80);
118 services->SetServiceProperty(
119 "wifi2", shill::kSignalStrengthProperty, strength_value);
120 profiles->AddService(shared_profile, "wifi2");
121
122 if (CommandLine::ForCurrentProcess()->HasSwitch(
123 chromeos::switches::kEnableStubPortalledWifi)) {
124 const std::string kPortalledWifiPath = "portalled_wifi";
125 services->AddService(kPortalledWifiPath,
126 "Portalled Wifi",
127 shill::kTypeWifi,
128 shill::kStatePortal,
129 add_to_visible, add_to_watchlist);
130 services->SetServiceProperty(kPortalledWifiPath,
131 shill::kSecurityProperty,
132 base::StringValue(shill::kSecurityNone));
133 services->SetConnectBehavior(kPortalledWifiPath,
134 base::Bind(&UpdatePortalledWifiState,
135 kPortalledWifiPath));
136 services->SetServiceProperty(kPortalledWifiPath,
137 shill::kConnectableProperty,
138 base::FundamentalValue(true));
139 profiles->AddService(shared_profile, kPortalledWifiPath);
140 }
141
142 // Wimax
143
144 services->AddService("wimax1",
145 "wimax1",
146 shill::kTypeWimax,
147 shill::kStateIdle,
148 add_to_visible, add_to_watchlist);
149 services->SetServiceProperty(
150 "wimax1", shill::kConnectableProperty, base::FundamentalValue(true));
151
152 // Cellular
153
154 services->AddService("cellular1",
155 "cellular1",
156 shill::kTypeCellular,
157 shill::kStateIdle,
158 add_to_visible, add_to_watchlist);
159 base::StringValue technology_value(shill::kNetworkTechnologyGsm);
160 services->SetServiceProperty(
161 "cellular1", shill::kNetworkTechnologyProperty, technology_value);
162 services->SetServiceProperty(
163 "cellular1",
164 shill::kActivationStateProperty,
165 base::StringValue(shill::kActivationStateNotActivated));
166 services->SetServiceProperty("cellular1",
167 shill::kRoamingStateProperty,
168 base::StringValue(shill::kRoamingStateHome));
169
170 // VPN
171
172 // Set the "Provider" dictionary properties. Note: when setting these in
173 // Shill, "Provider.Type", etc keys are used, but when reading the values
174 // "Provider" . "Type", etc keys are used. Here we are setting the values
175 // that will be read (by the UI, tests, etc).
176 base::DictionaryValue provider_properties;
177 provider_properties.SetString(shill::kTypeProperty, shill::kProviderOpenVpn);
178 provider_properties.SetString(shill::kHostProperty, "vpn_host");
179
180 services->AddService("vpn1",
181 "vpn1",
182 shill::kTypeVPN,
183 IsStubNetworkTypeEnabled(shill::kTypeVPN) ?
184 shill::kStateOnline : shill::kStateIdle,
185 add_to_visible, add_to_watchlist);
186 services->SetServiceProperty(
187 "vpn1", shill::kProviderProperty, provider_properties);
188 profiles->AddService(shared_profile, "vpn1");
189
190 services->AddService("vpn2",
191 "vpn2",
192 shill::kTypeVPN,
193 shill::kStateIdle,
194 add_to_visible, add_to_watchlist);
195 services->SetServiceProperty(
196 "vpn2", shill::kProviderProperty, provider_properties);
197
198 manager->SortManagerServices();
199 }
200
201 } // namespace shill_stub_helper
202 } // namespace chromeos
OLDNEW
« no previous file with comments | « chromeos/dbus/shill_stub_helper.h ('k') | chromeos/dbus/sms_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698