6870033d374a15fd212675d570a2877c28f1cbf0 |
|
19-Jun-2017 |
Philip P. Moltmann <moltmann@google.com> |
Enforce permission for print system APIs The permission is preinstalled as we want to leave the PrintSpooler unpriviledged. Test: Checked that Settings, PrintSpooler and BuiltInPrintService still behave as expected. Fixes: 62350107 Change-Id: Id33896f2899533f2d05cafa926df29cf1c6bfa77
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
2dcedc1276aee3e4e044b1d4ecafc34462fefb7c |
|
08-Jun-2017 |
Svetoslav Ganov <svetoslavganov@google.com> |
Ensure only test print services enabled - framework Test: cts-tradefed run cts-dev -m CtsPrintTestCas bug:62232727 Change-Id: I1050272586d1c03dc1b1dfdb8b10e258912a249b
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
7e01895e6972c0ebc552215b1207a519529af3fd |
|
02-Apr-2017 |
Philip P. Moltmann <moltmann@google.com> |
Return inet addr for discoverable printers ... by extending the RecommendationInfo to store the inet addresses not just the count. Thankfully the recommendation plugins already contained all the printers, not only the count. Also expose the print service state as system APIs as they will be used by the default print service. Bug: 35765644 Test: Ran AddPrinterActivity on network that had printers to discover Change-Id: I929a177adb75f6848848ba30a472cf0343d2e67e
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
66c96591e2ddb464c67e60dbf4193ef4ec8a620b |
|
24-Feb-2016 |
Philip P. Moltmann <moltmann@google.com> |
Add "app printer activity" and always keep the print service state updated. Also fiddle with the UI to use more standard values. To be sure the print service state alwasy updated I changed PrintManager.getPrintServices to return a loader which just wraps a registerListener/getList/removeListener combo. I also added a new function to enabled/disable a print service to be keep all updating logic inside the PrintManagerService->UserState. Then I changed all code to use this new interface. Detailed comments: PrintServiceInfo: - I had to add the enabled state to the PrintServiceInfo as some users of PrintManager.getPrintServices want all services but then display different data depending on the enabled state. Of course I could have created two PrintManager.getPrintServices-loaders to load the two separate list of services. I think it is much easier to add this property though. It is updated every time new data is returned to the PrintManager.getPrintServices-loader. AddPrinterActivity: - This is shown as a dialog-style overlay to indicate that the user will return to the select-printers activity. It contains of three list that are updated via separate loaders. - The recommended services will be added later to keep this path set small. PrintActivity: - There are two small places where we have to update the data when we get a new list of print services. - In very, very rare conditions it can happen that the print service of the current printer gains or looses the "advancedOptions" activity - If we have no enabled print services we want to show "Add printer" instead of "All printers...". - Also the print registry is not the only loader anymore, hence we have to assign loader ids to it to not conflict with the other loaders in this activity. - Small bug in onPrintersChanged: If a printer is selected and the print service of this printer gets disabled the holder goes into "removed" state which disables the printer. When the print service is then enabled again, we forgot to re-enable the holder. PrinterRegistry: - The registry assumed that the FusedPrinterProvider was the only loader in the activity. This is not true anymore, hence it has to assign the appropriate loader ids. - The FusedPrinterProvider has an internal loader, hence we have to forward a loader Id into it. - The PrintRegistry is only called backed for a single loader, hence no need to check the loader-id. SelectPrinterActivity: - The AddPrinterDialog was removed as we now have the AddPrinterActivity. - Added a loader for the enabled services to update the empty state. - Added dedicated loader Id for the PrinterRegistry again. - If we have no enabled services, the SelectPrinterActivity chainloads the AddPrinterActivity as this is the only thing the user can do anyway. "Save a click". This should only happen when the activity is create the first time. - Moved the "add printer" from the menu item to the list of printers as suggested by UX and Zach. PrintManagerService, UserState and IPrintManagerParamtersTest: - As the only place where the print service state is updated is now the userstate, we have no more sychronization problems. Whohoo. - The users can now register for changes to the print services similar as they can register for changes to the print jobs. - UserState.getPrintServices is the only function can exposes any knowledge of the print services to the outside world. Change-Id: I9be2c7300431e06aaff9bdf7eb36120d869b56ac
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
8141bdfa56f13c3946bed12ba7801e492ec25c11 |
|
22-Dec-2015 |
Philip P. Moltmann <moltmann@google.com> |
Store which print services are disabled instead of which are enabled This make services that appreared while the print manager was not active by default enabled. In the case we upgrade from pre-N we convert the enabled-list into a disabled-list. Bug: 26249649 Change-Id: Iae783a8dd19f1a9d75d675710ea4348fdfbd34f3
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
c43639c3067dda5df189fb3cbf14f256c17e677d |
|
18-Dec-2015 |
Philip P. Moltmann <moltmann@google.com> |
Clean up print subsystem - Stop using deprecated APIs - Fix all public and some internal javadoc - Add @Decorations to public APIs - Some minor cleanup, e.g. don't use variables with overlapping names in same scope - remove unnecessary properties from manifest (they are set by the build system) Change-Id: I0ce8849a516414763fe9de76c3a18ce17d896816
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
b4fda134761c9521a7e127db3806a07a18763b77 |
|
26-Oct-2013 |
Svetoslav <svetoslavganov@google.com> |
Complete implementation of the advanced print options. 1. Implemented the advanced printer options integration. Now a print service may declare an advanced print options activity which may be launched by the user if the current printer supports advanced print options. These options are visible only to the print service that added them and it is the only party that will interpret the options. 2. Fixed a couple of bugs in the saved print jobs parsing. One was that if there are more than one page range, a half of the print job properties was not properly parsed. The other was that the media size constructor was using incorrect argument order, thus creating a media size with wring width. 3. Fixed and edge case where old print jobs and their docs can get stuck in the spooler. If the app did not write the requested pages we were not showing an error message, rather just finish the activity without canceling the print job and this print job is stuck in the spooler. Now we show an error message and the user may retry, cancel. If the user cancels the print job is also cancelled, thus no leftover in the spooler. 4. Fixed the background color of the print dialog to meet UX spec. bug:11241800 Change-Id: I352440bc86aec824a805883fc9579d96a06d11e6
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
b669917825a49421ee79be4819ead765f5de8aae |
|
08-Sep-2013 |
Svetoslav Ganov <svetoslavganov@google.com> |
Add dumping the state of the print sub-system. Being able to dump the state of the print sub-system especially when taking a bugreport is very useful for bug fixing and observing whether the print system operates properly. bug:10659019 Change-Id: Id098b788f474ab17766966a4563ffdfc0171c76b
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
8c43376ea83a67414bd6823a472b76d41160239e |
|
02-Aug-2013 |
Svetoslav Ganov <svetoslavganov@google.com> |
First cut of the print notifications. 1. Added notifications for a queued print job, for a started print job, for ongoing canceling a print job, and for a failed print job. The notifications for queued and started state have a cancel action. The notification for failed print job has a cancel and a restart action. 2. Propagating failure message from the print service to the notifications. 3. PrintJobConfigActivity was not setting the initial value for the print job copies and was not updating the UI immediately after creation. 4. Refactored PrintJobConfigActivity to avoid using the hack to avoid reaction for item selection change in a spinner for an event that happened before the callback was registered. 5. Removed the label attribute from PrinterInfo and now PrinterId is composed of the printer name and the service component name. This is nice since for restarting print jobs we do not need to store information about the printer except the printer id which is already part of the PrintJobInfo's data. Also the printer name is not expected to change anyway. 6. Allowing cancellation of a queued print job. Also no print job is cancelled without asking the managing print service to do that. Before we were immediately canceling print jobs in queued state but it was possible for a buggy print service to not set the print job state to started before starting to do expensive work that will not be canceled. 7. PrintServiceInfo was throwing an exception the the meta-data XML for the print service was not well-formed which would crash the system process. Now we just ignore not well-formed meta-data. 8. Removed unused permissions from the PrintSpooler's manifest. Change-Id: Iba2dd14b487f56e137b90d1da17c3033422ab5e6
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
a00271533f639c8ed36429c663889ac9f654bc72 |
|
25-Jun-2013 |
Svetoslav Ganov <svetoslavganov@google.com> |
Refactoring of the print sub-system and API clean up. 1. Now a user state has ins own spooler since the spooler app is running per user. The user state registers an observer for the state of the spooler to get information needed to orchestrate unbinding from print serivces that have no work and eventually unbinding from the spooler when all no service has any work. 2. Abstracted a remote print service from the perspective of the system in a class that is transparently managing binding and unbinding to the remote instance. 3. Abstracted the remote print spooler to transparently manage binding and unbinding to the remote instance when there is work and when there is no work, respectively. 4. Cleaned up the print document adapter (ex-PrintAdapter) APIs to enable implementing the all callbacks on a thread of choice. If the document is really small, using the main thread makes sense. Now if an app that does not need the UI state to layout the printed content, it can schedule all the work for allocating resources, laying out, writing, and releasing resources on a dedicated thread. 5. Added info class for the printed document that is now propagated the the print services. A print service gets an instance of a new document class that encapsulates the document info and a method to access the document's data. 6. Added APIs for describing the type of a document to the new document info class. This allows a print service to do smarts based on the doc type. For now we have only photo and document types. 7. Renamed the systemReady method for system services that implement it with different semantics to systemRunning. Such methods assume the the service can run third-party code which is not the same as systemReady. 8. Cleaned up the print job configuration activity. 9. Sigh... code clean up here and there. Factoring out classes to improve readability. Change-Id: I637ba28412793166cbf519273fdf022241159a92
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|
4b9a4d16872bbb50712e007b419ac0b35ff1582d |
|
12-Jun-2013 |
Svetoslav Ganov <svetoslavganov@google.com> |
Print - platform APIs Related changes: Skia (inlcude PDF APIs): https://googleplex-android-review.googlesource.com/#/c/305814/ Canvas to PDF: https://googleplex-android-review.googlesource.com/#/c/319367/ Settings (initial version): https://googleplex-android-review.googlesource.com/#/c/306077/ Build: https://googleplex-android-review.googlesource.com/#/c/292437/ Sample print services: https://googleplex-android-review.googlesource.com/#/c/281785/ Change-Id: I104d12efd12577f05c7b9b2a5e5e49125c0f09da
/frameworks/base/core/java/android/printservice/PrintServiceInfo.java
|