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/print/PrintServicesLoader.java
|
00c3659eca6f9ab9235e7746b6d74702ab90555b |
|
24-Jun-2016 |
Philip P. Moltmann <moltmann@google.com> |
Do not remove handlers for loaders. In rare situations we might trigger a force-load if the handler is stopped. Change-Id: I103744654805dcbe0744b09b5be9da1f505817d3 Fixes: 29581798
/frameworks/base/core/java/android/print/PrintServicesLoader.java
|
9dcb86a48d73f399fb1b5c020005d76d350eeac2 |
|
14-Mar-2016 |
Philip P. Moltmann <moltmann@google.com> |
Add the print service recommendation service This service connects through the print manager to the print spooler: PrintSpooler.AddPrintersActivity <-> PrintManager <-> PrintManagerService <-> UserState <-> RemotePrintServiceRecommendationService <-> PrintRecommendationService <-> PrintRecommendationServiceImpl Hence there is a lot of mindless plumming. The actual changes are only in the AddPrintersActivity which is extended to show another list of services: The recommended services. The PrintServiceRecommendationService is based on the experimenal print service stubs provider. This provider was contributed the Android by Mopria. As this services uses Android own network discovery service most code from the experimental provider goes away. In fact the only logic left over is the selections of mdns-txt fields to look at and the printer vendor configuration. This relies on the Android MDNS to get fixed (Bug: 27696905). This also does not deal with how to update the recommendation service. Bug: 24533249 Change-Id: I6edc6e25fc08a50d478b61c71bb8ea158b08624c
/frameworks/base/core/java/android/print/PrintServicesLoader.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/print/PrintServicesLoader.java
|