blob: 252b9b7b77af1ae08cb962f690a7bf10f41af2f8 [file] [log] [blame]
// 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/public/mojom/base/file_path.mojom";
import "mojo/public/mojom/base/string16.mojom";
import "url/mojom/origin.mojom";
import "url/mojom/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_base.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_base.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_base.mojom.String16 group_name;
};
struct PluginParam {
mojo_base.mojom.String16 name;
mojo_base.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);
};
// 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();
};