OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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/print_preview/print_preview_handler.h" | 5 #include "chrome/browser/ui/webui/print_preview/print_preview_handler.h" |
6 | 6 |
7 #include <ctype.h> | 7 #include <ctype.h> |
8 | 8 |
9 #include <map> | 9 #include <map> |
10 #include <string> | 10 #include <string> |
(...skipping 620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
631 BrowserThread::PostTaskAndReply( | 631 BrowserThread::PostTaskAndReply( |
632 BrowserThread::FILE, FROM_HERE, | 632 BrowserThread::FILE, FROM_HERE, |
633 base::Bind(&EnumeratePrintersOnFileThread, | 633 base::Bind(&EnumeratePrintersOnFileThread, |
634 base::Unretained(results)), | 634 base::Unretained(results)), |
635 base::Bind(&PrintPreviewHandler::SetupPrinterList, | 635 base::Bind(&PrintPreviewHandler::SetupPrinterList, |
636 weak_factory_.GetWeakPtr(), | 636 weak_factory_.GetWeakPtr(), |
637 base::Owned(results))); | 637 base::Owned(results))); |
638 } | 638 } |
639 | 639 |
640 void PrintPreviewHandler::HandleGetPrivetPrinters(const base::ListValue* args) { | 640 void PrintPreviewHandler::HandleGetPrivetPrinters(const base::ListValue* args) { |
| 641 if (!PrivetPrintingEnabled()) |
| 642 return web_ui()->CallJavascriptFunction("onPrivetPrinterSearchDone"); |
641 #if defined(ENABLE_SERVICE_DISCOVERY) | 643 #if defined(ENABLE_SERVICE_DISCOVERY) |
642 if (PrivetPrintingEnabled()) { | 644 local_discovery::ServiceDiscoverySharedClient::GetInstanceWithoutAlert( |
643 Profile* profile = Profile::FromWebUI(web_ui()); | 645 base::Bind(&PrintPreviewHandler::StartPrivetLister, |
644 service_discovery_client_ = | 646 weak_factory_.GetWeakPtr())); |
645 local_discovery::ServiceDiscoverySharedClient::GetInstance(); | 647 #endif // ENABLE_SERVICE_DISCOVERY |
646 printer_lister_.reset(new local_discovery::PrivetLocalPrinterLister( | |
647 service_discovery_client_.get(), | |
648 profile->GetRequestContext(), | |
649 this)); | |
650 printer_lister_->Start(); | |
651 } | |
652 #endif | |
653 | |
654 if (!PrivetPrintingEnabled()) { | |
655 web_ui()->CallJavascriptFunction("onPrivetPrinterSearchDone"); | |
656 } | |
657 } | 648 } |
658 | 649 |
659 void PrintPreviewHandler::HandleStopGetPrivetPrinters( | 650 void PrintPreviewHandler::HandleStopGetPrivetPrinters( |
660 const base::ListValue* args) { | 651 const base::ListValue* args) { |
661 #if defined(ENABLE_SERVICE_DISCOVERY) | 652 #if defined(ENABLE_SERVICE_DISCOVERY) |
662 if (PrivetPrintingEnabled()) { | 653 if (PrivetPrintingEnabled() && printer_lister_) { |
663 printer_lister_->Stop(); | 654 printer_lister_->Stop(); |
664 } | 655 } |
665 #endif | 656 #endif |
666 } | 657 } |
667 | 658 |
668 void PrintPreviewHandler::HandleGetPrivetPrinterCapabilities( | 659 void PrintPreviewHandler::HandleGetPrivetPrinterCapabilities( |
669 const base::ListValue* args) { | 660 const base::ListValue* args) { |
670 #if defined(ENABLE_SERVICE_DISCOVERY) | 661 #if defined(ENABLE_SERVICE_DISCOVERY) |
671 std::string name; | 662 std::string name; |
672 bool success = args->GetString(0, &name); | 663 bool success = args->GetString(0, &name); |
(...skipping 684 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1357 return false; | 1348 return false; |
1358 } | 1349 } |
1359 DCHECK(tmp_data->size() && tmp_data->front()); | 1350 DCHECK(tmp_data->size() && tmp_data->front()); |
1360 | 1351 |
1361 *data = tmp_data; | 1352 *data = tmp_data; |
1362 *title = print_preview_ui->initiator_title(); | 1353 *title = print_preview_ui->initiator_title(); |
1363 return true; | 1354 return true; |
1364 } | 1355 } |
1365 | 1356 |
1366 #if defined(ENABLE_SERVICE_DISCOVERY) | 1357 #if defined(ENABLE_SERVICE_DISCOVERY) |
| 1358 |
| 1359 void PrintPreviewHandler::StartPrivetLister( |
| 1360 scoped_refptr<local_discovery::ServiceDiscoverySharedClient> client) { |
| 1361 if (!PrivetPrintingEnabled()) |
| 1362 return web_ui()->CallJavascriptFunction("onPrivetPrinterSearchDone"); |
| 1363 |
| 1364 Profile* profile = Profile::FromWebUI(web_ui()); |
| 1365 DCHECK(!service_discovery_client_ || service_discovery_client_ == client); |
| 1366 service_discovery_client_ = client; |
| 1367 printer_lister_.reset(new local_discovery::PrivetLocalPrinterLister( |
| 1368 service_discovery_client_.get(), profile->GetRequestContext(), this)); |
| 1369 printer_lister_->Start(); |
| 1370 } |
| 1371 |
1367 void PrintPreviewHandler::LocalPrinterChanged( | 1372 void PrintPreviewHandler::LocalPrinterChanged( |
1368 bool added, | 1373 bool added, |
1369 const std::string& name, | 1374 const std::string& name, |
1370 bool has_local_printing, | 1375 bool has_local_printing, |
1371 const local_discovery::DeviceDescription& description) { | 1376 const local_discovery::DeviceDescription& description) { |
1372 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); | 1377 base::CommandLine* command_line = base::CommandLine::ForCurrentProcess(); |
1373 if (has_local_printing || | 1378 if (has_local_printing || |
1374 command_line->HasSwitch(switches::kEnablePrintPreviewRegisterPromos)) { | 1379 command_line->HasSwitch(switches::kEnablePrintPreviewRegisterPromos)) { |
1375 base::DictionaryValue info; | 1380 base::DictionaryValue info; |
1376 FillPrinterDescription(name, description, has_local_printing, &info); | 1381 FillPrinterDescription(name, description, has_local_printing, &info); |
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1457 } | 1462 } |
1458 | 1463 |
1459 privet_local_print_operation_->Start(); | 1464 privet_local_print_operation_->Start(); |
1460 } | 1465 } |
1461 | 1466 |
1462 | 1467 |
1463 void PrintPreviewHandler::OnPrivetCapabilities( | 1468 void PrintPreviewHandler::OnPrivetCapabilities( |
1464 const base::DictionaryValue* capabilities) { | 1469 const base::DictionaryValue* capabilities) { |
1465 std::string name = privet_capabilities_operation_->GetHTTPClient()->GetName(); | 1470 std::string name = privet_capabilities_operation_->GetHTTPClient()->GetName(); |
1466 | 1471 |
1467 if (!capabilities || capabilities->HasKey(local_discovery::kPrivetKeyError)) { | 1472 if (!capabilities || capabilities->HasKey(local_discovery::kPrivetKeyError) || |
| 1473 !printer_lister_) { |
1468 SendPrivetCapabilitiesError(name); | 1474 SendPrivetCapabilitiesError(name); |
1469 return; | 1475 return; |
1470 } | 1476 } |
1471 | 1477 |
1472 base::DictionaryValue printer_info; | 1478 base::DictionaryValue printer_info; |
1473 const local_discovery::DeviceDescription* description = | 1479 const local_discovery::DeviceDescription* description = |
1474 printer_lister_->GetDeviceDescription(name); | 1480 printer_lister_->GetDeviceDescription(name); |
1475 | 1481 |
1476 if (!description) { | 1482 if (!description) { |
1477 SendPrivetCapabilitiesError(name); | 1483 SendPrivetCapabilitiesError(name); |
(...skipping 29 matching lines...) Expand all Loading... |
1507 ticket, | 1513 ticket, |
1508 capabilities, | 1514 capabilities, |
1509 page_size)); | 1515 page_size)); |
1510 } | 1516 } |
1511 | 1517 |
1512 bool PrintPreviewHandler::CreatePrivetHTTP( | 1518 bool PrintPreviewHandler::CreatePrivetHTTP( |
1513 const std::string& name, | 1519 const std::string& name, |
1514 const local_discovery::PrivetHTTPAsynchronousFactory::ResultCallback& | 1520 const local_discovery::PrivetHTTPAsynchronousFactory::ResultCallback& |
1515 callback) { | 1521 callback) { |
1516 const local_discovery::DeviceDescription* device_description = | 1522 const local_discovery::DeviceDescription* device_description = |
1517 printer_lister_->GetDeviceDescription(name); | 1523 printer_lister_ ? printer_lister_->GetDeviceDescription(name) : NULL; |
1518 | 1524 |
1519 if (!device_description) { | 1525 if (!device_description) { |
1520 SendPrivetCapabilitiesError(name); | 1526 SendPrivetCapabilitiesError(name); |
1521 return false; | 1527 return false; |
1522 } | 1528 } |
1523 | 1529 |
1524 privet_http_factory_ = | 1530 privet_http_factory_ = |
1525 local_discovery::PrivetHTTPAsynchronousFactory::CreateInstance( | 1531 local_discovery::PrivetHTTPAsynchronousFactory::CreateInstance( |
1526 service_discovery_client_, | 1532 service_discovery_client_, |
1527 Profile::FromWebUI(web_ui())->GetRequestContext()); | 1533 Profile::FromWebUI(web_ui())->GetRequestContext()); |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1575 | 1581 |
1576 void PrintPreviewHandler::UnregisterForMergeSession() { | 1582 void PrintPreviewHandler::UnregisterForMergeSession() { |
1577 if (reconcilor_) | 1583 if (reconcilor_) |
1578 reconcilor_->RemoveMergeSessionObserver(this); | 1584 reconcilor_->RemoveMergeSessionObserver(this); |
1579 } | 1585 } |
1580 | 1586 |
1581 void PrintPreviewHandler::SetPdfSavedClosureForTesting( | 1587 void PrintPreviewHandler::SetPdfSavedClosureForTesting( |
1582 const base::Closure& closure) { | 1588 const base::Closure& closure) { |
1583 pdf_file_saved_closure_ = closure; | 1589 pdf_file_saved_closure_ = closure; |
1584 } | 1590 } |
OLD | NEW |