text: // Copyright 2014 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_sync/network_state_helper_chromeos.h"
  
  #include <memory>
  
  #include "base/logging.h"
  #include "chromeos/network/network_state.h"
  #include "chromeos/network/network_state_handler.h"
  #include "chromeos/network/network_type_pattern.h"
  #include "components/wifi_sync/wifi_security_class.h"
  
  namespace wifi_sync {
  
  WifiCredential::CredentialSet GetWifiCredentialsForShillProfile(
      chromeos::NetworkStateHandler* network_state_handler,
      const std::string& shill_profile_path) {
    DCHECK(network_state_handler);
  
    chromeos::NetworkStateHandler::NetworkStateList networks;
    network_state_handler->GetNetworkListByType(
        chromeos::NetworkTypePattern::WiFi(),
        true /* configured_only */,
        false /* visible_only */,
        0 /* unlimited result size */,
        &networks);
  
    auto credentials(WifiCredential::MakeSet());
    for (const chromeos::NetworkState* network : networks) {
      if (network->profile_path() != shill_profile_path)
        continue;
  
      // TODO(quiche): Fill in the actual passphrase via an asynchronous
      // call to a chromeos::NetworkConfigurationHandler instance's
      // GetProperties method.
      std::unique_ptr<WifiCredential> credential = WifiCredential::Create(
          network->raw_ssid(),
          WifiSecurityClassFromShillSecurity(network->security_class()),
          "" /* empty passphrase */);
      if (!credential)
        LOG(ERROR) << "Failed to create credential";
      else
        credentials.insert(*credential);
    }
    return credentials;
  }
  
  }  // namespace wifi_sync
  