summaryrefslogtreecommitdiffstats
path: root/chromium/chrome/common/plugin.mojom
blob: 252b9b7b77af1ae08cb962f690a7bf10f41af2f8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
// 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();
};