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 (4a108e94d3e2)

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
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* 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 "nsISupports.idl"
#include "nsIThread.idl"
#include "nsIPrincipal.idl"
#include "nsIFile.idl"

%{C++
#include "nsTArray.h"
#include "nsStringGlue.h"
class GMPAudioDecoderProxy;
class GMPDecryptorProxy;
class GMPVideoDecoderProxy;
class GMPVideoEncoderProxy;
class GMPVideoHost;
%}

[ptr] native GMPVideoDecoderProxy(GMPVideoDecoderProxy);
[ptr] native GMPVideoEncoderProxy(GMPVideoEncoderProxy);
[ptr] native GMPVideoHost(GMPVideoHost);
[ptr] native MessageLoop(MessageLoop);
[ptr] native TagArray(nsTArray<nsCString>);
[ptr] native GMPDecryptorProxy(GMPDecryptorProxy);
[ptr] native GMPAudioDecoderProxy(GMPAudioDecoderProxy);

[scriptable, uuid(46c7cd80-a19d-49e7-a147-ca314ad8d8b0)]
interface mozIGeckoMediaPluginService : nsISupports
{

  /**
   * The GMP thread. Callable from any thread.
   */
  readonly attribute nsIThread thread;

  /**
   * Get a plugin that supports the specified tags.
   * Callable on any thread
   */
  [noscript]
  boolean hasPluginForAPI(in ACString api, in TagArray tags);

  /**
   * Get the version of the plugin that supports the specified tags.
   * Callable on any thread
   */
  [noscript]
  ACString getPluginVersionForAPI(in ACString api,
                                  in TagArray tags);

  /**
   * Get a video decoder that supports the specified tags.
   * The array of tags should at least contain a codec tag, and optionally
   * other tags such as for EME keysystem.
   * Callable only on GMP thread.
   */
  [noscript]
  GMPVideoDecoderProxy getGMPVideoDecoder(in TagArray tags,
                                          [optional] in ACString nodeId,
                                          out GMPVideoHost outVideoHost);

  /**
   * Get a video encoder that supports the specified tags.
   * The array of tags should at least contain a codec tag, and optionally
   * other tags.
   * Callable only on GMP thread.
   */
  [noscript]
  GMPVideoEncoderProxy getGMPVideoEncoder(in TagArray tags,
		                                      [optional] in ACString nodeId,
		                                      out GMPVideoHost outVideoHost);

  // Returns an audio decoder that supports the specified tags.
  // The array of tags should at least contain a codec tag, and optionally
  // other tags such as for EME keysystem.
  // Callable only on GMP thread.
  GMPAudioDecoderProxy getGMPAudioDecoder(in TagArray tags,
                                          [optional] in ACString nodeId);

  // Returns a decryption session manager that supports the specified tags.
  // The array of tags should at least contain a key system tag, and optionally
  // other tags.
  // Callable only on GMP thread.
  GMPDecryptorProxy getGMPDecryptor(in TagArray tags, in ACString nodeId);

  /**
   * Add a directory to scan for gecko media plugins.
   * @note Main-thread API.
   */
  void addPluginDirectory(in AString directory);

  /**
   * Remove a directory for gecko media plugins.
   * @note Main-thread API.
   */
  void removePluginDirectory(in AString directory);

  /**
   * Remove a directory for gecko media plugins and delete it from disk.
   * If |defer| is true, wait until the plugin is unused before removing.
   * @note Main-thread API.
   */
  void removeAndDeletePluginDirectory(in AString directory,
                                      [optional] in bool defer);

  /**
   * Gets the NodeId for a (origin, urlbarOrigin, isInprivateBrowsing) tuple.
   */
  ACString getNodeId(in AString origin,
                     in AString topLevelOrigin,
                     in bool inPrivateBrowsingMode);

  /**
   * Clears storage data associated with the site.
   */
  void forgetThisSite(in AString site);

  /**
   * Returns true if the given node id is allowed to store things
   * persistently on disk. Private Browsing and local content are not
   * allowed to store persistent data.
   */
  bool isPersistentStorageAllowed(in ACString nodeId);

  /**
   * Returns the directory to use as the base for storing data about GMPs.
   */
  nsIFile getStorageDir();

};