// Copyright 2015 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. module extensions.mime_handler; // Information about a stream. struct StreamInfo { // The MIME type of the intercepted URL request. string mime_type; // The original URL that was intercepted. string original_url; // The URL that the stream can be read from. string stream_url; // The ID of the tab that opened the stream. If the stream is not opened in a // tab, it will be -1. int32 tab_id; // The HTTP response headers of the intercepted request stored as a dictionary // mapping header name to header value. If a header name appears multiple // times, the header values are merged in the dictionary and separated by a // ",". Non-ASCII headers are dropped. map response_headers; // Whether the stream is embedded within another document. bool embedded; }; interface MimeHandlerService { // Returns information about the stream associated with this service instance. // If the stream has been aborted, |stream_info| will be null. GetStreamInfo() => (StreamInfo? stream_info); // Aborts the stream associated with this service instance. This is an // idempotent operation. AbortStream() => (); }; // Provides a mime handler guest with control over beforeunload event handling // when running in a PluginDocument. // // For full-frame mime handler guests, an instance of this interface is passed // from the embedding renderer to the browser when creating the mime handler // guest. If the frame hosting the guest requests this interface from the // browser, that instance is provided to the guest. interface BeforeUnloadControl { // Instructs the containing PluginDocument whether to show a beforeunload // dialog. SetShowBeforeUnloadDialog(bool show_dialog) => (); };