• Home
  • History
  • Annotate
  • only in /packages/services/BuiltInPrintService/src/
History log of /packages/services/BuiltInPrintService/src/
Revision Date Author Comments (<<< Hide modified files) (Show modified files >>>)
1c5caa96f19be15c2f3129c96a52aeca463784cc 16-Apr-2018 Philip P. Moltmann <moltmann@google.com> Enable multi-cast while resolving nsd services

Test: Before taimen never resolved nsd servives. How it resolved nsd
services reliably when built in print service and print service
recommendation service used NsdService
Fixes: 75316187

Change-Id: I5976bea0273f605e59dc4ee72dbd766ff79d1d41
om/android/bips/discovery/MdnsDiscovery.java
1e326d3a8ef665536a542f0ed64112dbe00a03c6 18-Jan-2018 Glade Diviney <mopriadevteam@gmail.com> Support manual-add of IPPS and other printers

The current code does not allow IPPS-only printers to be added manually.
In addition, printers located at alternate URIs cannot currently be
added.

This changes addresses both problems by searching for additional ports/
paths when doing a manual add, and also by permitting the user to
specify a scheme (ipp:// or ipps://), a port number, and/or a path along
with the hostname. If any part is not supplied, known defaults are
populated and attempted. Any dangling network attempts are cancelled when
no longer needed.

Users can review the full printer URI in the details dialog of the Add
Printer activity.

Test: Set up an IPPS-only printer and try to add it manually
Change-Id: I34f77168d523a762b83adc692cbf6a444d831cd4
Signed-off-by: Glade Diviney <mopriadevteam@gmail.com>
om/android/bips/discovery/ManualDiscovery.java
om/android/bips/ipp/Backend.java
om/android/bips/ipp/CapabilitiesCache.java
om/android/bips/ipp/GetCapabilitiesTask.java
om/android/bips/ui/AddManualPrinterDialog.java
om/android/bips/ui/AddPrintersFragment.java
080c9c93d627b0b56bcfab83748915f92956930b 09-Jan-2018 Glade Diviney <mopriadevteam@gmail.com> Add support for Wi-Fi Direct printing

In environments where Wi-Fi LANs are inconvenient or unavailable, Wi-Fi Direct
connections allow users to print using an ad-hoc point-to-point network between
the mobile device and the printer. This code change allows users to discover
and add Wi-Fi Direct printers, and later select and print to them.

Because the same printer may appear both on a connected LAN and/or as a
an added Wi-Fi Direct printer, this code "de-duplicates" printer records based
on UUID. In this way, the same printer only appears once to the end user, even
if it is discovered using two different mechanisms.

The new package com.android.bips.p2p is added to manage Wi-Fi Direct discoveries
and connections. Other code is refactored as necessary according to current
style requirements. New UI Activities and Fragments are also added to expose
Wi-Fi Direct to the user.

Test: Add and print to a printer with Wi-Fi Direct capabilities
Change-Id: If4d8c7949ecc93851c07bd954674b33803b2fad5
Signed-off-by: Glade Diviney <mopriadevteam@gmail.com>
om/android/bips/BuiltInPrintService.java
om/android/bips/DelayedAction.java
om/android/bips/JobQueue.java
om/android/bips/LocalDiscoverySession.java
om/android/bips/LocalDiscoverySessionInfo.java
om/android/bips/LocalPrintJob.java
om/android/bips/LocalPrinter.java
om/android/bips/discovery/ConnectionListener.java
om/android/bips/discovery/DelayedDiscovery.java
om/android/bips/discovery/DiscoveredPrinter.java
om/android/bips/discovery/Discovery.java
om/android/bips/discovery/ManualDiscovery.java
om/android/bips/discovery/MdnsDiscovery.java
om/android/bips/discovery/MultiDiscovery.java
om/android/bips/discovery/NsdResolveQueue.java
om/android/bips/discovery/P2pDiscovery.java
om/android/bips/discovery/SavedDiscovery.java
om/android/bips/ipp/Backend.java
om/android/bips/ipp/CapabilitiesCache.java
om/android/bips/ipp/GetCapabilitiesTask.java
om/android/bips/ipp/StartJobTask.java
om/android/bips/jni/PdfRender.java
om/android/bips/p2p/P2pConnectionListener.java
om/android/bips/p2p/P2pConnectionProcedure.java
om/android/bips/p2p/P2pDiscoveryProcedure.java
om/android/bips/p2p/P2pMonitor.java
om/android/bips/p2p/P2pPeerListener.java
om/android/bips/p2p/P2pPrinterConnection.java
om/android/bips/p2p/P2pUtils.java
om/android/bips/render/PdfRenderService.java
om/android/bips/ui/AddManualPrinterDialog.java
om/android/bips/ui/AddP2pPrinterDialog.java
om/android/bips/ui/AddPrintersActivity.java
om/android/bips/ui/AddPrintersFragment.java
om/android/bips/ui/FindP2pPrintersFragment.java
om/android/bips/ui/ManualPrintersFragment.java
om/android/bips/ui/PrinterPreference.java
om/android/bips/util/BroadcastMonitor.java
om/android/bips/util/FileUtils.java
om/android/bips/util/PriorityLock.java
om/android/bips/util/WifiMonitor.java
c7272f4c0471381b087aaa8abadbc4e87167473f 06-Oct-2017 Philip P. Moltmann <moltmann@google.com> Syncronize PdfRender singleton correctly

Test: m -j BuiltInPrintService
Change-Id: Icb9936907cdba7dcd5ff3248b70ea94c9f7a372a
om/android/bips/jni/PdfRender.java
9ea209a27fb6a1236c9c51caba14abb07b8134f9 06-Oct-2017 Philip P. Moltmann <moltmann@google.com> Adjust style to fit what is enforced by checkstyle

Test: Ran check-style on every file. Now only complains about
double-copyright and missing java-doc comments
m -j BuiltInPrintService

Change-Id: I2f1052e24e54f06276ef5ae7f5821adf1b6274e1
om/android/bips/BuiltInPrintService.java
om/android/bips/JobQueue.java
om/android/bips/LocalDiscoverySession.java
om/android/bips/LocalPrintJob.java
om/android/bips/LocalPrinter.java
om/android/bips/discovery/DiscoveredPrinter.java
om/android/bips/discovery/Discovery.java
om/android/bips/discovery/ManualDiscovery.java
om/android/bips/discovery/MdnsDiscovery.java
om/android/bips/discovery/MultiDiscovery.java
om/android/bips/discovery/NsdResolveQueue.java
om/android/bips/ipp/Backend.java
om/android/bips/ipp/CancelJobTask.java
om/android/bips/ipp/CapabilitiesCache.java
om/android/bips/ipp/GetCapabilitiesTask.java
om/android/bips/ipp/JobStatus.java
om/android/bips/ipp/StartJobTask.java
om/android/bips/jni/BackendConstants.java
om/android/bips/jni/JobCallback.java
om/android/bips/jni/JobCallbackParams.java
om/android/bips/jni/LocalJobParams.java
om/android/bips/jni/LocalPrinterCapabilities.java
om/android/bips/jni/MediaSizes.java
om/android/bips/jni/PdfRender.java
om/android/bips/jni/SizeD.aidl
om/android/bips/jni/SizeD.java
om/android/bips/render/IPdfRender.aidl
om/android/bips/render/PdfRenderService.java
om/android/bips/ui/AddManualPrinterDialog.java
om/android/bips/ui/AddPrintersActivity.java
om/android/bips/ui/ManualPrintersFragment.java
om/android/bips/util/FileUtils.java
om/android/bips/util/WifiMonitor.java
d2a96dfc6cbc78e660d38284b3ec5346cbabb125 05-Oct-2017 Glade Diviney <mopriadevteam@gmail.com> Support IPPS-only printers

Some printers ship in a mode that supports only IPPS. This pull request
discovers IPPS printers and uses IPPS to communicate with printers if
necessary.

Test: Use Default Print Service to print to an IPPS-only printer
Change-Id: I9aba8e03178182828ed423179cdbbefd42f868b3
Signed-off-by: Glade Diviney <mopriadevteam@gmail.com>
om/android/bips/discovery/MdnsDiscovery.java
om/android/bips/ipp/Backend.java
om/android/bips/ipp/StartJobTask.java
911db0bab1adfab02e551fb512e7fac8f8dccfe1 23-Aug-2017 Glade Diviney <mopriadevteam@gmail.com> prevent IO on main thread

When starting up discovery, prior code fetches IP address for manually-
added printers. For named printers this results in IO on main thread,
causing an exception. This change captures IP address during capability scan.

Test: Manually add a DNS-resolvable printer and restart printing
Change-Id: I0f87de92a847ce41381a94aa5d5a7bbf8ecb4165
Signed-off-by: Glade Diviney <mopriadevteam@gmail.com>
om/android/bips/LocalDiscoverySession.java
om/android/bips/LocalPrinter.java
om/android/bips/ipp/GetCapabilitiesTask.java
om/android/bips/jni/LocalPrinterCapabilities.java
0acf95120571c09828ae884578528e73cf82a6b6 13-Jun-2017 Glade Diviney <mopriadevteam@gmail.com> make add printer dialog less invasive am: d1d1934f73
am: a474191a14

Change-Id: I6e9a75e4988a7431a42d85e1deb9b21a3f1b3798
d1d1934f739b57b5389abdef5fe906a27325a704 02-Jun-2017 Glade Diviney <mopriadevteam@gmail.com> make add printer dialog less invasive

When visiting the Add Printer activity for the first time with no
manual printers added, it makes sense to automatically prompt the user.
But on subsequent attempts the user may just want to see the list and
shouldn't have the dialog in the way.

With this change, the dialog only appears if the user has no manually-added
printers already.

Test: Use Add-Printer feature, won't show dialog if a printer already added
Change-Id: I5b9e38fa868ca0a4297a5dcc314d48d56fe7fee6
Signed-off-by: Glade Diviney <mopriadevteam@gmail.com>
om/android/bips/discovery/Discovery.java
om/android/bips/ui/ManualPrintersFragment.java
29b50e168dadd6354cd124e20343a6203f378015 12-Jun-2017 Glade Diviney <mopriadevteam@gmail.com> improve printer discovery am: e604a9fafd
am: 97d2fc8db8

Change-Id: I53ef64d68e1a7135c38a5e73ab8213542d2b40f7
e604a9fafd50bca9fbc86ca525196efb6f1b70b1 03-Jun-2017 Glade Diviney <mopriadevteam@gmail.com> improve printer discovery

When doing IPP Get-Attribute requests, printers that are missing or slow to respond
can slow down the discovery process dramatically. This change allows more control
over timeout, prioritization, and cancellation of Get-Attribute requests. A "first pass"
with a short timeout puts all well-behaved printers in front of the user quickly,
and a second pass with a longer timeout catches any stragglers for completeness.

Manual printer discovery is also improved here, by looking at :80/ipp/print,
capturing the full printer name from printer-dns-sd-name or printer-info if necessary,
and more consistently presenting the correct name to the user.

Test: Visit the printer list on networks having multiple printers
Change-Id: I9bfdbf17e617e8cc073f88bd03c6be1e4dfd21e7
Signed-off-by: Glade Diviney <mopriadevteam@gmail.com>
om/android/bips/LocalDiscoverySession.java
om/android/bips/LocalPrintJob.java
om/android/bips/LocalPrinter.java
om/android/bips/discovery/DiscoveredPrinter.java
om/android/bips/discovery/Discovery.java
om/android/bips/discovery/ManualDiscovery.java
om/android/bips/discovery/MultiDiscovery.java
om/android/bips/ipp/Backend.java
om/android/bips/ipp/CapabilitiesCache.java
om/android/bips/ipp/GetCapabilitiesTask.java
8e5bb9faa4c15090015f176fc1982c678da79205 07-Apr-2017 Philip P. Moltmann <moltmann@google.com> Merge "Suppress printers that belong to other services" into oc-dev
f949dfa10fd8cf312596a0b9c91e9a05e7fbbdee 04-Apr-2017 Philip P. Moltmann <moltmann@google.com> Suppress printers that belong to other services

Use the printservicerecommendation service to get a mapping from
printer addresses to services that can handle the printers

Then query if the any print service that could handle the printer is
enabled. If it is enabled do not show printer.

Fixes: 35765644
Test: Enable HP print service while a HP printer is visible to the
default print service
Change-Id: Ief6ae698abdd786acff367cc876cc89a6626beeb
om/android/bips/LocalDiscoverySession.java
om/android/bips/LocalPrinter.java
0ce82dfafd48b3e44072291bdcefadb7692ade6f 06-Apr-2017 Glade Diviney <mopriadevteam@gmail.com> fix incorrect use of FileDescriptor am: 086d839a55 am: b1da0bdda7 am: 6bb54a74e9
am: 76c4e1b166

Change-Id: I64155391c03eeed8336453b69ef788efa99769c3
(cherry picked from commit e8f6630b0692778683b3d332d84a35c6c7e6d06f)
om/android/bips/ipp/Backend.java
om/android/bips/ipp/StartJobTask.java
086d839a5569f261fe83473ebfed37cc8ab1b433 06-Apr-2017 Glade Diviney <mopriadevteam@gmail.com> fix incorrect use of FileDescriptor

PrintDocument.getData() returns a ParcelFileDescriptor which must be retained
closed gracefully and calling .getFileDescriptor() does not assure this.
The result is a possible IOException when the ParcelFileDescriptor is finalized
and closed out from under the FileDescriptor.

Test: any print will exercise this code

Change-Id: I6644f1d5aee5f26920fa36e50cf5b9a000f6cf7d
Signed-off-by: Glade Diviney <mopriadevteam@gmail.com>
om/android/bips/ipp/Backend.java
om/android/bips/ipp/StartJobTask.java
99f9b8a26fa612f14e2376df5cd319d19e874e42 05-Apr-2017 Philip P. Moltmann <moltmann@google.com> Add proper icons for default print service.

Bug: 35766257
Test: Looked at icons (in settings and print spooler) on angler
Change-Id: I74b59174f3890e764180dd12dc946230b664087f
om/android/bips/LocalPrinter.java
om/android/bips/ui/ManualPrintersFragment.java
3bf66744d61d18c66d46f2608de0467ad3df0268 30-Nov-2016 Mopria <mopriaplay@gmail.com> Built-In Print Service

The Built-In Print Service implements a standard Android Print
Service and allows printing to Wi-Fi enabled printers on the users's
local network.

Printers must support mDNS discovery and the IPP protocol, and must
allow jobs to be sent in PCLm, PWG-raster, or PDF formats.

Internally, this service implements job control, page rendering, and
printer interactions in native code. This code relies on
libjpeg-turbo for JPEG encoding functions required by PCLm, and
selected portions of CUPS for direct interactions with printers.

Test: ./gradlew test
Change-Id: Ib2dca0190ba4abe028da1d9cd62308733ecce7b5
Signed-off-by: Mopria <mopriaplay@gmail.com>
om/android/bips/BuiltInPrintService.java
om/android/bips/JobQueue.java
om/android/bips/LocalDiscoverySession.java
om/android/bips/LocalPrintJob.java
om/android/bips/LocalPrinter.java
om/android/bips/discovery/DiscoveredPrinter.java
om/android/bips/discovery/Discovery.java
om/android/bips/discovery/ManualDiscovery.java
om/android/bips/discovery/MdnsDiscovery.java
om/android/bips/discovery/MultiDiscovery.java
om/android/bips/discovery/NsdResolveQueue.java
om/android/bips/ipp/Backend.java
om/android/bips/ipp/CancelJobTask.java
om/android/bips/ipp/CapabilitiesCache.java
om/android/bips/ipp/GetCapabilitiesTask.java
om/android/bips/ipp/JobStatus.java
om/android/bips/ipp/StartJobTask.java
om/android/bips/jni/BackendConstants.java
om/android/bips/jni/JobCallback.java
om/android/bips/jni/JobCallbackParams.java
om/android/bips/jni/LocalJobParams.java
om/android/bips/jni/LocalPrinterCapabilities.java
om/android/bips/jni/MediaSizes.java
om/android/bips/jni/PdfRender.java
om/android/bips/jni/SizeD.aidl
om/android/bips/jni/SizeD.java
om/android/bips/render/IPdfRender.aidl
om/android/bips/render/PdfRenderService.java
om/android/bips/ui/AddManualPrinterDialog.java
om/android/bips/ui/AddPrintersActivity.java
om/android/bips/ui/ManualPrintersFragment.java
om/android/bips/util/FileUtils.java
om/android/bips/util/WifiMonitor.java