Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/ui/webui/local_discovery/local_discovery_ui_handler.h" | 5 #include "chrome/browser/ui/webui/local_discovery/local_discovery_ui_handler.h" |
| 6 | 6 |
| 7 #include <set> | 7 #include <set> |
| 8 | 8 |
| 9 #include "base/bind.h" | 9 #include "base/bind.h" |
| 10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 91 base::Unretained(this))); | 91 base::Unretained(this))); |
| 92 web_ui()->RegisterMessageCallback("isVisible", base::Bind( | 92 web_ui()->RegisterMessageCallback("isVisible", base::Bind( |
| 93 &LocalDiscoveryUIHandler::HandleIsVisible, | 93 &LocalDiscoveryUIHandler::HandleIsVisible, |
| 94 base::Unretained(this))); | 94 base::Unretained(this))); |
| 95 web_ui()->RegisterMessageCallback("registerDevice", base::Bind( | 95 web_ui()->RegisterMessageCallback("registerDevice", base::Bind( |
| 96 &LocalDiscoveryUIHandler::HandleRegisterDevice, | 96 &LocalDiscoveryUIHandler::HandleRegisterDevice, |
| 97 base::Unretained(this))); | 97 base::Unretained(this))); |
| 98 web_ui()->RegisterMessageCallback("cancelRegistration", base::Bind( | 98 web_ui()->RegisterMessageCallback("cancelRegistration", base::Bind( |
| 99 &LocalDiscoveryUIHandler::HandleCancelRegistration, | 99 &LocalDiscoveryUIHandler::HandleCancelRegistration, |
| 100 base::Unretained(this))); | 100 base::Unretained(this))); |
| 101 web_ui()->RegisterMessageCallback("requestPrinterList", base::Bind( | 101 web_ui()->RegisterMessageCallback( |
| 102 &LocalDiscoveryUIHandler::HandleRequestPrinterList, | 102 "requestDeviceList", |
| 103 base::Unretained(this))); | 103 base::Bind(&LocalDiscoveryUIHandler::HandleRequestDeviceList, |
| 104 base::Unretained(this))); | |
| 104 web_ui()->RegisterMessageCallback("openCloudPrintURL", base::Bind( | 105 web_ui()->RegisterMessageCallback("openCloudPrintURL", base::Bind( |
| 105 &LocalDiscoveryUIHandler::HandleOpenCloudPrintURL, | 106 &LocalDiscoveryUIHandler::HandleOpenCloudPrintURL, |
| 106 base::Unretained(this))); | 107 base::Unretained(this))); |
| 107 web_ui()->RegisterMessageCallback("showSyncUI", base::Bind( | 108 web_ui()->RegisterMessageCallback("showSyncUI", base::Bind( |
| 108 &LocalDiscoveryUIHandler::HandleShowSyncUI, | 109 &LocalDiscoveryUIHandler::HandleShowSyncUI, |
| 109 base::Unretained(this))); | 110 base::Unretained(this))); |
| 110 | 111 |
| 111 // Cloud print connector related messages | 112 // Cloud print connector related messages |
| 112 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) | 113 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) |
| 113 if (cloud_print_connector_ui_enabled_) { | 114 if (cloud_print_connector_ui_enabled_) { |
| (...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 172 base::Bind(&LocalDiscoveryUIHandler::StartRegisterHTTP, | 173 base::Bind(&LocalDiscoveryUIHandler::StartRegisterHTTP, |
| 173 base::Unretained(this))); | 174 base::Unretained(this))); |
| 174 privet_resolution_->Start(); | 175 privet_resolution_->Start(); |
| 175 } | 176 } |
| 176 | 177 |
| 177 void LocalDiscoveryUIHandler::HandleCancelRegistration( | 178 void LocalDiscoveryUIHandler::HandleCancelRegistration( |
| 178 const base::ListValue* args) { | 179 const base::ListValue* args) { |
| 179 ResetCurrentRegistration(); | 180 ResetCurrentRegistration(); |
| 180 } | 181 } |
| 181 | 182 |
| 182 void LocalDiscoveryUIHandler::HandleRequestPrinterList( | 183 void LocalDiscoveryUIHandler::HandleRequestDeviceList( |
| 183 const base::ListValue* args) { | 184 const base::ListValue* args) { |
| 184 Profile* profile = Profile::FromWebUI(web_ui()); | 185 Profile* profile = Profile::FromWebUI(web_ui()); |
| 185 ProfileOAuth2TokenService* token_service = | 186 ProfileOAuth2TokenService* token_service = |
| 186 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); | 187 ProfileOAuth2TokenServiceFactory::GetForProfile(profile); |
| 187 | 188 |
| 188 SigninManagerBase* signin_manager = | 189 SigninManagerBase* signin_manager = |
| 189 SigninManagerFactory::GetInstance()->GetForProfile(profile); | 190 SigninManagerFactory::GetInstance()->GetForProfile(profile); |
| 190 | 191 |
| 192 devices_list_.reset(); | |
| 193 | |
| 191 cloud_print_printer_list_.reset( | 194 cloud_print_printer_list_.reset( |
| 192 new CloudPrintPrinterList(profile->GetRequestContext(), | 195 new CloudPrintPrinterList(profile->GetRequestContext(), |
| 193 token_service, | 196 token_service, |
| 194 signin_manager->GetAuthenticatedAccountId(), | 197 signin_manager->GetAuthenticatedAccountId(), |
| 195 this)); | 198 this)); |
| 199 | |
| 200 cloud_device_list_.reset( | |
|
Noam Samuel
2014/05/16 21:13:26
IMPORTANT: Please hide behind flag for now.
Vitaly Buka (NO REVIEWS)
2014/05/17 17:15:37
Done.
| |
| 201 new CloudDeviceList(profile->GetRequestContext(), | |
| 202 token_service, | |
| 203 signin_manager->GetAuthenticatedAccountId(), | |
| 204 this)); | |
| 205 | |
| 196 cloud_print_printer_list_->Start(); | 206 cloud_print_printer_list_->Start(); |
| 207 cloud_device_list_->Start(); | |
| 197 } | 208 } |
| 198 | 209 |
| 199 void LocalDiscoveryUIHandler::HandleOpenCloudPrintURL( | 210 void LocalDiscoveryUIHandler::HandleOpenCloudPrintURL( |
| 200 const base::ListValue* args) { | 211 const base::ListValue* args) { |
| 201 std::string id; | 212 std::string id; |
| 202 bool rv = args->GetString(0, &id); | 213 bool rv = args->GetString(0, &id); |
| 203 DCHECK(rv); | 214 DCHECK(rv); |
| 204 | 215 |
| 205 Browser* browser = chrome::FindBrowserWithWebContents( | 216 Browser* browser = chrome::FindBrowserWithWebContents( |
| 206 web_ui()->GetWebContents()); | 217 web_ui()->GetWebContents()); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 376 web_ui()->CallJavascriptFunction("local_discovery.onUnregisteredDeviceUpdate", | 387 web_ui()->CallJavascriptFunction("local_discovery.onUnregisteredDeviceUpdate", |
| 377 name_value, *null_value); | 388 name_value, *null_value); |
| 378 } | 389 } |
| 379 | 390 |
| 380 void LocalDiscoveryUIHandler::DeviceCacheFlushed() { | 391 void LocalDiscoveryUIHandler::DeviceCacheFlushed() { |
| 381 web_ui()->CallJavascriptFunction("local_discovery.onDeviceCacheFlushed"); | 392 web_ui()->CallJavascriptFunction("local_discovery.onDeviceCacheFlushed"); |
| 382 privet_lister_->DiscoverNewDevices(false); | 393 privet_lister_->DiscoverNewDevices(false); |
| 383 } | 394 } |
| 384 | 395 |
| 385 void LocalDiscoveryUIHandler::OnCloudPrintPrinterListReady() { | 396 void LocalDiscoveryUIHandler::OnCloudPrintPrinterListReady() { |
| 386 base::ListValue printer_object_list; | 397 if (!devices_list_) |
| 398 devices_list_.reset(new base::ListValue()); | |
| 387 std::set<std::string> local_ids; | 399 std::set<std::string> local_ids; |
| 388 | 400 |
| 389 for (DeviceDescriptionMap::iterator i = device_descriptions_.begin(); | 401 for (DeviceDescriptionMap::iterator i = device_descriptions_.begin(); |
| 390 i != device_descriptions_.end(); | 402 i != device_descriptions_.end(); i++) { |
| 391 i++) { | |
| 392 std::string device_id = i->second.id; | 403 std::string device_id = i->second.id; |
| 393 if (!device_id.empty()) { | 404 if (!device_id.empty()) { |
| 394 const CloudPrintPrinterList::PrinterDetails* details = | 405 const CloudPrintPrinterList::PrinterDetails* details = |
| 395 cloud_print_printer_list_->GetDetailsFor(device_id); | 406 cloud_print_printer_list_->GetDetailsFor(device_id); |
| 396 | 407 |
| 397 if (details) { | 408 if (details) { |
| 398 local_ids.insert(device_id); | 409 local_ids.insert(device_id); |
| 399 printer_object_list.Append(CreatePrinterInfo(*details).release()); | 410 devices_list_->Append(CreatePrinterInfo(*details).release()); |
| 400 } | 411 } |
| 401 } | 412 } |
| 402 } | 413 } |
| 403 | 414 |
| 404 for (CloudPrintPrinterList::iterator i = cloud_print_printer_list_->begin(); | 415 for (CloudPrintPrinterList::iterator i = cloud_print_printer_list_->begin(); |
| 405 i != cloud_print_printer_list_->end(); i++) { | 416 i != cloud_print_printer_list_->end(); i++) { |
| 406 if (local_ids.count(i->id) == 0) { | 417 if (local_ids.count(i->id) == 0) { |
| 407 printer_object_list.Append(CreatePrinterInfo(*i).release()); | 418 devices_list_->Append(CreatePrinterInfo(*i).release()); |
| 408 } | 419 } |
| 409 } | 420 } |
| 410 | 421 |
| 411 web_ui()->CallJavascriptFunction( | 422 cloud_print_printer_list_.reset(); |
| 412 "local_discovery.onCloudDeviceListAvailable", printer_object_list); | 423 CheckListingDone(); |
| 413 } | 424 } |
| 414 | 425 |
| 415 void LocalDiscoveryUIHandler::OnCloudPrintPrinterListUnavailable() { | 426 void LocalDiscoveryUIHandler::OnCloudPrintPrinterListUnavailable() { |
| 416 web_ui()->CallJavascriptFunction( | 427 cloud_print_printer_list_.reset(); |
| 417 "local_discovery.onCloudDeviceListUnavailable"); | 428 CheckListingDone(); |
| 429 } | |
| 430 | |
| 431 void LocalDiscoveryUIHandler::OnCloudDeviceListReady() { | |
| 432 if (!devices_list_) | |
| 433 devices_list_.reset(new base::ListValue()); | |
| 434 std::set<std::string> local_ids; | |
| 435 | |
| 436 for (DeviceDescriptionMap::iterator i = device_descriptions_.begin(); | |
| 437 i != device_descriptions_.end(); i++) { | |
| 438 std::string device_id = i->second.id; | |
| 439 if (!device_id.empty()) { | |
| 440 const CloudDeviceList::DeviceDetails* details = | |
| 441 cloud_device_list_->GetDetailsFor(device_id); | |
| 442 | |
| 443 if (details) { | |
| 444 local_ids.insert(device_id); | |
| 445 devices_list_->Append(CreateDeviceInfo(*details).release()); | |
| 446 } | |
| 447 } | |
| 448 } | |
| 449 | |
| 450 for (CloudDeviceList::iterator i = cloud_device_list_->begin(); | |
| 451 i != cloud_device_list_->end(); i++) { | |
| 452 if (local_ids.count(i->id) == 0) { | |
| 453 devices_list_->Append(CreateDeviceInfo(*i).release()); | |
| 454 } | |
| 455 } | |
| 456 | |
| 457 cloud_device_list_.reset(); | |
| 458 CheckListingDone(); | |
| 459 } | |
| 460 | |
| 461 void LocalDiscoveryUIHandler::OnCloudDeviceListUnavailable() { | |
| 462 cloud_device_list_.reset(); | |
| 463 CheckListingDone(); | |
| 418 } | 464 } |
| 419 | 465 |
| 420 void LocalDiscoveryUIHandler::GoogleSigninSucceeded( | 466 void LocalDiscoveryUIHandler::GoogleSigninSucceeded( |
| 421 const std::string& username, | 467 const std::string& username, |
| 422 const std::string& password) { | 468 const std::string& password) { |
| 423 CheckUserLoggedIn(); | 469 CheckUserLoggedIn(); |
| 424 } | 470 } |
| 425 | 471 |
| 426 void LocalDiscoveryUIHandler::GoogleSignedOut(const std::string& username) { | 472 void LocalDiscoveryUIHandler::GoogleSignedOut(const std::string& username) { |
| 427 CheckUserLoggedIn(); | 473 CheckUserLoggedIn(); |
| (...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 469 current_register_operation_->Cancel(); | 515 current_register_operation_->Cancel(); |
| 470 current_register_operation_.reset(); | 516 current_register_operation_.reset(); |
| 471 } | 517 } |
| 472 | 518 |
| 473 confirm_api_call_flow_.reset(); | 519 confirm_api_call_flow_.reset(); |
| 474 privet_resolution_.reset(); | 520 privet_resolution_.reset(); |
| 475 current_http_client_.reset(); | 521 current_http_client_.reset(); |
| 476 } | 522 } |
| 477 | 523 |
| 478 scoped_ptr<base::DictionaryValue> LocalDiscoveryUIHandler::CreatePrinterInfo( | 524 scoped_ptr<base::DictionaryValue> LocalDiscoveryUIHandler::CreatePrinterInfo( |
| 479 const CloudPrintPrinterList::PrinterDetails& description) { | 525 const CloudPrintPrinterList::PrinterDetails& description) { |
|
Noam Samuel
2014/05/16 21:13:26
Maybe it makes sense to just migrate CloudPrintPri
Vitaly Buka (NO REVIEWS)
2014/05/17 17:15:37
Done.
| |
| 480 scoped_ptr<base::DictionaryValue> return_value(new base::DictionaryValue); | 526 scoped_ptr<base::DictionaryValue> return_value(new base::DictionaryValue); |
| 481 | 527 |
| 482 return_value->SetString("id", description.id); | 528 return_value->SetString("id", description.id); |
| 483 return_value->SetString("display_name", description.display_name); | 529 return_value->SetString("display_name", description.display_name); |
| 484 return_value->SetString("description", description.description); | 530 return_value->SetString("description", description.description); |
| 485 return_value->SetString("type", "printer"); | 531 return_value->SetString("type", kDeviceTypePrinter); |
| 486 | 532 |
| 487 return return_value.Pass(); | 533 return return_value.Pass(); |
| 488 } | 534 } |
| 535 | |
| 536 scoped_ptr<base::DictionaryValue> LocalDiscoveryUIHandler::CreateDeviceInfo( | |
| 537 const CloudDeviceList::DeviceDetails& description) { | |
| 538 scoped_ptr<base::DictionaryValue> return_value(new base::DictionaryValue); | |
| 539 | |
| 540 return_value->SetString("id", description.id); | |
| 541 return_value->SetString("display_name", description.display_name); | |
| 542 return_value->SetString("description", description.description); | |
| 543 return_value->SetString("type", description.type); | |
| 544 | |
| 545 return return_value.Pass(); | |
| 546 } | |
| 489 | 547 |
| 490 void LocalDiscoveryUIHandler::CheckUserLoggedIn() { | 548 void LocalDiscoveryUIHandler::CheckUserLoggedIn() { |
| 491 base::FundamentalValue logged_in_value(!GetSyncAccount().empty()); | 549 base::FundamentalValue logged_in_value(!GetSyncAccount().empty()); |
| 492 web_ui()->CallJavascriptFunction("local_discovery.setUserLoggedIn", | 550 web_ui()->CallJavascriptFunction("local_discovery.setUserLoggedIn", |
| 493 logged_in_value); | 551 logged_in_value); |
| 494 } | 552 } |
| 495 | 553 |
| 554 void LocalDiscoveryUIHandler::CheckListingDone() { | |
| 555 if (cloud_print_printer_list_ || cloud_device_list_) | |
| 556 return; | |
| 557 if (devices_list_) { | |
| 558 web_ui()->CallJavascriptFunction( | |
| 559 "local_discovery.onCloudDeviceListAvailable", *devices_list_); | |
| 560 devices_list_.reset(); | |
| 561 } else { | |
| 562 web_ui()->CallJavascriptFunction( | |
| 563 "local_discovery.onCloudDeviceListUnavailable"); | |
| 564 } | |
| 565 } | |
| 566 | |
| 496 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) | 567 #if defined(CLOUD_PRINT_CONNECTOR_UI_AVAILABLE) |
| 497 void LocalDiscoveryUIHandler::StartCloudPrintConnector() { | 568 void LocalDiscoveryUIHandler::StartCloudPrintConnector() { |
| 498 Profile* profile = Profile::FromWebUI(web_ui()); | 569 Profile* profile = Profile::FromWebUI(web_ui()); |
| 499 | 570 |
| 500 base::Closure cloud_print_callback = base::Bind( | 571 base::Closure cloud_print_callback = base::Bind( |
| 501 &LocalDiscoveryUIHandler::OnCloudPrintPrefsChanged, | 572 &LocalDiscoveryUIHandler::OnCloudPrintPrefsChanged, |
| 502 base::Unretained(this)); | 573 base::Unretained(this)); |
| 503 | 574 |
| 504 if (cloud_print_connector_email_.GetPrefName().empty()) { | 575 if (cloud_print_connector_email_.GetPrefName().empty()) { |
| 505 cloud_print_connector_email_.Init( | 576 cloud_print_connector_email_.Init( |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 594 } | 665 } |
| 595 | 666 |
| 596 void LocalDiscoveryUIHandler::RefreshCloudPrintStatusFromService() { | 667 void LocalDiscoveryUIHandler::RefreshCloudPrintStatusFromService() { |
| 597 if (cloud_print_connector_ui_enabled_) | 668 if (cloud_print_connector_ui_enabled_) |
| 598 CloudPrintProxyServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()))-> | 669 CloudPrintProxyServiceFactory::GetForProfile(Profile::FromWebUI(web_ui()))-> |
| 599 RefreshStatusFromService(); | 670 RefreshStatusFromService(); |
| 600 } | 671 } |
| 601 #endif // cloud print connector option stuff | 672 #endif // cloud print connector option stuff |
| 602 | 673 |
| 603 } // namespace local_discovery | 674 } // namespace local_discovery |
| OLD | NEW |