// Copyright 2017 The Chromium Authors
// 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 {
[EnableIf=enable_plugins]
// Tells the browser that there was an error loading a plugin.
CouldNotLoadPlugin(mojo_base.mojom.FilePath file_path);
// Tells the browser to open a PDF file. Used when no PDF Viewer is
// available, and the user clicks to view a PDF from the placeholder UI.
OpenPDF(url.mojom.Url url);
};
// 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,
kDisabled,
kNotFound,
kPlayImportantContent,
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(url.mojom.Url url,
url.mojom.Origin origin,
string mime_type) => (PluginInfo plugin_info);
};