| OLD | NEW |
| 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 #ifndef EXTENSIONS_BROWSER_API_PRINTER_PROVIDER_PRINTER_PROVIDER_API_H_ | 5 #ifndef EXTENSIONS_BROWSER_API_PRINTER_PROVIDER_PRINTER_PROVIDER_API_H_ |
| 6 #define EXTENSIONS_BROWSER_API_PRINTER_PROVIDER_PRINTER_PROVIDER_API_H_ | 6 #define EXTENSIONS_BROWSER_API_PRINTER_PROVIDER_PRINTER_PROVIDER_API_H_ |
| 7 | 7 |
| 8 #include <map> | 8 #include <map> |
| 9 #include <set> | 9 #include <set> |
| 10 #include <string> | 10 #include <string> |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 42 PRINT_ERROR_INVALID_TICKET, | 42 PRINT_ERROR_INVALID_TICKET, |
| 43 PRINT_ERROR_INVALID_DATA | 43 PRINT_ERROR_INVALID_DATA |
| 44 }; | 44 }; |
| 45 | 45 |
| 46 // Struct describing print job that should be forwarded to an extension via | 46 // Struct describing print job that should be forwarded to an extension via |
| 47 // chrome.printerProvider.onPrintRequested event. | 47 // chrome.printerProvider.onPrintRequested event. |
| 48 struct PrintJob { | 48 struct PrintJob { |
| 49 PrintJob(); | 49 PrintJob(); |
| 50 ~PrintJob(); | 50 ~PrintJob(); |
| 51 | 51 |
| 52 // The id of the printer that should handle the print job. This identifies | 52 // The id of the printer that should handle the print job. The id is |
| 53 // a printer within an extension and is provided by the extension via | 53 // formatted as <extension_id>:<printer_id>, where <extension_id> is the |
| 54 // chrome.printerProvider.onGetPrintersRequested event callback. | 54 // id of the extension that manages the printer, and <printer_id> is |
| 55 // the the printer's id within the extension (as reported via |
| 56 // chrome.printerProvider.onGetPrintersRequested event callback). |
| 55 std::string printer_id; | 57 std::string printer_id; |
| 56 | 58 |
| 57 // The print job ticket. | 59 // The print job ticket. |
| 58 std::string ticket_json; | 60 std::string ticket_json; |
| 59 | 61 |
| 60 // Content type of the document that should be printed. | 62 // Content type of the document that should be printed. |
| 61 std::string content_type; | 63 std::string content_type; |
| 62 | 64 |
| 63 // The document data that should be printed. | 65 // The document data that should be printed. |
| 64 std::string document_bytes; | 66 std::string document_bytes; |
| (...skipping 11 matching lines...) Expand all Loading... |
| 76 explicit PrinterProviderAPI(content::BrowserContext* browser_context); | 78 explicit PrinterProviderAPI(content::BrowserContext* browser_context); |
| 77 ~PrinterProviderAPI() override; | 79 ~PrinterProviderAPI() override; |
| 78 | 80 |
| 79 // Requests list of supported printers from extensions implementing | 81 // Requests list of supported printers from extensions implementing |
| 80 // chrome.printerProvider API. It dispatches | 82 // chrome.printerProvider API. It dispatches |
| 81 // chrome.printerProvider.onGetPrintersRequested event. The callback is | 83 // chrome.printerProvider.onGetPrintersRequested event. The callback is |
| 82 // called once for every extension handling the event with a list of its | 84 // called once for every extension handling the event with a list of its |
| 83 // supported printers. The printer values reported by an extension are | 85 // supported printers. The printer values reported by an extension are |
| 84 // added "extensionId" property that is set to the ID of the extension | 86 // added "extensionId" property that is set to the ID of the extension |
| 85 // returning the list. | 87 // returning the list. |
| 88 // Note that the "id" property of printer values reported by an extension are |
| 89 // rewriten as "<extension_id>:<id>" to ensure they are unique across |
| 90 // different extensions. |
| 86 void DispatchGetPrintersRequested(const GetPrintersCallback& callback); | 91 void DispatchGetPrintersRequested(const GetPrintersCallback& callback); |
| 87 | 92 |
| 88 // Requests printer capability from the extension with id |extension_id| for | 93 // Requests printer capability for a printer with id |printer_id|. |
| 89 // the printer with id |printer_id|. |printer_id| should be one of the printer | 94 // |printer_id| should be one of the printer ids reported by |GetPrinters| |
| 90 // ids reported by |GetPrinters| callback. | 95 // callback. |
| 91 // It dispatches chrome.printerProvider.onGetCapabilityRequested event | 96 // It dispatches chrome.printerProvider.onGetCapabilityRequested event |
| 92 // to the extension. | 97 // to the extension that manages the printer (which can be determined from |
| 98 // |printer_id| value). |
| 93 // |callback| is passed a dictionary value containing printer capabilities as | 99 // |callback| is passed a dictionary value containing printer capabilities as |
| 94 // reported by the extension. | 100 // reported by the extension. |
| 95 void DispatchGetCapabilityRequested(const std::string& extension_id, | 101 void DispatchGetCapabilityRequested(const std::string& printer_id, |
| 96 const std::string& printer_id, | |
| 97 const GetCapabilityCallback& callback); | 102 const GetCapabilityCallback& callback); |
| 98 | 103 |
| 99 // It dispatches chrome.printerProvider.onPrintRequested event to the | 104 // It dispatches chrome.printerProvider.onPrintRequested event with the |
| 100 // extension with id |extension_id| with the provided print job. | 105 // provided print job. The event is dispatched only to the extension that |
| 106 // manages printer with id |job.printer_id|. |
| 101 // |callback| is passed the print status returned by the extension, and it | 107 // |callback| is passed the print status returned by the extension, and it |
| 102 // must not be null. | 108 // must not be null. |
| 103 void DispatchPrintRequested(const std::string& extension_id, | 109 void DispatchPrintRequested(const PrintJob& job, |
| 104 const PrintJob& job, | |
| 105 const PrintCallback& callback); | 110 const PrintCallback& callback); |
| 106 | 111 |
| 107 private: | 112 private: |
| 108 friend class BrowserContextKeyedAPIFactory<PrinterProviderAPI>; | 113 friend class BrowserContextKeyedAPIFactory<PrinterProviderAPI>; |
| 109 | 114 |
| 110 // Holds information about a pending onGetPrintersRequested request; | 115 // Holds information about a pending onGetPrintersRequested request; |
| 111 // in particular, the list of extensions to which the event was dispatched but | 116 // in particular, the list of extensions to which the event was dispatched but |
| 112 // which haven't yet responded, and the |GetPrinters| callback associated with | 117 // which haven't yet responded, and the |GetPrinters| callback associated with |
| 113 // the event. | 118 // the event. |
| 114 class GetPrintersRequest { | 119 class GetPrintersRequest { |
| (...skipping 85 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 | 205 |
| 201 private: | 206 private: |
| 202 int last_request_id_; | 207 int last_request_id_; |
| 203 std::map<int, PrintCallback> pending_requests_; | 208 std::map<int, PrintCallback> pending_requests_; |
| 204 }; | 209 }; |
| 205 | 210 |
| 206 // BrowserContextKeyedAPI implementation. | 211 // BrowserContextKeyedAPI implementation. |
| 207 static const char* service_name() { return "PrinterProvider"; } | 212 static const char* service_name() { return "PrinterProvider"; } |
| 208 | 213 |
| 209 // PrinterProviderInternalAPIObserver implementation: | 214 // PrinterProviderInternalAPIObserver implementation: |
| 210 void OnGetPrintersResult(const Extension* extension, | 215 void OnGetPrintersResult( |
| 211 int request_id, | 216 const Extension* extension, |
| 212 const base::ListValue& result) override; | 217 int request_id, |
| 218 const PrinterProviderInternalAPIObserver::PrinterInfoVector& result) |
| 219 override; |
| 213 void OnGetCapabilityResult(const Extension* extension, | 220 void OnGetCapabilityResult(const Extension* extension, |
| 214 int request_id, | 221 int request_id, |
| 215 const base::DictionaryValue& result) override; | 222 const base::DictionaryValue& result) override; |
| 216 void OnPrintResult( | 223 void OnPrintResult( |
| 217 const Extension* extension, | 224 const Extension* extension, |
| 218 int request_id, | 225 int request_id, |
| 219 core_api::printer_provider_internal::PrintError error) override; | 226 core_api::printer_provider_internal::PrintError error) override; |
| 220 | 227 |
| 221 // Called before chrome.printerProvider.onGetPrintersRequested event is | 228 // Called before chrome.printerProvider.onGetPrintersRequested event is |
| 222 // dispatched to an extension. It returns whether the extension is interested | 229 // dispatched to an extension. It returns whether the extension is interested |
| (...skipping 20 matching lines...) Expand all Loading... |
| 243 DISALLOW_COPY_AND_ASSIGN(PrinterProviderAPI); | 250 DISALLOW_COPY_AND_ASSIGN(PrinterProviderAPI); |
| 244 }; | 251 }; |
| 245 | 252 |
| 246 template <> | 253 template <> |
| 247 void BrowserContextKeyedAPIFactory< | 254 void BrowserContextKeyedAPIFactory< |
| 248 PrinterProviderAPI>::DeclareFactoryDependencies(); | 255 PrinterProviderAPI>::DeclareFactoryDependencies(); |
| 249 | 256 |
| 250 } // namespace extensions | 257 } // namespace extensions |
| 251 | 258 |
| 252 #endif // EXTENSIONS_BROWSER_API_PRINTER_PROVIDER_PRINTER_PROVIDER_API_H_ | 259 #endif // EXTENSIONS_BROWSER_API_PRINTER_PROVIDER_PRINTER_PROVIDER_API_H_ |
| OLD | NEW |