On Tue, 24 Aug 2021 15:49:00 GMT, Alexander Scherbatiy <alex...@openjdk.org> wrote:
>> The issue is reproduced on macOS Big Sur 11.0.1 with jdk 16.0.1+9. >> >> Create a native macOS app from the Hello.java file, sign and run it in >> sandbox: >> >> import javax.print.*; >> import javax.swing.*; >> >> public class Hello { >> >> public static void main(String[] args) throws Exception { >> SwingUtilities.invokeAndWait(() -> { >> boolean isSandboxed = System.getenv("APP_SANDBOX_CONTAINER_ID") >> != null; >> PrintService defaultPrinter = >> PrintServiceLookup.lookupDefaultPrintService(); >> PrintService[] services = >> PrintServiceLookup.lookupPrintServices(null, null); >> >> StringBuilder builder = new StringBuilder(); >> builder.append("is sandboxed: >> ").append(isSandboxed).append("\n"); >> builder.append("default printer: >> ").append(defaultPrinter).append("\n"); >> int size = services.length; >> for (int i = 0; i < size; i++) { >> >> builder.append("printer[").append(i).append("]=").append(services[i]).append("\n"); >> } >> JOptionPane.showMessageDialog(null, builder.toString()); >> }); >> } >> } >> >> The signed app in sandbox shows null default printer and >> PrintServiceLookup.lookupPrintServices(null, null) returns "Unix Printer: >> lp". >>  >> >> The problem has been discussed on 2d-dev mail list: >> https://mail.openjdk.java.net/pipermail/2d-dev/2017-June/008375.html >> https://mail.openjdk.java.net/pipermail/2d-dev/2017-July/008418.html >> >> According to the discussion: >> >>> I've submitted a DTS incident to Apple and a friend there has followed-up. >>> Their unofficial position is that java should be connecting to the cups >>> interface returned >>> by the cupsServer() function and not changing the interface string to >>> "localhost". >>> Security changes in 10.12.4 reject the TCP connection which they say >>> confuses >>> network-client access with print access. They don't seem interested in >>> loosening that change. >> >> >> The proposed solution is to use the domain socket pathname in >> httpConnect(...) cups function and cupsGetDests(...) to get list of printers >> from cups when the app is signed and is run in sandbox on MacOs. > > Alexander Scherbatiy has updated the pull request incrementally with one > additional commit since the last revision: > > Return null if printers are not found in sandboxed app on MacOS I see that the fix has been inactive for several months. Is there something that I missed and should update from my side (add comments, answer on questions, update commits, or something else)? ------------- PR: https://git.openjdk.java.net/jdk/pull/4861