// Copyright 2017 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 chrome.mojom; import "content/public/common/webplugininfo.mojom"; import "mojo/common/file_path.mojom"; import "mojo/common/string16.mojom"; import "url/mojo/origin.mojom"; import "url/mojo/url.mojom"; // Plugin messages sent from renderer to the host. interface PluginHost { // Tells the browser to show the Flash permission bubble in the same tab. ShowFlashPermissionBubble(); // Tells the browser that there was an error loading a plugin. CouldNotLoadPlugin(mojo.common.mojom.FilePath file_path); // Notifies when a plugin couldn't be loaded because it's outdated. BlockedOutdatedPlugin(PluginRenderer plugin_renderer, string group_id); // Notifies when a plugin couldn't be loaded because it requires a // component update. BlockedComponentUpdatedPlugin(PluginRenderer plugin_renderer, string group_id); }; // Plugin messages sent from renderer to the host requiring user auth actions. interface PluginAuthHost { // Notifies when a plugin couldn't be loaded because it requires // user authorization. BlockedUnauthorizedPlugin(mojo.common.mojom.String16 name, string group_id); }; // These are only used internally, so the order does not matter. enum PluginStatus { kAllowed, // Plugin is blocked, but still can be manually loaded via context menu. kBlocked, // Plugin is blocked by policy, so it cannot be manually loaded. kBlockedByPolicy, // Plugin is blocked, and cannot be manually loaded via context menu. kBlockedNoLoading, kComponentUpdateRequired, kDisabled, // Flash is blocked, but user can click on the placeholder to trigger the // Flash permission prompt. kFlashHiddenPreferHtml, kNotFound, kOutdatedBlocked, kOutdatedDisallowed, kPlayImportantContent, kRestartRequired, kUnauthorized, }; struct PluginInfo { PluginStatus status; content.mojom.WebPluginInfo plugin; string actual_mime_type; string group_identifier; mojo.common.mojom.String16 group_name; }; struct PluginParam { mojo.common.mojom.String16 name; mojo.common.mojom.String16 value; }; interface PluginInfoHost { // Return information about a plugin for the given URL and MIME type. // Includes specific reasons why a plugin can't be used, for example because // it's disabled. [Sync] GetPluginInfo(int32 render_frame_id, url.mojom.Url url, url.mojom.Origin origin, string mime_type) => (PluginInfo plugin_info); // Returns whether any internal plugin supporting |mime_type| is registered // and enabled. Does not determine whether the plugin can actually be // instantiated (e.g. whether it has all its dependencies). // When a plugin is available, the returned |additional_params| contain the // name-value pairs, if any, specified for the *first* non-disabled plugin // found that is registered for |mime_type|. [Sync] IsInternalPluginAvailableForMimeType(string mime_type) => ( array? additional_params); }; // Plugin messages sent from a host to the renderer. interface PluginRenderer { // Notifies a missing plugin placeholder that we have finished downloading // the plugin. FinishedDownloading(); // Notifies a missing plugin placeholder that we have finished component- // updating the plug-in. UpdateSuccess(); // Notifies a missing plugin placeholder that we have failed to // component-update the plug-in. UpdateFailure(); // Notifies a missing plugin placeholder that we have started the component // download. UpdateDownloading(); };