Commit eb1818d0 authored by Benjamin Smedberg's avatar Benjamin Smedberg
Browse files

Bug 880735 part B - add .getPluginTagForType and make .getBlocklistStateForType scriptable, r=johns

parent c82d472d
Loading
Loading
Loading
Loading
+16 −1
Changes for dom/plugins/base/nsIPluginHost.idl: 16 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -20,7 +20,7 @@ interface nsIPluginPlayPreviewInfo : nsISupports
  readonly attribute AUTF8String redirectURL;
};

[scriptable, uuid(15f97490-7bdf-4947-885c-9258072af878)]
[scriptable, uuid(e8fe94f0-b877-46d0-931a-090967fb1e83)]
interface nsIPluginHost : nsISupports
{
  /**
@@ -97,9 +97,24 @@ interface nsIPluginHost : nsISupports

  ACString getPermissionStringForType(in AUTF8String mimeType);

  /**
   * Get the nsIPluginTag for this MIME type. This method works with both
   * enabled and disabled/blocklisted plugins, but an enabled plugin will
   * always be returned if available.
   *
   * @throws NS_ERROR_NOT_AVAILABLE if no plugin is available for this MIME
   *         type.
   */
  nsIPluginTag getPluginTagForType(in AUTF8String mimeType);

  /**
   * Get the nsIPluginTag state for this MIME type.
   */
  unsigned long getStateForType(in AUTF8String mimeType);

  /**
   * Get the blocklist state for a MIME type.
   */
  uint32_t getBlocklistStateForType(in string aMimeType);
};
+19 −1
Changes for dom/plugins/base/nsPluginHost.cpp: 19 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -1051,10 +1051,28 @@ nsPluginHost::PluginExistsForType(const char* aMimeType)
  return nullptr != plugin;
}

NS_IMETHODIMP
nsPluginHost::GetPluginTagForType(const nsACString& aMimeType,
                                  nsIPluginTag** aResult)
{
  nsPluginTag* plugin = FindPluginForType(aMimeType.Data(), true);
  if (!plugin) {
    plugin = FindPluginForType(aMimeType.Data(), false);
  }
  if (!plugin) {
    return NS_ERROR_NOT_AVAILABLE;
  }
  NS_ADDREF(*aResult = plugin);
  return NS_OK;
}

NS_IMETHODIMP
nsPluginHost::GetStateForType(const nsACString &aMimeType, uint32_t* aResult)
{
  nsPluginTag *plugin = FindPluginForType(aMimeType.Data(), true);
  if (!plugin) {
    plugin = FindPluginForType(aMimeType.Data(), false);
  }
  if (!plugin) {
    return NS_ERROR_UNEXPECTED;
  }
@@ -1062,7 +1080,7 @@ nsPluginHost::GetStateForType(const nsACString &aMimeType, uint32_t* aResult)
  return plugin->GetEnabledState(aResult);
}

nsresult
NS_IMETHODIMP
nsPluginHost::GetBlocklistStateForType(const char *aMimeType, uint32_t *aState)
{
  nsPluginTag *plugin = FindPluginForType(aMimeType, true);
+0 −1
Changes for dom/plugins/base/nsPluginHost.h: 0 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -82,7 +82,6 @@ public:
  bool PluginExistsForType(const char* aMimeType);

  nsresult IsPluginEnabledForExtension(const char* aExtension, const char* &aMimeType);
  nsresult GetBlocklistStateForType(const char *aMimeType, uint32_t *state);

  nsresult GetPluginCount(uint32_t* aPluginCount);
  nsresult GetPlugins(uint32_t aPluginCount, nsIDOMPlugin** aPluginArray);