| Index: chromeos/dbus/shill_stub_helper.cc
|
| diff --git a/chromeos/dbus/shill_stub_helper.cc b/chromeos/dbus/shill_stub_helper.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..1cbc6552eadeb8314c285983ea22818279743df7
|
| --- /dev/null
|
| +++ b/chromeos/dbus/shill_stub_helper.cc
|
| @@ -0,0 +1,198 @@
|
| +// Copyright 2013 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "chromeos/dbus/shill_stub_helper.h"
|
| +
|
| +#include "base/bind.h"
|
| +#include "base/command_line.h"
|
| +#include "chromeos/chromeos_switches.h"
|
| +#include "chromeos/dbus/dbus_thread_manager.h"
|
| +#include "chromeos/dbus/shill_device_client.h"
|
| +#include "chromeos/dbus/shill_manager_client.h"
|
| +#include "chromeos/dbus/shill_profile_client.h"
|
| +#include "chromeos/dbus/shill_profile_client_stub.h"
|
| +#include "chromeos/dbus/shill_service_client.h"
|
| +#include "third_party/cros_system_api/dbus/service_constants.h"
|
| +
|
| +namespace chromeos {
|
| +namespace shill_stub_helper {
|
| +
|
| +namespace {
|
| +
|
| +const char kStubPortalledWifiName[] = "Portalled Wifi";
|
| +const char kStubPortalledWifiPath[] = "portalled_wifi";
|
| +
|
| +void UpdatePortalledWifiState() {
|
| + ShillServiceClient::TestInterface* services =
|
| + DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
|
| +
|
| + services->SetServiceProperty(kStubPortalledWifiPath,
|
| + flimflam::kStateProperty,
|
| + base::StringValue(flimflam::kStatePortal));
|
| +}
|
| +
|
| +} // namespace
|
| +
|
| +const char kSharedProfilePath[] = "/profile/default";
|
| +
|
| +bool IsStubPortalledWifiEnabled(const std::string& path) {
|
| + if (!CommandLine::ForCurrentProcess()->HasSwitch(
|
| + chromeos::switches::kEnableStubPortalledWifi)) {
|
| + return false;
|
| + }
|
| + return path == kStubPortalledWifiPath;
|
| +}
|
| +
|
| +void SetupDefaultEnvironment() {
|
| + ShillServiceClient::TestInterface* services =
|
| + DBusThreadManager::Get()->GetShillServiceClient()->GetTestInterface();
|
| + ShillProfileClient::TestInterface* profiles =
|
| + DBusThreadManager::Get()->GetShillProfileClient()->GetTestInterface();
|
| + ShillManagerClient::TestInterface* manager =
|
| + DBusThreadManager::Get()->GetShillManagerClient()->GetTestInterface();
|
| + ShillDeviceClient::TestInterface* devices =
|
| + DBusThreadManager::Get()->GetShillDeviceClient()->GetTestInterface();
|
| + if (!services || !profiles || !manager | !devices)
|
| + return;
|
| +
|
| + // Stub Technologies.
|
| + if (!CommandLine::ForCurrentProcess()->HasSwitch(
|
| + chromeos::switches::kDisableStubEthernet)) {
|
| + manager->AddTechnology(flimflam::kTypeEthernet, true);
|
| + }
|
| + manager->AddTechnology(flimflam::kTypeWifi, true);
|
| + manager->AddTechnology(flimflam::kTypeCellular, true);
|
| + manager->AddTechnology(flimflam::kTypeWimax, true);
|
| +
|
| + profiles->AddProfile(kSharedProfilePath, std::string());
|
| +
|
| + // Add a wifi device.
|
| + devices->AddDevice("stub_wifi_device1", flimflam::kTypeWifi, "/device/wifi1");
|
| +
|
| + // Add a cellular device. Used in SMS stub.
|
| + devices->AddDevice(
|
| + "stub_cellular_device1", flimflam::kTypeCellular, "/device/cellular1");
|
| + devices->SetDeviceProperty("stub_cellular_device1",
|
| + flimflam::kCarrierProperty,
|
| + base::StringValue(shill::kCarrierSprint));
|
| +
|
| + // Add a wimax device.
|
| + devices->AddDevice(
|
| + "stub_wimax_device1", flimflam::kTypeWimax, "/device/wimax1");
|
| +
|
| + const bool add_to_visible = true;
|
| + const bool add_to_watchlist = true;
|
| +
|
| + if (!CommandLine::ForCurrentProcess()->HasSwitch(
|
| + chromeos::switches::kDisableStubEthernet)) {
|
| + services->AddService("eth1", "eth1",
|
| + flimflam::kTypeEthernet,
|
| + flimflam::kStateOnline,
|
| + add_to_visible, add_to_watchlist);
|
| + profiles->AddService(kSharedProfilePath, "eth1");
|
| + }
|
| +
|
| + // Wifi
|
| +
|
| + services->AddService("wifi1",
|
| + "wifi1",
|
| + flimflam::kTypeWifi,
|
| + flimflam::kStateOnline,
|
| + add_to_visible, add_to_watchlist);
|
| + services->SetServiceProperty("wifi1",
|
| + flimflam::kSecurityProperty,
|
| + base::StringValue(flimflam::kSecurityWep));
|
| + profiles->AddService(kSharedProfilePath, "wifi1");
|
| +
|
| + services->AddService("wifi2",
|
| + "wifi2_PSK",
|
| + flimflam::kTypeWifi,
|
| + flimflam::kStateIdle,
|
| + add_to_visible, add_to_watchlist);
|
| + services->SetServiceProperty("wifi2",
|
| + flimflam::kSecurityProperty,
|
| + base::StringValue(flimflam::kSecurityPsk));
|
| + base::FundamentalValue strength_value(80);
|
| + services->SetServiceProperty(
|
| + "wifi2", flimflam::kSignalStrengthProperty, strength_value);
|
| + profiles->AddService(kSharedProfilePath, "wifi2");
|
| +
|
| + if (CommandLine::ForCurrentProcess()->HasSwitch(
|
| + chromeos::switches::kEnableStubPortalledWifi)) {
|
| + services->AddService(kStubPortalledWifiPath,
|
| + kStubPortalledWifiName,
|
| + flimflam::kTypeWifi,
|
| + flimflam::kStatePortal,
|
| + add_to_visible, add_to_watchlist);
|
| + services->SetServiceProperty(kStubPortalledWifiPath,
|
| + flimflam::kSecurityProperty,
|
| + base::StringValue(flimflam::kSecurityNone));
|
| + services->SetConnectBehavior(kStubPortalledWifiPath,
|
| + base::Bind(&UpdatePortalledWifiState));
|
| + services->SetServiceProperty(kStubPortalledWifiPath,
|
| + flimflam::kConnectableProperty,
|
| + base::FundamentalValue(true));
|
| + }
|
| +
|
| + // Wimax
|
| +
|
| + services->AddService("wimax1",
|
| + "wimax1",
|
| + flimflam::kTypeWimax,
|
| + flimflam::kStateIdle,
|
| + add_to_visible, add_to_watchlist);
|
| + services->SetServiceProperty(
|
| + "wimax1", flimflam::kConnectableProperty, base::FundamentalValue(true));
|
| +
|
| + // Cellular
|
| +
|
| + services->AddService("cellular1",
|
| + "cellular1",
|
| + flimflam::kTypeCellular,
|
| + flimflam::kStateIdle,
|
| + add_to_visible, add_to_watchlist);
|
| + base::StringValue technology_value(flimflam::kNetworkTechnologyGsm);
|
| + services->SetServiceProperty(
|
| + "cellular1", flimflam::kNetworkTechnologyProperty, technology_value);
|
| + services->SetServiceProperty(
|
| + "cellular1",
|
| + flimflam::kActivationStateProperty,
|
| + base::StringValue(flimflam::kActivationStateNotActivated));
|
| + services->SetServiceProperty("cellular1",
|
| + flimflam::kRoamingStateProperty,
|
| + base::StringValue(flimflam::kRoamingStateHome));
|
| +
|
| + // VPN
|
| +
|
| + // Set the "Provider" dictionary properties. Note: when setting these in
|
| + // Shill, "Provider.Type", etc keys are used, but when reading the values
|
| + // "Provider" . "Type", etc keys are used. Here we are setting the values
|
| + // that will be read (by the UI, tests, etc).
|
| + base::DictionaryValue provider_properties;
|
| + provider_properties.SetString(flimflam::kTypeProperty,
|
| + flimflam::kProviderOpenVpn);
|
| + provider_properties.SetString(flimflam::kHostProperty, "vpn_host");
|
| +
|
| + services->AddService("vpn1",
|
| + "vpn1",
|
| + flimflam::kTypeVPN,
|
| + flimflam::kStateOnline,
|
| + add_to_visible, add_to_watchlist);
|
| + services->SetServiceProperty(
|
| + "vpn1", flimflam::kProviderProperty, provider_properties);
|
| + profiles->AddService(kSharedProfilePath, "vpn1");
|
| +
|
| + services->AddService("vpn2",
|
| + "vpn2",
|
| + flimflam::kTypeVPN,
|
| + flimflam::kStateOffline,
|
| + add_to_visible, add_to_watchlist);
|
| + services->SetServiceProperty(
|
| + "vpn2", flimflam::kProviderProperty, provider_properties);
|
| +
|
| + manager->SortManagerServices();
|
| +}
|
| +
|
| +} // namespace shill_stub_helper
|
| +} // namespace chromeos
|
|
|