commit | 187ececa10a1728afb7e93748799e3b450e69a61 | [log] [tgz] |
---|---|---|
author | xiangdong kong <xiangdongkong@google.com> | Fri May 17 22:31:35 2024 |
committer | Chromium LUCI CQ <chromium-scoped@luci-project-accounts.iam.gserviceaccount.com> | Fri May 17 22:31:35 2024 |
tree | 1ab1f07688545a5cc6781143d92e7b2fcd137dd8 | |
parent | 7a94bc76d8a27ce948fda22e4416463980e18c51 [diff] |
printing: Implement Get Lacros extension printers on ash-chrome When Lacros is enabled, the Print Preview UI initialized from ash cannot access printer extensions, as these extensions reside solely within the separate Lacros process. Add a mojom service definition to enable access to Lacros's extension printers from ash side. - The ExtensionPrinterServiceProvider interface is implemented by lacros-chrome. It allows ash to query lacros extension printers. More methods will be added in followup CLs. - The ExtensionPrinterService interface is implemented on ash. It provides two methods: 1) RegisterServiceProvider which allows Lacros to register its ExtensionPrinterServiceProvider implementation with ash so that ash can use the provider to communicate with lacros extension printers. 2) PrintersAdded which will be used by lacros to report extension printers back to ash after ash sends a get printers request. The method should be called once per extension per request. ExtensionPrinterServiceSetupLacros is responsible for observing profile creation events to create a new ExtensionPrinterServiceProvider instance when a profile is added. Since we limit to loading extension printers from the main profile, the ExtensionPrinterServiceProvider will only registers itself with ash when the profile is the main one. ExtensionPrinterServiceAsh implements the ExtensionPrinterService interface on ash side. It acts as the bridge between Print preview UI on ash and the ExtensionPrinterServiceProvider on lacros. ExtensionPrinterServiceAsh has a handler to handle disconnected events in case a lacros process crashes. - Add ExtensionPrinterHandlerAdapterAsh to connect Print Preview UI to the ExtensionPrinterServiceAsh on ash side. It delegates all the hard works required to communicate with lacros extensions through the ExtensionPrinterServiceAsh. - Update PrintPreviewHandler to use ExtensionPrinterHandlerAdapterAsh as its extension printer handler when lacros is enabled. - Implement the DispatchStartGetPrinters method in ExtensionPrinterServiceProviderLacros by delegating requests to the extension printer handler on lacros. Following methods will be added to the ExtensionPrinterServiceProvider interface in followup CLs. - DispatchStartGetCapability. - DispatchStartPrint. - DispatchStartGrantPrinterAccess. Screenshots: - Print preview on Gallery: http://screen/4hXgTcpUUYSJFyX.png. - Extension printers loaded: http://screen/6tDNgoZkErHzQKj.png. that the Gallery can see the printers offered by the extensions when lacros is the only browser. Bug: b:40273973 Test: manually tested on DUT using a test printer extension and observed Change-Id: I733fc9343c4af6515da545e5223fe68f4d74dc3f Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5506694 Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com> Reviewed-by: Erik Chen <erikchen@chromium.org> Commit-Queue: Xiangdong Kong <xiangdongkong@google.com> Reviewed-by: Jenny Zhang <jennyz@chromium.org> Cr-Commit-Position: refs/heads/main@{#1302891}
Chromium is an open-source browser project that aims to build a safer, faster, and more stable way for all users to experience the web.
The project's web site is https://www.chromium.org.
To check out the source code locally, don't use git clone
! Instead, follow the instructions on how to get the code.
Documentation in the source is rooted in docs/README.md.
Learn how to Get Around the Chromium Source Code Directory Structure.
For historical reasons, there are some small top level directories. Now the guidance is that new top level directories are for product (e.g. Chrome, Android WebView, Ash). Even if these products have multiple executables, the code should be in subdirectories of the product.
If you found a bug, please file it at https://crbug.com/new.