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

Side by Side Diff: extensions/browser/api/printer_provider/printer_provider_api.cc

Issue 1226353004: Generate all extension schema namespaces as "api" and instead vary the generated bundle names. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase Created 5 years, 5 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 2015 The Chromium Authors. All rights reserved. 1 // Copyright 2015 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 "extensions/browser/api/printer_provider/printer_provider_api.h" 5 #include "extensions/browser/api/printer_provider/printer_provider_api.h"
6 6
7 #include <map> 7 #include <map>
8 #include <set> 8 #include <set>
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
(...skipping 248 matching lines...) Expand 10 before | Expand all | Expand 10 after
259 259
260 // PrinterProviderInternalAPIObserver implementation: 260 // PrinterProviderInternalAPIObserver implementation:
261 void OnGetPrintersResult( 261 void OnGetPrintersResult(
262 const Extension* extension, 262 const Extension* extension,
263 int request_id, 263 int request_id,
264 const PrinterProviderInternalAPIObserver::PrinterInfoVector& result) 264 const PrinterProviderInternalAPIObserver::PrinterInfoVector& result)
265 override; 265 override;
266 void OnGetCapabilityResult(const Extension* extension, 266 void OnGetCapabilityResult(const Extension* extension,
267 int request_id, 267 int request_id,
268 const base::DictionaryValue& result) override; 268 const base::DictionaryValue& result) override;
269 void OnPrintResult( 269 void OnPrintResult(const Extension* extension,
270 const Extension* extension, 270 int request_id,
271 int request_id, 271 api::printer_provider_internal::PrintError error) override;
272 core_api::printer_provider_internal::PrintError error) override;
273 void OnGetUsbPrinterInfoResult( 272 void OnGetUsbPrinterInfoResult(
274 const Extension* extension, 273 const Extension* extension,
275 int request_id, 274 int request_id,
276 const core_api::printer_provider::PrinterInfo* printer_info) override; 275 const api::printer_provider::PrinterInfo* printer_info) override;
277 276
278 // ExtensionRegistryObserver implementation: 277 // ExtensionRegistryObserver implementation:
279 void OnExtensionUnloaded(content::BrowserContext* browser_context, 278 void OnExtensionUnloaded(content::BrowserContext* browser_context,
280 const Extension* extension, 279 const Extension* extension,
281 UnloadedExtensionInfo::Reason reason) override; 280 UnloadedExtensionInfo::Reason reason) override;
282 281
283 // Called before chrome.printerProvider.onGetPrintersRequested event is 282 // Called before chrome.printerProvider.onGetPrintersRequested event is
284 // dispatched to an extension. It returns whether the extension is interested 283 // dispatched to an extension. It returns whether the extension is interested
285 // in the event. If the extension listens to the event, it's added to the set 284 // in the event. If the extension listens to the event, it's added to the set
286 // of |request| sources. |request| is |GetPrintersRequest| object associated 285 // of |request| sources. |request| is |GetPrintersRequest| object associated
(...skipping 217 matching lines...) Expand 10 before | Expand all | Expand 10 after
504 extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context)); 503 extension_registry_observer_.Add(ExtensionRegistry::Get(browser_context));
505 } 504 }
506 505
507 PrinterProviderAPIImpl::~PrinterProviderAPIImpl() { 506 PrinterProviderAPIImpl::~PrinterProviderAPIImpl() {
508 } 507 }
509 508
510 void PrinterProviderAPIImpl::DispatchGetPrintersRequested( 509 void PrinterProviderAPIImpl::DispatchGetPrintersRequested(
511 const GetPrintersCallback& callback) { 510 const GetPrintersCallback& callback) {
512 EventRouter* event_router = EventRouter::Get(browser_context_); 511 EventRouter* event_router = EventRouter::Get(browser_context_);
513 if (!event_router->HasEventListener( 512 if (!event_router->HasEventListener(
514 core_api::printer_provider::OnGetPrintersRequested::kEventName)) { 513 api::printer_provider::OnGetPrintersRequested::kEventName)) {
515 callback.Run(base::ListValue(), true /* done */); 514 callback.Run(base::ListValue(), true /* done */);
516 return; 515 return;
517 } 516 }
518 517
519 // |pending_get_printers_requests_| take ownership of |request| which gets 518 // |pending_get_printers_requests_| take ownership of |request| which gets
520 // NULLed out. Save the pointer before passing it to the requests, as it will 519 // NULLed out. Save the pointer before passing it to the requests, as it will
521 // be needed later on. 520 // be needed later on.
522 int request_id = pending_get_printers_requests_.Add(callback); 521 int request_id = pending_get_printers_requests_.Add(callback);
523 522
524 scoped_ptr<base::ListValue> internal_args(new base::ListValue); 523 scoped_ptr<base::ListValue> internal_args(new base::ListValue);
525 // Request id is not part of the public API, but it will be massaged out in 524 // Request id is not part of the public API, but it will be massaged out in
526 // custom bindings. 525 // custom bindings.
527 internal_args->AppendInteger(request_id); 526 internal_args->AppendInteger(request_id);
528 527
529 scoped_ptr<Event> event( 528 scoped_ptr<Event> event(
530 new Event(events::PRINTER_PROVIDER_ON_GET_PRINTERS_REQUESTED, 529 new Event(events::PRINTER_PROVIDER_ON_GET_PRINTERS_REQUESTED,
531 core_api::printer_provider::OnGetPrintersRequested::kEventName, 530 api::printer_provider::OnGetPrintersRequested::kEventName,
532 internal_args.Pass())); 531 internal_args.Pass()));
533 // This callback is called synchronously during |BroadcastEvent|, so 532 // This callback is called synchronously during |BroadcastEvent|, so
534 // Unretained is safe. 533 // Unretained is safe.
535 event->will_dispatch_callback = 534 event->will_dispatch_callback =
536 base::Bind(&PrinterProviderAPIImpl::WillRequestPrinters, 535 base::Bind(&PrinterProviderAPIImpl::WillRequestPrinters,
537 base::Unretained(this), request_id); 536 base::Unretained(this), request_id);
538 537
539 event_router->BroadcastEvent(event.Pass()); 538 event_router->BroadcastEvent(event.Pass());
540 } 539 }
541 540
542 void PrinterProviderAPIImpl::DispatchGetCapabilityRequested( 541 void PrinterProviderAPIImpl::DispatchGetCapabilityRequested(
543 const std::string& printer_id, 542 const std::string& printer_id,
544 const PrinterProviderAPI::GetCapabilityCallback& callback) { 543 const PrinterProviderAPI::GetCapabilityCallback& callback) {
545 std::string extension_id; 544 std::string extension_id;
546 std::string internal_printer_id; 545 std::string internal_printer_id;
547 if (!ParsePrinterId(printer_id, &extension_id, &internal_printer_id)) { 546 if (!ParsePrinterId(printer_id, &extension_id, &internal_printer_id)) {
548 callback.Run(base::DictionaryValue()); 547 callback.Run(base::DictionaryValue());
549 return; 548 return;
550 } 549 }
551 550
552 EventRouter* event_router = EventRouter::Get(browser_context_); 551 EventRouter* event_router = EventRouter::Get(browser_context_);
553 if (!event_router->ExtensionHasEventListener( 552 if (!event_router->ExtensionHasEventListener(
554 extension_id, 553 extension_id,
555 core_api::printer_provider::OnGetCapabilityRequested::kEventName)) { 554 api::printer_provider::OnGetCapabilityRequested::kEventName)) {
556 callback.Run(base::DictionaryValue()); 555 callback.Run(base::DictionaryValue());
557 return; 556 return;
558 } 557 }
559 558
560 int request_id = pending_capability_requests_[extension_id].Add(callback); 559 int request_id = pending_capability_requests_[extension_id].Add(callback);
561 560
562 scoped_ptr<base::ListValue> internal_args(new base::ListValue); 561 scoped_ptr<base::ListValue> internal_args(new base::ListValue);
563 // Request id is not part of the public API, but it will be massaged out in 562 // Request id is not part of the public API, but it will be massaged out in
564 // custom bindings. 563 // custom bindings.
565 internal_args->AppendInteger(request_id); 564 internal_args->AppendInteger(request_id);
566 internal_args->AppendString(internal_printer_id); 565 internal_args->AppendString(internal_printer_id);
567 566
568 scoped_ptr<Event> event(new Event( 567 scoped_ptr<Event> event(
569 events::PRINTER_PROVIDER_ON_GET_CAPABILITY_REQUESTED, 568 new Event(events::PRINTER_PROVIDER_ON_GET_CAPABILITY_REQUESTED,
570 core_api::printer_provider::OnGetCapabilityRequested::kEventName, 569 api::printer_provider::OnGetCapabilityRequested::kEventName,
571 internal_args.Pass())); 570 internal_args.Pass()));
572 571
573 event_router->DispatchEventToExtension(extension_id, event.Pass()); 572 event_router->DispatchEventToExtension(extension_id, event.Pass());
574 } 573 }
575 574
576 void PrinterProviderAPIImpl::DispatchPrintRequested( 575 void PrinterProviderAPIImpl::DispatchPrintRequested(
577 const PrinterProviderPrintJob& job, 576 const PrinterProviderPrintJob& job,
578 const PrinterProviderAPI::PrintCallback& callback) { 577 const PrinterProviderAPI::PrintCallback& callback) {
579 std::string extension_id; 578 std::string extension_id;
580 std::string internal_printer_id; 579 std::string internal_printer_id;
581 if (!ParsePrinterId(job.printer_id, &extension_id, &internal_printer_id)) { 580 if (!ParsePrinterId(job.printer_id, &extension_id, &internal_printer_id)) {
582 callback.Run(false, PrinterProviderAPI::GetDefaultPrintError()); 581 callback.Run(false, PrinterProviderAPI::GetDefaultPrintError());
583 return; 582 return;
584 } 583 }
585 584
586 EventRouter* event_router = EventRouter::Get(browser_context_); 585 EventRouter* event_router = EventRouter::Get(browser_context_);
587 if (!event_router->ExtensionHasEventListener( 586 if (!event_router->ExtensionHasEventListener(
588 extension_id, 587 extension_id, api::printer_provider::OnPrintRequested::kEventName)) {
589 core_api::printer_provider::OnPrintRequested::kEventName)) {
590 callback.Run(false, PrinterProviderAPI::GetDefaultPrintError()); 588 callback.Run(false, PrinterProviderAPI::GetDefaultPrintError());
591 return; 589 return;
592 } 590 }
593 591
594 core_api::printer_provider::PrintJob print_job; 592 api::printer_provider::PrintJob print_job;
595 print_job.printer_id = internal_printer_id; 593 print_job.printer_id = internal_printer_id;
596 594
597 JSONStringValueDeserializer deserializer(job.ticket_json); 595 JSONStringValueDeserializer deserializer(job.ticket_json);
598 scoped_ptr<base::Value> ticket_value(deserializer.Deserialize(NULL, NULL)); 596 scoped_ptr<base::Value> ticket_value(deserializer.Deserialize(NULL, NULL));
599 if (!ticket_value || 597 if (!ticket_value ||
600 !core_api::printer_provider::PrintJob::Ticket::Populate( 598 !api::printer_provider::PrintJob::Ticket::Populate(*ticket_value,
601 *ticket_value, &print_job.ticket)) { 599 &print_job.ticket)) {
602 callback.Run(false, 600 callback.Run(false, api::printer_provider::ToString(
603 core_api::printer_provider::ToString( 601 api::printer_provider::PRINT_ERROR_INVALID_TICKET));
604 core_api::printer_provider::PRINT_ERROR_INVALID_TICKET));
605 return; 602 return;
606 } 603 }
607 604
608 print_job.content_type = job.content_type; 605 print_job.content_type = job.content_type;
609 print_job.title = base::UTF16ToUTF8(job.job_title); 606 print_job.title = base::UTF16ToUTF8(job.job_title);
610 int request_id = pending_print_requests_[extension_id].Add(job, callback); 607 int request_id = pending_print_requests_[extension_id].Add(job, callback);
611 608
612 scoped_ptr<base::ListValue> internal_args(new base::ListValue); 609 scoped_ptr<base::ListValue> internal_args(new base::ListValue);
613 // Request id is not part of the public API and it will be massaged out in 610 // Request id is not part of the public API and it will be massaged out in
614 // custom bindings. 611 // custom bindings.
615 internal_args->AppendInteger(request_id); 612 internal_args->AppendInteger(request_id);
616 internal_args->Append(print_job.ToValue().release()); 613 internal_args->Append(print_job.ToValue().release());
617 scoped_ptr<Event> event( 614 scoped_ptr<Event> event(
618 new Event(events::PRINTER_PROVIDER_ON_PRINT_REQUESTED, 615 new Event(events::PRINTER_PROVIDER_ON_PRINT_REQUESTED,
619 core_api::printer_provider::OnPrintRequested::kEventName, 616 api::printer_provider::OnPrintRequested::kEventName,
620 internal_args.Pass())); 617 internal_args.Pass()));
621 event_router->DispatchEventToExtension(extension_id, event.Pass()); 618 event_router->DispatchEventToExtension(extension_id, event.Pass());
622 } 619 }
623 620
624 const PrinterProviderPrintJob* PrinterProviderAPIImpl::GetPrintJob( 621 const PrinterProviderPrintJob* PrinterProviderAPIImpl::GetPrintJob(
625 const Extension* extension, 622 const Extension* extension,
626 int request_id) const { 623 int request_id) const {
627 auto it = pending_print_requests_.find(extension->id()); 624 auto it = pending_print_requests_.find(extension->id());
628 if (it == pending_print_requests_.end()) 625 if (it == pending_print_requests_.end())
629 return nullptr; 626 return nullptr;
630 return it->second.GetPrintJob(request_id); 627 return it->second.GetPrintJob(request_id);
631 } 628 }
632 629
633 void PrinterProviderAPIImpl::DispatchGetUsbPrinterInfoRequested( 630 void PrinterProviderAPIImpl::DispatchGetUsbPrinterInfoRequested(
634 const std::string& extension_id, 631 const std::string& extension_id,
635 scoped_refptr<UsbDevice> device, 632 scoped_refptr<UsbDevice> device,
636 const PrinterProviderAPI::GetPrinterInfoCallback& callback) { 633 const PrinterProviderAPI::GetPrinterInfoCallback& callback) {
637 EventRouter* event_router = EventRouter::Get(browser_context_); 634 EventRouter* event_router = EventRouter::Get(browser_context_);
638 if (!event_router->ExtensionHasEventListener( 635 if (!event_router->ExtensionHasEventListener(
639 extension_id, core_api::printer_provider:: 636 extension_id,
640 OnGetUsbPrinterInfoRequested::kEventName)) { 637 api::printer_provider::OnGetUsbPrinterInfoRequested::kEventName)) {
641 callback.Run(base::DictionaryValue()); 638 callback.Run(base::DictionaryValue());
642 return; 639 return;
643 } 640 }
644 641
645 int request_id = 642 int request_id =
646 pending_usb_printer_info_requests_[extension_id].Add(callback); 643 pending_usb_printer_info_requests_[extension_id].Add(callback);
647 core_api::usb::Device usb_device; 644 api::usb::Device usb_device;
648 usb_device.device = 645 usb_device.device =
649 UsbGuidMap::Get(browser_context_)->GetIdFromGuid(device->guid()); 646 UsbGuidMap::Get(browser_context_)->GetIdFromGuid(device->guid());
650 usb_device.vendor_id = device->vendor_id(); 647 usb_device.vendor_id = device->vendor_id();
651 usb_device.product_id = device->product_id(); 648 usb_device.product_id = device->product_id();
652 649
653 scoped_ptr<base::ListValue> internal_args(new base::ListValue); 650 scoped_ptr<base::ListValue> internal_args(new base::ListValue);
654 // Request id is not part of the public API and it will be massaged out in 651 // Request id is not part of the public API and it will be massaged out in
655 // custom bindings. 652 // custom bindings.
656 internal_args->AppendInteger(request_id); 653 internal_args->AppendInteger(request_id);
657 internal_args->Append(usb_device.ToValue().release()); 654 internal_args->Append(usb_device.ToValue().release());
658 scoped_ptr<Event> event(new Event( 655 scoped_ptr<Event> event(
659 events::PRINTER_PROVIDER_ON_GET_USB_PRINTER_INFO_REQUESTED, 656 new Event(events::PRINTER_PROVIDER_ON_GET_USB_PRINTER_INFO_REQUESTED,
660 core_api::printer_provider::OnGetUsbPrinterInfoRequested::kEventName, 657 api::printer_provider::OnGetUsbPrinterInfoRequested::kEventName,
661 internal_args.Pass())); 658 internal_args.Pass()));
662 event_router->DispatchEventToExtension(extension_id, event.Pass()); 659 event_router->DispatchEventToExtension(extension_id, event.Pass());
663 } 660 }
664 661
665 void PrinterProviderAPIImpl::OnGetPrintersResult( 662 void PrinterProviderAPIImpl::OnGetPrintersResult(
666 const Extension* extension, 663 const Extension* extension,
667 int request_id, 664 int request_id,
668 const PrinterProviderInternalAPIObserver::PrinterInfoVector& result) { 665 const PrinterProviderInternalAPIObserver::PrinterInfoVector& result) {
669 base::ListValue printer_list; 666 base::ListValue printer_list;
670 667
671 // Update some printer description properties to better identify the extension 668 // Update some printer description properties to better identify the extension
(...skipping 11 matching lines...) Expand all
683 void PrinterProviderAPIImpl::OnGetCapabilityResult( 680 void PrinterProviderAPIImpl::OnGetCapabilityResult(
684 const Extension* extension, 681 const Extension* extension,
685 int request_id, 682 int request_id,
686 const base::DictionaryValue& result) { 683 const base::DictionaryValue& result) {
687 pending_capability_requests_[extension->id()].Complete(request_id, result); 684 pending_capability_requests_[extension->id()].Complete(request_id, result);
688 } 685 }
689 686
690 void PrinterProviderAPIImpl::OnPrintResult( 687 void PrinterProviderAPIImpl::OnPrintResult(
691 const Extension* extension, 688 const Extension* extension,
692 int request_id, 689 int request_id,
693 core_api::printer_provider_internal::PrintError error) { 690 api::printer_provider_internal::PrintError error) {
694 const std::string error_str = 691 const std::string error_str =
695 error == core_api::printer_provider_internal::PRINT_ERROR_NONE 692 error == api::printer_provider_internal::PRINT_ERROR_NONE
696 ? PrinterProviderAPI::GetDefaultPrintError() 693 ? PrinterProviderAPI::GetDefaultPrintError()
697 : core_api::printer_provider_internal::ToString(error); 694 : api::printer_provider_internal::ToString(error);
698 pending_print_requests_[extension->id()].Complete( 695 pending_print_requests_[extension->id()].Complete(
699 request_id, error == core_api::printer_provider_internal::PRINT_ERROR_OK, 696 request_id, error == api::printer_provider_internal::PRINT_ERROR_OK,
700 error_str); 697 error_str);
701 } 698 }
702 699
703 void PrinterProviderAPIImpl::OnGetUsbPrinterInfoResult( 700 void PrinterProviderAPIImpl::OnGetUsbPrinterInfoResult(
704 const Extension* extension, 701 const Extension* extension,
705 int request_id, 702 int request_id,
706 const core_api::printer_provider::PrinterInfo* result) { 703 const api::printer_provider::PrinterInfo* result) {
707 if (result) { 704 if (result) {
708 scoped_ptr<base::DictionaryValue> printer(result->ToValue()); 705 scoped_ptr<base::DictionaryValue> printer(result->ToValue());
709 UpdatePrinterWithExtensionInfo(printer.get(), extension); 706 UpdatePrinterWithExtensionInfo(printer.get(), extension);
710 pending_usb_printer_info_requests_[extension->id()].Complete(request_id, 707 pending_usb_printer_info_requests_[extension->id()].Complete(request_id,
711 *printer); 708 *printer);
712 } else { 709 } else {
713 pending_usb_printer_info_requests_[extension->id()].Complete( 710 pending_usb_printer_info_requests_[extension->id()].Complete(
714 request_id, base::DictionaryValue()); 711 request_id, base::DictionaryValue());
715 } 712 }
716 } 713 }
(...skipping 26 matching lines...) Expand all
743 bool PrinterProviderAPIImpl::WillRequestPrinters( 740 bool PrinterProviderAPIImpl::WillRequestPrinters(
744 int request_id, 741 int request_id,
745 content::BrowserContext* browser_context, 742 content::BrowserContext* browser_context,
746 const Extension* extension, 743 const Extension* extension,
747 base::ListValue* args) { 744 base::ListValue* args) {
748 if (!extension) 745 if (!extension)
749 return false; 746 return false;
750 EventRouter* event_router = EventRouter::Get(browser_context_); 747 EventRouter* event_router = EventRouter::Get(browser_context_);
751 if (!event_router->ExtensionHasEventListener( 748 if (!event_router->ExtensionHasEventListener(
752 extension->id(), 749 extension->id(),
753 core_api::printer_provider::OnGetPrintersRequested::kEventName)) { 750 api::printer_provider::OnGetPrintersRequested::kEventName)) {
754 return false; 751 return false;
755 } 752 }
756 753
757 return pending_get_printers_requests_.AddSource(request_id, extension->id()); 754 return pending_get_printers_requests_.AddSource(request_id, extension->id());
758 } 755 }
759 756
760 } // namespace 757 } // namespace
761 758
762 // static 759 // static
763 PrinterProviderAPI* PrinterProviderAPI::Create( 760 PrinterProviderAPI* PrinterProviderAPI::Create(
764 content::BrowserContext* context) { 761 content::BrowserContext* context) {
765 return new PrinterProviderAPIImpl(context); 762 return new PrinterProviderAPIImpl(context);
766 } 763 }
767 764
768 // static 765 // static
769 std::string PrinterProviderAPI::GetDefaultPrintError() { 766 std::string PrinterProviderAPI::GetDefaultPrintError() {
770 return core_api::printer_provider_internal::ToString( 767 return api::printer_provider_internal::ToString(
771 core_api::printer_provider_internal::PRINT_ERROR_FAILED); 768 api::printer_provider_internal::PRINT_ERROR_FAILED);
772 } 769 }
773 770
774 } // namespace extensions 771 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698