DXR is a code search and navigation tool aimed at making sense of large projects. It supports full-text and regex searches as well as structural queries.

Mercurial (6863f516ba38)

VCS Links

Line Code
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 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155
/* -*- Mode: C++; c-basic-offset: 2; indent-tabs-mode: nil; tab-width: 8 -*- */
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

include protocol PPluginInstance;
include protocol PPluginScriptableObject;
include protocol PContent;
include protocol PProfiler;
include protocol PFunctionBroker;

using NPError from "npapi.h";
using NPNVariable from "npapi.h";
using mozilla::dom::NativeThreadId from "mozilla/dom/TabMessageUtils.h";
using class mac_plugin_interposing::NSCursorInfo from "mozilla/plugins/PluginMessageUtils.h";
using struct nsID from "nsID.h";
using struct mozilla::plugins::NPAudioDeviceChangeDetailsIPC from "mozilla/plugins/PluginMessageUtils.h";
using struct mozilla::plugins::NPAudioDeviceStateChangedIPC from "mozilla/plugins/PluginMessageUtils.h";

namespace mozilla {
namespace plugins {

struct PluginSettings
{
  // These settings correspond to NPNVariable. They are fetched from
  // mozilla::plugins::parent::_getvalue.
  bool javascriptEnabled;
  bool asdEnabled;
  bool isOffline;
  bool supportsXembed;
  bool supportsWindowless;

  // These settings come from elsewhere.
  nsCString userAgent;
  bool nativeCursorsSupported;
};

intr protocol PPluginModule
{
  manages PPluginInstance;

both:
  // Window-specific message which instructs the interrupt mechanism to enter
  // a nested event loop for the current interrupt call.
  async ProcessNativeEventsInInterruptCall();

child:
  async InitProfiler(Endpoint<PProfilerChild> aEndPoint);

  async DisableFlashProtectedMode();

  // Sync query to check if a Flash library indicates it
  // supports async rendering mode.
  intr ModuleSupportsAsyncRender()
    returns (bool result);

  // Forces the child process to update its plugin function table.
  intr NP_GetEntryPoints()
    returns (NPError rv);

  intr NP_Initialize(PluginSettings settings)
    returns (NPError rv);

  async PPluginInstance(nsCString aMimeType,
                        nsCString[] aNames,
                        nsCString[] aValues);

  // Implements the synchronous version of NPP_New for when async plugin init
  // is preffed off.
  intr SyncNPP_New(PPluginInstance aActor)
    returns (NPError rv);

  intr NP_Shutdown()
    returns (NPError rv);

  intr OptionalFunctionsSupported()
    returns (bool aURLRedirectNotify, bool aClearSiteData,
             bool aGetSitesWithData);

  async NPP_ClearSiteData(nsCString site, uint64_t flags, uint64_t maxAge, uint64_t aCallbackId);

  async NPP_GetSitesWithData(uint64_t aCallbackId);

  // Windows specific message to set up an audio session in the plugin process
  async SetAudioSessionData(nsID aID,
                            nsString aDisplayName,
                            nsString aIconPath);

  async SetParentHangTimeout(uint32_t seconds);

  intr InitCrashReporter(Shmem shmem)
    returns (NativeThreadId tid);

  async SettingChanged(PluginSettings settings);

  async NPP_SetValue_NPNVaudioDeviceChangeDetails(NPAudioDeviceChangeDetailsIPC changeDetails);
  async NPP_SetValue_NPNVaudioDeviceStateChanged(NPAudioDeviceStateChangedIPC deviceState);

  async InitPluginModuleChild(Endpoint<PPluginModuleChild> endpoint);

  async InitPluginFunctionBroker(Endpoint<PFunctionBrokerChild> endpoint);

parent:
  /**
   * This message is only used on X11 platforms.
   *
   * Send a dup of the plugin process's X socket to the parent
   * process.  In theory, this scheme keeps the plugin's X resources
   * around until after both the plugin process shuts down *and* the
   * parent process closes the dup fd.  This is used to prevent the
   * parent process from crashing on X errors if, e.g., the plugin
   * crashes *just before* a repaint and the parent process tries to
   * use the newly-invalid surface.
   */
  async BackUpXResources(FileDescriptor aXSocketFd);

  // Wake up and process a few native events.  Periodically called by
  // Gtk-specific code upon detecting that the plugin process has
  // entered a nested event loop.  If the browser doesn't process
  // native events, then "livelock" and some other glitches can occur.
  intr ProcessSomeEvents();

  // OS X Specific calls to manage the plugin's window
  // when interposing system calls.
  async PluginShowWindow(uint32_t aWindowId, bool aModal,
                         int32_t aX, int32_t aY,
                         double aWidth, double aHeight);
  async PluginHideWindow(uint32_t aWindowId);

  // OS X Specific calls to allow the plugin to manage the cursor.
  async SetCursor(NSCursorInfo cursorInfo);
  async ShowCursor(bool show);
  async PushCursor(NSCursorInfo cursorInfo);
  async PopCursor();

  sync NPN_SetException(nsCString message);

  async NPN_ReloadPlugins(bool aReloadPages);

  // Notifies the chrome process that a PluginModuleChild linked to a content
  // process was destroyed. The chrome process may choose to asynchronously shut
  // down the plugin process in response.
  async NotifyContentModuleDestroyed();

  // Answers to request about site data
  async ReturnClearSiteData(NPError aRv, uint64_t aCallbackId);

  async ReturnSitesWithData(nsCString[] aSites, uint64_t aCallbackId);

  intr NPN_SetValue_NPPVpluginRequiresAudioDeviceChanges(bool shouldRegister)
    returns (NPError result);
};

} // namespace plugins
} // namespace mozilla