wifi_manager_nonchromeos.h revision 5f1c94371a64b3196d4be9466099bb892df9b88e
1// Copyright 2014 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#ifndef CHROME_BROWSER_LOCAL_DISCOVERY_WIFI_WIFI_MANAGER_NONCHROMEOS_H_ 6#define CHROME_BROWSER_LOCAL_DISCOVERY_WIFI_WIFI_MANAGER_NONCHROMEOS_H_ 7 8#include <string> 9#include <vector> 10 11#include "base/callback.h" 12#include "base/memory/scoped_ptr.h" 13#include "base/memory/weak_ptr.h" 14#include "base/observer_list.h" 15#include "chrome/browser/local_discovery/wifi/wifi_manager.h" 16#include "content/public/browser/browser_thread.h" 17 18namespace local_discovery { 19 20namespace wifi { 21 22class WifiManagerNonChromeos : public WifiManager { 23 public: 24 WifiManagerNonChromeos(); 25 virtual ~WifiManagerNonChromeos(); 26 27 // WifiManager implementation. 28 virtual void Start() OVERRIDE; 29 virtual void GetSSIDList(const SSIDListCallback& callback) OVERRIDE; 30 virtual void RequestScan() OVERRIDE; 31 virtual void ConfigureAndConnectNetwork( 32 const std::string& ssid, 33 const WifiCredentials& credentials, 34 const SuccessCallback& callback) OVERRIDE; 35 virtual void ConnectToNetworkByID(const std::string& internal_id, 36 const SuccessCallback& callback) OVERRIDE; 37 virtual void RequestNetworkCredentials( 38 const std::string& ssid, 39 const CredentialsCallback& callback) OVERRIDE; 40 virtual void AddNetworkListObserver(NetworkListObserver* observer) OVERRIDE; 41 virtual void RemoveNetworkListObserver( 42 NetworkListObserver* observer) OVERRIDE; 43 44 private: 45 class WifiServiceWrapper; 46 47 // Called when the network list changes. Used by WifiServiceWrapper. 48 void OnNetworkListChanged(scoped_ptr<NetworkPropertiesList> ssid_list); 49 50 // Used to post callbacks that take a const& network list without copying the 51 // vector between threads. 52 void PostSSIDListCallback(const SSIDListCallback& callback, 53 scoped_ptr<NetworkPropertiesList> ssid_list); 54 55 // Used to ensure closures posted from the wifi threads aren't called after 56 // the service client is deleted. 57 void PostClosure(const base::Closure& callback); 58 59 std::string original_guid_; 60 scoped_refptr<base::SequencedTaskRunner> task_runner_; 61 WifiServiceWrapper* wifi_wrapper_; // Owned. Deleted on file thread. 62 ObserverList<NetworkListObserver> network_list_observers_; 63 64 base::WeakPtrFactory<WifiManagerNonChromeos> weak_factory_; 65 66 DISALLOW_COPY_AND_ASSIGN(WifiManagerNonChromeos); 67}; 68 69} // namespace wifi 70 71} // namespace local_discovery 72 73#endif // CHROME_BROWSER_LOCAL_DISCOVERY_WIFI_WIFI_MANAGER_NONCHROMEOS_H_ 74