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

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: 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::UNKNOWN, 529 new Event(events::UNKNOWN,
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::UNKNOWN, 568 new Event(events::UNKNOWN,
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(new Event( 614 scoped_ptr<Event> event(new Event(
618 events::UNKNOWN, core_api::printer_provider::OnPrintRequested::kEventName, 615 events::UNKNOWN, api::printer_provider::OnPrintRequested::kEventName,
619 internal_args.Pass())); 616 internal_args.Pass()));
620 event_router->DispatchEventToExtension(extension_id, event.Pass()); 617 event_router->DispatchEventToExtension(extension_id, event.Pass());
621 } 618 }
622 619
623 const PrinterProviderPrintJob* PrinterProviderAPIImpl::GetPrintJob( 620 const PrinterProviderPrintJob* PrinterProviderAPIImpl::GetPrintJob(
624 const Extension* extension, 621 const Extension* extension,
625 int request_id) const { 622 int request_id) const {
626 auto it = pending_print_requests_.find(extension->id()); 623 auto it = pending_print_requests_.find(extension->id());
627 if (it == pending_print_requests_.end()) 624 if (it == pending_print_requests_.end())
628 return nullptr; 625 return nullptr;
629 return it->second.GetPrintJob(request_id); 626 return it->second.GetPrintJob(request_id);
630 } 627 }
631 628
632 void PrinterProviderAPIImpl::DispatchGetUsbPrinterInfoRequested( 629 void PrinterProviderAPIImpl::DispatchGetUsbPrinterInfoRequested(
633 const std::string& extension_id, 630 const std::string& extension_id,
634 scoped_refptr<UsbDevice> device, 631 scoped_refptr<UsbDevice> device,
635 const PrinterProviderAPI::GetPrinterInfoCallback& callback) { 632 const PrinterProviderAPI::GetPrinterInfoCallback& callback) {
636 EventRouter* event_router = EventRouter::Get(browser_context_); 633 EventRouter* event_router = EventRouter::Get(browser_context_);
637 if (!event_router->ExtensionHasEventListener( 634 if (!event_router->ExtensionHasEventListener(
638 extension_id, core_api::printer_provider:: 635 extension_id,
639 OnGetUsbPrinterInfoRequested::kEventName)) { 636 api::printer_provider::OnGetUsbPrinterInfoRequested::kEventName)) {
640 callback.Run(base::DictionaryValue()); 637 callback.Run(base::DictionaryValue());
641 return; 638 return;
642 } 639 }
643 640
644 int request_id = 641 int request_id =
645 pending_usb_printer_info_requests_[extension_id].Add(callback); 642 pending_usb_printer_info_requests_[extension_id].Add(callback);
646 core_api::usb::Device usb_device; 643 api::usb::Device usb_device;
647 usb_device.device = 644 usb_device.device =
648 UsbGuidMap::Get(browser_context_)->GetIdFromGuid(device->guid()); 645 UsbGuidMap::Get(browser_context_)->GetIdFromGuid(device->guid());
649 usb_device.vendor_id = device->vendor_id(); 646 usb_device.vendor_id = device->vendor_id();
650 usb_device.product_id = device->product_id(); 647 usb_device.product_id = device->product_id();
651 648
652 scoped_ptr<base::ListValue> internal_args(new base::ListValue); 649 scoped_ptr<base::ListValue> internal_args(new base::ListValue);
653 // Request id is not part of the public API and it will be massaged out in 650 // Request id is not part of the public API and it will be massaged out in
654 // custom bindings. 651 // custom bindings.
655 internal_args->AppendInteger(request_id); 652 internal_args->AppendInteger(request_id);
656 internal_args->Append(usb_device.ToValue().release()); 653 internal_args->Append(usb_device.ToValue().release());
657 scoped_ptr<Event> event(new Event( 654 scoped_ptr<Event> event(
658 events::UNKNOWN, 655 new Event(events::UNKNOWN,
659 core_api::printer_provider::OnGetUsbPrinterInfoRequested::kEventName, 656 api::printer_provider::OnGetUsbPrinterInfoRequested::kEventName,
660 internal_args.Pass())); 657 internal_args.Pass()));
661 event_router->DispatchEventToExtension(extension_id, event.Pass()); 658 event_router->DispatchEventToExtension(extension_id, event.Pass());
662 } 659 }
663 660
664 void PrinterProviderAPIImpl::OnGetPrintersResult( 661 void PrinterProviderAPIImpl::OnGetPrintersResult(
665 const Extension* extension, 662 const Extension* extension,
666 int request_id, 663 int request_id,
667 const PrinterProviderInternalAPIObserver::PrinterInfoVector& result) { 664 const PrinterProviderInternalAPIObserver::PrinterInfoVector& result) {
668 base::ListValue printer_list; 665 base::ListValue printer_list;
669 666
670 // Update some printer description properties to better identify the extension 667 // Update some printer description properties to better identify the extension
(...skipping 11 matching lines...) Expand all
682 void PrinterProviderAPIImpl::OnGetCapabilityResult( 679 void PrinterProviderAPIImpl::OnGetCapabilityResult(
683 const Extension* extension, 680 const Extension* extension,
684 int request_id, 681 int request_id,
685 const base::DictionaryValue& result) { 682 const base::DictionaryValue& result) {
686 pending_capability_requests_[extension->id()].Complete(request_id, result); 683 pending_capability_requests_[extension->id()].Complete(request_id, result);
687 } 684 }
688 685
689 void PrinterProviderAPIImpl::OnPrintResult( 686 void PrinterProviderAPIImpl::OnPrintResult(
690 const Extension* extension, 687 const Extension* extension,
691 int request_id, 688 int request_id,
692 core_api::printer_provider_internal::PrintError error) { 689 api::printer_provider_internal::PrintError error) {
693 const std::string error_str = 690 const std::string error_str =
694 error == core_api::printer_provider_internal::PRINT_ERROR_NONE 691 error == api::printer_provider_internal::PRINT_ERROR_NONE
695 ? PrinterProviderAPI::GetDefaultPrintError() 692 ? PrinterProviderAPI::GetDefaultPrintError()
696 : core_api::printer_provider_internal::ToString(error); 693 : api::printer_provider_internal::ToString(error);
697 pending_print_requests_[extension->id()].Complete( 694 pending_print_requests_[extension->id()].Complete(
698 request_id, error == core_api::printer_provider_internal::PRINT_ERROR_OK, 695 request_id, error == api::printer_provider_internal::PRINT_ERROR_OK,
699 error_str); 696 error_str);
700 } 697 }
701 698
702 void PrinterProviderAPIImpl::OnGetUsbPrinterInfoResult( 699 void PrinterProviderAPIImpl::OnGetUsbPrinterInfoResult(
703 const Extension* extension, 700 const Extension* extension,
704 int request_id, 701 int request_id,
705 const core_api::printer_provider::PrinterInfo* result) { 702 const api::printer_provider::PrinterInfo* result) {
706 if (result) { 703 if (result) {
707 scoped_ptr<base::DictionaryValue> printer(result->ToValue()); 704 scoped_ptr<base::DictionaryValue> printer(result->ToValue());
708 UpdatePrinterWithExtensionInfo(printer.get(), extension); 705 UpdatePrinterWithExtensionInfo(printer.get(), extension);
709 pending_usb_printer_info_requests_[extension->id()].Complete(request_id, 706 pending_usb_printer_info_requests_[extension->id()].Complete(request_id,
710 *printer); 707 *printer);
711 } else { 708 } else {
712 pending_usb_printer_info_requests_[extension->id()].Complete( 709 pending_usb_printer_info_requests_[extension->id()].Complete(
713 request_id, base::DictionaryValue()); 710 request_id, base::DictionaryValue());
714 } 711 }
715 } 712 }
(...skipping 26 matching lines...) Expand all
742 bool PrinterProviderAPIImpl::WillRequestPrinters( 739 bool PrinterProviderAPIImpl::WillRequestPrinters(
743 int request_id, 740 int request_id,
744 content::BrowserContext* browser_context, 741 content::BrowserContext* browser_context,
745 const Extension* extension, 742 const Extension* extension,
746 base::ListValue* args) { 743 base::ListValue* args) {
747 if (!extension) 744 if (!extension)
748 return false; 745 return false;
749 EventRouter* event_router = EventRouter::Get(browser_context_); 746 EventRouter* event_router = EventRouter::Get(browser_context_);
750 if (!event_router->ExtensionHasEventListener( 747 if (!event_router->ExtensionHasEventListener(
751 extension->id(), 748 extension->id(),
752 core_api::printer_provider::OnGetPrintersRequested::kEventName)) { 749 api::printer_provider::OnGetPrintersRequested::kEventName)) {
753 return false; 750 return false;
754 } 751 }
755 752
756 return pending_get_printers_requests_.AddSource(request_id, extension->id()); 753 return pending_get_printers_requests_.AddSource(request_id, extension->id());
757 } 754 }
758 755
759 } // namespace 756 } // namespace
760 757
761 // static 758 // static
762 PrinterProviderAPI* PrinterProviderAPI::Create( 759 PrinterProviderAPI* PrinterProviderAPI::Create(
763 content::BrowserContext* context) { 760 content::BrowserContext* context) {
764 return new PrinterProviderAPIImpl(context); 761 return new PrinterProviderAPIImpl(context);
765 } 762 }
766 763
767 // static 764 // static
768 std::string PrinterProviderAPI::GetDefaultPrintError() { 765 std::string PrinterProviderAPI::GetDefaultPrintError() {
769 return core_api::printer_provider_internal::ToString( 766 return api::printer_provider_internal::ToString(
770 core_api::printer_provider_internal::PRINT_ERROR_FAILED); 767 api::printer_provider_internal::PRINT_ERROR_FAILED);
771 } 768 }
772 769
773 } // namespace extensions 770 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698