image/imgICache.idl
author Henrik Skupin <mail@hskupin.info>
Fri, 30 Nov 2018 13:27:22 +0000
changeset 448968 cd370c35d88d82c719e7b3d70ae1da003c8cb7f6
parent 423275 2a94bdf78194df4c5ff16769310abe152534c98f
child 452446 f0a91d36587266d7454a450c6044d573664fbed5
permissions -rw-r--r--
Bug 1511311 - [marionette] GeckoInstance classes should not overwrite already set custom preferences. r=automatedtester Custom preferences as passed into both classes via the constructor are getting set in the base GeckoInstance class. But both the DesktopInstance and FennecInstance classes could override those custom preferences if they have the same preference set as required preference. As such the custom preference doesn't have any effect. This patch allows both classes to override required prefs with a different value. Differential Revision: https://phabricator.services.mozilla.com/D13522

/* -*- 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"

interface imgIRequest;
interface nsIDocument;
interface nsIPrincipal;
interface nsIProperties;
interface nsIURI;

webidl Document;

%{ C++
namespace mozilla {
class OriginAttributes;
} // mozilla namespace
%}

[ptr] native OriginAttributesPtr(mozilla::OriginAttributes);

/**
 * imgICache interface
 *
 * @author Stuart Parmenter <pavlov@netscape.com>
 * @version 0.1
 * @see imagelib2
 */
[scriptable, builtinclass, uuid(bfdf23ff-378e-402e-8a6c-840f0c82b6c3)]
interface imgICache : nsISupports
{
  /**
   * Evict images from the cache.
   *
   * @param chrome If TRUE,  evict only chrome images.
   *               If FALSE, evict everything except chrome images.
   */
  void clearCache(in boolean chrome);

  /**
   * Evict images from the cache.
   *
   * @param uri The URI to remove.
   * @param doc The document to remove the cache entry for.
   * @throws NS_ERROR_NOT_AVAILABLE if \a uri was unable to be removed from
   * the cache.
   */
  [noscript] void removeEntry(in nsIURI uri, [optional] in Document doc);

  /**
   * Evict images from the cache with the same origin and the same
   * originAttributes of the passed principal.
   *
   * @param aPrincipal The principal
   */
  void removeEntriesFromPrincipal(in nsIPrincipal aPrincipal);

  /**
   * Find Properties
   * Used to get properties such as 'type' and 'content-disposition'
   * 'type' is a nsISupportsCString containing the images' mime type such as
   * 'image/png'
   * 'content-disposition' will be a nsISupportsCString containing the header
   * If you call this before any data has been loaded from a URI, it will
   * succeed, but come back empty.
   *
   * Hopefully this will be removed with bug 805119
   *
   * @param uri The URI to look up.
   * @param doc Optional pointer to the document that the cache entry belongs to.
   * @returns NULL if the URL was not found in the cache
   */
  [must_use]
  nsIProperties findEntryProperties(in nsIURI uri,
                                    [optional] in Document doc);

  /**
   * Make this cache instance respect private browsing notifications. This
   * entails clearing the chrome and content caches whenever the
   * last-pb-context-exited notification is observed.
   */
  void respectPrivacyNotifications();

  /**
   * Clear the image cache for a document.  Controlled documents are responsible
   * for doing this manually when they get destroyed.
   */
  [noscript, notxpcom]
  void clearCacheForControlledDocument(in nsIDocument doc);
};