| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // NOTE: This mojom should be kept in sync with the copy in Chromium OS's repo |
| // in TODO(crbug.com/945409): Update this with CrOS side mojom copy. |
| |
| module cups_proxy.mojom; |
| |
| struct HttpHeader { |
| string key; |
| string value; |
| }; |
| |
| // Implemented by the CupsProxyService; this service runs in Chrome and |
| // supports serving CUPS printing requests from VMs on ChromeOS (currently |
| // just PluginVM). |
| interface CupsProxier { |
| // Expects, and strictly enforces, that |request| be a well-formatted IPP |
| // printing request. If so, the service integrates with the Chrome printing |
| // stack to correctly proxy it to the CUPS daemon, returning the resulting |
| // IPP response. Invalid IPP requests will generate an appropriate error IPP |
| // response. |
| // |
| // Note: This service expects only one request at a time; any further |
| // concurrent requests will fail with an empty IPP response, i.e. empty |
| // returned headers and ipp_message. |
| ProxyRequest@0(string method, string url, string version, |
| array<HttpHeader> headers, array<uint8> body) => |
| (array<HttpHeader> headers, array<uint8> ipp_message, |
| [MinVersion=1] int32 http_status_code); |
| }; |