76d7e3ee70c4299b22b1a03505d2b4f108716c75 |
|
15-Jan-2016 |
Philip P. Moltmann <moltmann@google.com> |
Check parameters for callers of IPrintManager - Propagate nullness and non-null-ness up and down from the interfaces. - Add non-CTS print tests for IPrintManager binder. Change-Id: I0c310d9cea8aefba5ce386931521ffaf19712bbb
/frameworks/base/core/java/android/print/PrinterDiscoverySession.java
|
a798c0a984f29f7180883a61839f68d2cbf0c6ce |
|
15-May-2014 |
Svetoslav <svetoslavganov@google.com> |
Refactor printing Change-Id: I19850154ef2798afff511e4490a268ce38e8cbae
/frameworks/base/core/java/android/print/PrinterDiscoverySession.java
|
cfab2457f2c140a2356bb45ec25f51a0a5866556 |
|
28-Sep-2013 |
Svetoslav Ganov <svetoslavganov@google.com> |
Printers in the list of printers change position. While the logic was correct the array map that holds the list of pritners does not keep the position of the items constant. Switched to linked hash map which gives this guarantee. bug:10955751 Change-Id: Idbbe14d753e6a1ad1002f2289b10cb62d7f9f040
/frameworks/base/core/java/android/print/PrinterDiscoverySession.java
|
c335eb411503154cf475903eb6c5c67575769112 |
|
27-Sep-2013 |
Svetoslav <svetoslavganov@google.com> |
Printers in the list of printers change position. 1. The printers in the printers list of settings change position if they are updated. The settings app is using hidden platform APIs the this change fixes. 2. Enable ProGuard for the PrintSpooler. 3. Added icons on the list of printers so the user knows which print service used the printer. Now the user can know when he is using cloud print and maybe incurring data costs vs local printer discovered by a vendor plug in. bug:10955751 Change-Id: I292f48b424cb561218fdb424d0388f4d786d8339
/frameworks/base/core/java/android/print/PrinterDiscoverySession.java
|
2fbd2a7f070f246ddafd9de94efa9a98861e9136 |
|
17-Sep-2013 |
Svetoslav <svetoslavganov@google.com> |
App UI freezes when printing. API clean up. 1. The UI of a printing app was freezing a little when calling the print method since the print manager service was waiting for it to bind to the print spooler which generated the print job id (and the initial print job info really). Now the print manager service is responsible for job id generation and does not not wait for the print spooler to spin. Hence, the app UI is not blocked at all. Note that the print manager initiates the binding to the spooler and as soon as it completes the spooler shows the print UI which is hosted in its process. It is not possible to show the print UI before the system is bound to the spooler since during this binding the system passes a callback to the spooler so the latter can talk to the system. 2. Changed the print job id to be an opaque class allowing us to vary the way we generate print job ids in the future. 3. The queued print job state was hidden but the print job returned by the print method of the print manager is in that state. Now now hidden. 4. We were incorrecly removing print job infos if they are completed or cancelled. Doing that is problematic since the print job returned by the print method allows the app to query for the job info after the job has been say completed. Hence, an app can initiate printing and get a print job whose state is "created" and hold onto it until after the job is completed, now if the app asks for the print job info it will get an info in "created" state even though the job is "completed" since the spooler was not retaining the completed jobs. Now the spooler removes the PDF files for the completed and cancelled print jobs but keeps around the infos (also persisting them to disc) so it can answer questions about them. On first boot or switch to a user we purge the persisted print jobs in completed/cancelled state since they are obsolete - no app can have a handle to them. 5. Removed the print method that takes a file since we have a public PrintDocumentAdapter implementation for printing files. Once can instantiate a PrintFileDocumentAdapter and pass it to the print method. This class also allows overriding of the finish method to know when the data is spooled and deleted the file if desired, etc. 6. Replaced the wrong code to slice a large list of parcelables to use ParceledListSlice class. bug:10748093 Change-Id: I1ebeeb47576e88fce550851cdd3e401fcede6e2b
/frameworks/base/core/java/android/print/PrinterDiscoverySession.java
|
773f54de3de9bce7b6f915aa47ed686b161d77aa |
|
03-Sep-2013 |
Svetoslav <svetoslavganov@google.com> |
Print API updated. 1. Removed the updatePrinters API on PrinterDiscoverySession. Now re-adding a printer updates it. 2. Added getTrackedPrinters() API to allow a print service to figure out which printers' state should be tracked by the service. 3. Removed the APIs on PrintDocumentInfo that describe the layout of the content as they are not needed. For example, if the print attributes passed in layout require landscape mode, the the app should just create a PDF page with the wider side up and draw its content in portrait. The printer will then rotate the page. Change-Id: Idd72c6e9c129e8b17eef1236573a99773f8ff0a2
/frameworks/base/core/java/android/print/PrinterDiscoverySession.java
|
d26d4898fcc9b78f4b66118895c375384098205e |
|
28-Aug-2013 |
Svetoslav Ganov <svetoslavganov@google.com> |
Print spooler security and some new print service facing APIs. 1. Updated the security mode of the print spooler. Now the spooler is not signed with the system key, it is not a privileged app so if it gets compromised (PDF rendering is a potential attack vector) it cannot access dangerous permissions. Also only the system can bind to the spooler. 2. Added APIs for asking a print service to start and stop tracking a given printer. This is need for the case when the user selects the printer and the print service should do a best effort to keep the system updated for the current state of the printer. 3. Added APIs for putting a print job in a blocked state. A print service would report the print job as blocked if for some reason the printer cannot proceed, e.g. 99 pages are printed but there is no paper for the last one. The user has to add more paper and the print service can resume the job. 4. Changed the read/write APIs to use ParcelFileDescriptor instead of FileDescriptor since the latter does not have a clean API for detaching the wrapped Linux file descriptor when one wants to push it to native. 5. Added API for getting the size of the printed document so the print service can avoid handling big filed over cellular network or ask the user if needed. 6. Now the print services that are preinstalled on the system image are automatically enabled. Change-Id: Ia06c311d3d21cabb9e1368f13928e11cd0030918
/frameworks/base/core/java/android/print/PrinterDiscoverySession.java
|
44720af55a8fdf991929983dad5d53c02851dd1e |
|
21-Aug-2013 |
Svetoslav Ganov <svetoslavganov@google.com> |
Print UI bug fixing and printer discovery refactoring. 1. Added support for selecting a printer from the all printers activity that is not in the initial printer selection drop down. The user initially sees a sub set of the printers in the drop down and the last option is to see all printers in a separate activity. Some of the printers in the all printers activity are not shown in the initial drop down. 2. Refactored printer discovery by adding (private for now) printer discovery app facing APIs. These APIs are needed to support multiple printer selection activities (print dialog and all printers activities) and also the settings for showing all printers for a service. Now multiple apps can request observing for printers and there is a centralized mediator that ensures the same printer discovery session is used. The mediator dispatches printer discovery specific requests to print services. It also aggregates discovered printers and delivers them to the interested apps. The mediator minimizes printer discovery session creation and starting and stopping discovery by sharing the same discovery session and discovery window with multiple apps. Lastly, the mediator takes care of print services enabled during discovery by bringing them up to the current discovery state (create discovery session and start discovery if needed). The mediator also reports disappearing of the printers of a service removed during discovery and notifies a newly registered observers for the currnet printers if the observers are added during an active printer discovery session. 3. Fixed bugs in the print UI and implemented some UX tweaks. Change-Id: I4d0b0c5a6c6f1809b2ba5dbc8e9d63ab3d48f1ef
/frameworks/base/core/java/android/print/PrinterDiscoverySession.java
|