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

Side by Side Diff: chrome/browser/local_discovery/wifi/wifi_manager_nonchromeos.cc

Issue 343053002: Credential passing for WifiManager in Windows (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/local_discovery/wifi/wifi_manager_nonchromeos.h" 5 #include "chrome/browser/local_discovery/wifi/wifi_manager_nonchromeos.h"
6 6
7 #include "base/cancelable_callback.h" 7 #include "base/cancelable_callback.h"
8 #include "base/threading/sequenced_worker_pool.h" 8 #include "base/threading/sequenced_worker_pool.h"
9 #include "base/threading/thread.h" 9 #include "base/threading/thread.h"
10 #include "components/onc/onc_constants.h" 10 #include "components/onc/onc_constants.h"
11 #include "components/wifi/wifi_service.h" 11 #include "components/wifi/wifi_service.h"
12 #include "content/public/browser/browser_thread.h" 12 #include "content/public/browser/browser_thread.h"
13 #include "net/base/network_change_notifier.h" 13 #include "net/base/network_change_notifier.h"
14 14
15 #if defined(OS_WIN)
16 #include "chrome/browser/local_discovery/wifi/credential_getter_win.h"
17 #endif // OS_WIN
18
15 using ::wifi::WiFiService; 19 using ::wifi::WiFiService;
16 20
17 namespace local_discovery { 21 namespace local_discovery {
18 22
19 namespace wifi { 23 namespace wifi {
20 24
21 namespace { 25 namespace {
22 26
23 const int kConnectionTimeoutSeconds = 10; 27 const int kConnectionTimeoutSeconds = 10;
24 28
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
89 bool IsConnected(const std::string& network_guid); 93 bool IsConnected(const std::string& network_guid);
90 94
91 void OnConnectToNetworkTimeout(); 95 void OnConnectToNetworkTimeout();
92 96
93 void PostClosure(const base::Closure& closure); 97 void PostClosure(const base::Closure& closure);
94 98
95 bool FindAndConfigureNetwork(const std::string& ssid, 99 bool FindAndConfigureNetwork(const std::string& ssid,
96 const std::string& password, 100 const std::string& password,
97 std::string* network_guid); 101 std::string* network_guid);
98 102
103 #if defined(OS_WIN)
104 void PostCredentialsCallback(const WifiManager::CredentialsCallback& callback,
105 const std::string& ssid,
106 bool success,
107 const std::string& password);
108 #endif // OS_WIN
109
99 scoped_ptr<WiFiService> wifi_service_; 110 scoped_ptr<WiFiService> wifi_service_;
100 111
101 base::WeakPtr<WifiManagerNonChromeos> wifi_manager_; 112 base::WeakPtr<WifiManagerNonChromeos> wifi_manager_;
102 113
103 WifiManager::SuccessCallback connect_success_callback_; 114 WifiManager::SuccessCallback connect_success_callback_;
104 base::CancelableClosure connect_failure_callback_; 115 base::CancelableClosure connect_failure_callback_;
105 116
106 // SSID of previously connected network. 117 // SSID of previously connected network.
107 std::string connected_network_guid_; 118 std::string connected_network_guid_;
108 119
109 // SSID of network we are connecting to. 120 // SSID of network we are connecting to.
110 std::string connecting_network_guid_; 121 std::string connecting_network_guid_;
111 122
112 scoped_refptr<base::MessageLoopProxy> callback_runner_; 123 scoped_refptr<base::MessageLoopProxy> callback_runner_;
113 124
114 base::WeakPtrFactory<WifiServiceWrapper> weak_factory_; 125 base::WeakPtrFactory<WifiServiceWrapper> weak_factory_;
115 126
127 #if defined(OS_WIN)
128 scoped_refptr<CredentialGetterWin> credential_getter_;
129 #endif // OS_WIN
130
116 DISALLOW_COPY_AND_ASSIGN(WifiServiceWrapper); 131 DISALLOW_COPY_AND_ASSIGN(WifiServiceWrapper);
117 }; 132 };
118 133
119 WifiManagerNonChromeos::WifiServiceWrapper::WifiServiceWrapper( 134 WifiManagerNonChromeos::WifiServiceWrapper::WifiServiceWrapper(
120 base::WeakPtr<WifiManagerNonChromeos> wifi_manager) 135 base::WeakPtr<WifiManagerNonChromeos> wifi_manager)
121 : wifi_manager_(wifi_manager), 136 : wifi_manager_(wifi_manager),
122 callback_runner_(base::MessageLoopProxy::current()), 137 callback_runner_(base::MessageLoopProxy::current()),
123 weak_factory_(this) { 138 weak_factory_(this) {
124 } 139 }
125 140
(...skipping 153 matching lines...) Expand 10 before | Expand all | Expand 10 after
279 294
280 void WifiManagerNonChromeos::WifiServiceWrapper::RequestNetworkCredentials( 295 void WifiManagerNonChromeos::WifiServiceWrapper::RequestNetworkCredentials(
281 const std::string& ssid, 296 const std::string& ssid,
282 const WifiManager::CredentialsCallback& callback) { 297 const WifiManager::CredentialsCallback& callback) {
283 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE)); 298 DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE));
284 299
285 bool success = true; 300 bool success = true;
286 std::string guid; 301 std::string guid;
287 std::string key; 302 std::string key;
288 303
289 #if defined(OS_WIN)
290 NOTIMPLEMENTED();
291 success = false;
292 #else
293 NetworkPropertiesList network_list; 304 NetworkPropertiesList network_list;
294 305
295 GetSSIDListInternal(&network_list); 306 GetSSIDListInternal(&network_list);
296 307
297 for (NetworkPropertiesList::iterator i = network_list.begin(); 308 for (NetworkPropertiesList::iterator i = network_list.begin();
298 i != network_list.end(); 309 i != network_list.end();
299 i++) { 310 i++) {
300 if (i->ssid == ssid) { 311 if (i->ssid == ssid) {
301 guid = i->guid; 312 guid = i->guid;
302 break; 313 break;
303 } 314 }
304 } 315 }
305 316
306 if (guid.empty()) { 317 if (guid.empty()) {
307 success = false; 318 success = false;
308 } 319 }
309 320
321 if (!success) {
322 PostClosure(base::Bind(callback, success, "", ""));
323 return;
324 }
325
326 #if defined(OS_WIN)
327 credential_getter_ = new CredentialGetterWin();
328 credential_getter_->StartGetCredentials(
329 guid,
330 base::Bind(&WifiServiceWrapper::PostCredentialsCallback,
331 AsWeakPtr(),
332 callback,
333 ssid));
334 #else
310 if (success) { 335 if (success) {
311 std::string error_string; 336 std::string error_string;
312 wifi_service_->GetKeyFromSystem(guid, &key, &error_string); 337 wifi_service_->GetKeyFromSystem(guid, &key, &error_string);
313 338
314 if (!error_string.empty()) { 339 if (!error_string.empty()) {
315 LOG(ERROR) << "Could not get key from system: " << error_string; 340 LOG(ERROR) << "Could not get key from system: " << error_string;
316 success = false; 341 success = false;
317 } 342 }
343
344 PostClosure(base::Bind(callback, success, ssid, key));
318 } 345 }
319 #endif // OS_WIN 346 #endif // OS_WIN
320 PostClosure(base::Bind(callback, success, ssid, key));
321 } 347 }
322 348
323 void WifiManagerNonChromeos::WifiServiceWrapper::OnNetworkChanged( 349 void WifiManagerNonChromeos::WifiServiceWrapper::OnNetworkChanged(
324 net::NetworkChangeNotifier::ConnectionType type) { 350 net::NetworkChangeNotifier::ConnectionType type) {
325 wifi_service_->RequestConnectedNetworkUpdate(); 351 wifi_service_->RequestConnectedNetworkUpdate();
326 } 352 }
327 353
328 void WifiManagerNonChromeos::WifiServiceWrapper::GetSSIDListInternal( 354 void WifiManagerNonChromeos::WifiServiceWrapper::GetSSIDListInternal(
329 NetworkPropertiesList* ssid_list) { 355 NetworkPropertiesList* ssid_list) {
330 base::ListValue visible_networks; 356 base::ListValue visible_networks;
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
411 return true; 437 return true;
412 } 438 }
413 439
414 void WifiManagerNonChromeos::WifiServiceWrapper::PostClosure( 440 void WifiManagerNonChromeos::WifiServiceWrapper::PostClosure(
415 const base::Closure& closure) { 441 const base::Closure& closure) {
416 callback_runner_->PostTask( 442 callback_runner_->PostTask(
417 FROM_HERE, 443 FROM_HERE,
418 base::Bind(&WifiManagerNonChromeos::PostClosure, wifi_manager_, closure)); 444 base::Bind(&WifiManagerNonChromeos::PostClosure, wifi_manager_, closure));
419 } 445 }
420 446
447 #if defined(OS_WIN)
448 void WifiManagerNonChromeos::WifiServiceWrapper::PostCredentialsCallback(
449 const WifiManager::CredentialsCallback& callback,
450 const std::string& ssid,
451 bool success,
452 const std::string& password) {
453 PostClosure(base::Bind(callback, success, ssid, password));
454 }
455
456 #endif // OS_WIN
457
421 scoped_ptr<WifiManager> WifiManager::CreateDefault() { 458 scoped_ptr<WifiManager> WifiManager::CreateDefault() {
422 return scoped_ptr<WifiManager>(new WifiManagerNonChromeos()); 459 return scoped_ptr<WifiManager>(new WifiManagerNonChromeos());
423 } 460 }
424 461
425 WifiManagerNonChromeos::WifiManagerNonChromeos() 462 WifiManagerNonChromeos::WifiManagerNonChromeos()
426 : wifi_wrapper_(NULL), weak_factory_(this) { 463 : wifi_wrapper_(NULL), weak_factory_(this) {
427 } 464 }
428 465
429 WifiManagerNonChromeos::~WifiManagerNonChromeos() { 466 WifiManagerNonChromeos::~WifiManagerNonChromeos() {
430 if (wifi_wrapper_) { 467 if (wifi_wrapper_) {
(...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after
525 } 562 }
526 563
527 void WifiManagerNonChromeos::RemoveNetworkListObserver( 564 void WifiManagerNonChromeos::RemoveNetworkListObserver(
528 NetworkListObserver* observer) { 565 NetworkListObserver* observer) {
529 network_list_observers_.RemoveObserver(observer); 566 network_list_observers_.RemoveObserver(observer);
530 } 567 }
531 568
532 } // namespace wifi 569 } // namespace wifi
533 570
534 } // namespace local_discovery 571 } // namespace local_discovery
OLDNEW
« no previous file with comments | « chrome/browser/local_discovery/wifi/credential_getter_win.cc ('k') | chrome/chrome_browser.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698