123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- // 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 "components/wifi/fake_wifi_service.h"
- #include <memory>
- #include <utility>
- #include "base/bind.h"
- #include "base/values.h"
- #include "components/onc/onc_constants.h"
- namespace wifi {
- FakeWiFiService::FakeWiFiService() {
- // Populate data expected by unit test.
- {
- NetworkProperties network_properties;
- network_properties.connection_state = onc::connection_state::kConnected;
- network_properties.guid = "stub_wifi1_guid";
- network_properties.name = "wifi1";
- network_properties.type = onc::network_type::kWiFi;
- network_properties.frequency = 0;
- network_properties.ssid = "wifi1";
- network_properties.security = onc::wifi::kWEP_PSK;
- network_properties.signal_strength = 40;
- networks_.push_back(network_properties);
- }
- {
- NetworkProperties network_properties;
- network_properties.connection_state = onc::connection_state::kNotConnected;
- network_properties.guid = "stub_wifi2_guid";
- network_properties.name = "wifi2_PSK";
- network_properties.type = onc::network_type::kWiFi;
- network_properties.frequency = 5000;
- network_properties.frequency_set.insert(2400);
- network_properties.frequency_set.insert(5000);
- network_properties.ssid = "wifi2_PSK";
- network_properties.security = onc::wifi::kWPA_PSK;
- network_properties.signal_strength = 80;
- networks_.push_back(network_properties);
- }
- }
- FakeWiFiService::~FakeWiFiService() {
- }
- void FakeWiFiService::Initialize(
- scoped_refptr<base::SequencedTaskRunner> task_runner) {
- }
- void FakeWiFiService::UnInitialize() {
- }
- void FakeWiFiService::GetProperties(const std::string& network_guid,
- base::Value::Dict* properties,
- std::string* error) {
- NetworkList::iterator network_properties = FindNetwork(network_guid);
- if (network_properties == networks_.end()) {
- *error = "Error.InvalidNetworkGuid";
- return;
- }
- *properties = network_properties->ToValue(/*network_list=*/false);
- }
- void FakeWiFiService::GetManagedProperties(
- const std::string& network_guid,
- base::Value::Dict* managed_properties,
- std::string* error) {
- // Not implemented
- *error = kErrorWiFiService;
- }
- void FakeWiFiService::GetState(const std::string& network_guid,
- base::Value::Dict* properties,
- std::string* error) {
- NetworkList::iterator network_properties = FindNetwork(network_guid);
- if (network_properties == networks_.end()) {
- *error = "Error.InvalidNetworkGuid";
- return;
- }
- *properties = network_properties->ToValue(/*network_list=*/true);
- }
- void FakeWiFiService::SetProperties(const std::string& network_guid,
- base::Value::Dict properties,
- std::string* error) {
- NetworkList::iterator network_properties = FindNetwork(network_guid);
- if (network_properties == networks_.end() ||
- !network_properties->UpdateFromValue(properties)) {
- *error = "Error.DBusFailed";
- }
- }
- void FakeWiFiService::CreateNetwork(bool shared,
- base::Value::Dict properties,
- std::string* network_guid,
- std::string* error) {
- NetworkProperties network_properties;
- if (network_properties.UpdateFromValue(properties)) {
- network_properties.guid = network_properties.ssid;
- networks_.push_back(network_properties);
- *network_guid = network_properties.guid;
- } else {
- *error = "Error.DBusFailed";
- }
- }
- void FakeWiFiService::GetVisibleNetworks(const std::string& network_type,
- bool include_details,
- base::Value::List* network_list) {
- for (NetworkList::const_iterator it = networks_.begin();
- it != networks_.end();
- ++it) {
- if (network_type.empty() || network_type == onc::network_type::kAllTypes ||
- it->type == network_type) {
- network_list->Append(it->ToValue(/*network_list=*/!include_details));
- }
- }
- }
- void FakeWiFiService::RequestNetworkScan() {
- NotifyNetworkListChanged(networks_);
- }
- void FakeWiFiService::StartConnect(const std::string& network_guid,
- std::string* error) {
- NetworkList::iterator network_properties = FindNetwork(network_guid);
- if (network_properties == networks_.end()) {
- *error = "Error.InvalidNetworkGuid";
- return;
- }
- DisconnectAllNetworksOfType(network_properties->type);
- network_properties->connection_state = onc::connection_state::kConnected;
- SortNetworks();
- NotifyNetworkListChanged(networks_);
- NotifyNetworkChanged(network_guid);
- }
- void FakeWiFiService::StartDisconnect(const std::string& network_guid,
- std::string* error) {
- NetworkList::iterator network_properties = FindNetwork(network_guid);
- if (network_properties == networks_.end()) {
- *error = "Error.InvalidNetworkGuid";
- return;
- }
- network_properties->connection_state = onc::connection_state::kNotConnected;
- SortNetworks();
- NotifyNetworkListChanged(networks_);
- NotifyNetworkChanged(network_guid);
- }
- void FakeWiFiService::GetKeyFromSystem(const std::string& network_guid,
- std::string* key_data,
- std::string* error) {
- *error = "not-found";
- }
- void FakeWiFiService::SetEventObservers(
- scoped_refptr<base::SingleThreadTaskRunner> task_runner,
- NetworkGuidListCallback networks_changed_observer,
- NetworkGuidListCallback network_list_changed_observer) {
- task_runner_.swap(task_runner);
- networks_changed_observer_ = std::move(networks_changed_observer);
- network_list_changed_observer_ = std::move(network_list_changed_observer);
- }
- void FakeWiFiService::RequestConnectedNetworkUpdate() {
- }
- void FakeWiFiService::GetConnectedNetworkSSID(std::string* ssid,
- std::string* error) {
- *ssid = "";
- *error = "";
- }
- NetworkList::iterator FakeWiFiService::FindNetwork(
- const std::string& network_guid) {
- for (NetworkList::iterator it = networks_.begin(); it != networks_.end();
- ++it) {
- if (it->guid == network_guid)
- return it;
- }
- return networks_.end();
- }
- void FakeWiFiService::DisconnectAllNetworksOfType(const std::string& type) {
- for (NetworkList::iterator it = networks_.begin(); it != networks_.end();
- ++it) {
- if (it->type == type)
- it->connection_state = onc::connection_state::kNotConnected;
- }
- }
- void FakeWiFiService::SortNetworks() {
- // Sort networks, so connected/connecting is up front, then by type:
- // Ethernet, WiFi, Cellular, VPN
- networks_.sort(NetworkProperties::OrderByType);
- }
- void FakeWiFiService::NotifyNetworkListChanged(const NetworkList& networks) {
- WiFiService::NetworkGuidList current_networks;
- for (NetworkList::const_iterator it = networks.begin(); it != networks.end();
- ++it) {
- current_networks.push_back(it->guid);
- }
- task_runner_->PostTask(
- FROM_HERE,
- base::BindOnce(network_list_changed_observer_, current_networks));
- }
- void FakeWiFiService::NotifyNetworkChanged(const std::string& network_guid) {
- WiFiService::NetworkGuidList changed_networks(1, network_guid);
- task_runner_->PostTask(
- FROM_HERE, base::BindOnce(networks_changed_observer_, changed_networks));
- }
- } // namespace wifi
|