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 (5350524bb654)

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 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171
/* -*- 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 PCrashReporter;
include protocol PContent;
include ProfilerTypes;

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";

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
{
  bridges PContent, PPluginModule;

  manages PPluginInstance;
  manages PCrashReporter;

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

child:
  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 AsyncNP_Initialize(PluginSettings settings);

  async PPluginInstance(nsCString aMimeType,
                        uint16_t aMode,
                        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);

  // Implements the async plugin init version of NPP_New.
  async AsyncNPP_New(PPluginInstance aActor);

  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 PCrashReporter()
    returns (NativeThreadId tid, uint32_t processType);

  /**
   * Control the Gecko Profiler in the plugin process.
   */
  async StartProfiler(ProfilerInitParams params);
  async StopProfiler();

  async GatherProfile();

  async SettingChanged(PluginSettings settings);

  async NPP_SetValue_NPNVaudioDeviceChangeDetails(NPAudioDeviceChangeDetailsIPC changeDetails);

parent:
  async NP_InitializeResult(NPError aError);

  /**
   * 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,
                         size_t aWidth, size_t 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();

  async Profile(nsCString aProfile);

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

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

  intr GetKeyState(int32_t aVirtKey)
    returns (int16_t aState);

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

} // namespace plugins
} // namespace mozilla