/* -*- Mode: IDL; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- * * 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 nsIApplicationCache; interface nsIFile; interface nsIURI; interface nsILoadContextInfo; /** * The application cache service manages the set of application cache * groups. */ [scriptable, uuid(03b41c3d-0816-4134-8b2e-4f5afbdb1f06)] interface nsIApplicationCacheService : nsISupports { /** * Create group string identifying cache group according the manifest * URL and the given load context. */ ACString buildGroupID(in nsIURI aManifestURL, in nsILoadContextInfo aLoadContextInfo); /** * Same as buildGroupID method, just doesn't require load context. */ ACString buildGroupIDForApp(in nsIURI aManifestURL, in unsigned long aAppID, in boolean aInBrowser); /** * Create a new, empty application cache for the given cache * group. */ nsIApplicationCache createApplicationCache(in ACString group); /** * Create a new, empty application cache for the given cache * group residing in a custom directory with a custom quota. * * @param group * URL of the manifest * @param directory * Actually a reference to a profile directory where to * create the OfflineCache sub-dir. * @param quota * Optional override of the default quota. */ nsIApplicationCache createCustomApplicationCache(in ACString group, in nsIFile profileDir, in int32_t quota); /** * Get an application cache object for the given client ID. */ nsIApplicationCache getApplicationCache(in ACString clientID); /** * Get the currently active cache object for a cache group. */ nsIApplicationCache getActiveCache(in ACString group); /** * Deactivate the currently-active cache object for a cache group. */ void deactivateGroup(in ACString group); /** * Deletes some or all of an application's cache entries. * * @param appId * The mozIApplication.localId of the application. * * @param discardOnlyBrowserEntries * If true, only entries marked as 'inBrowserElement' are deleted * (this is used by browser applications to delete user browsing * data/history.). If false, *all* entries for the given appId are * deleted (this is used for application uninstallation). */ void discardByAppId(in int32_t appID, in boolean discardOnlyBrowserEntries); /** * Try to find the best application cache to serve a resource. */ nsIApplicationCache chooseApplicationCache(in ACString key, [optional] in nsILoadContextInfo aLoadContextInfo); /** * Flags the key as being opportunistically cached. * * This method should also propagate the entry to other * application caches with the same opportunistic namespace, but * this is not currently implemented. * * @param cache * The cache in which the entry is cached now. * @param key * The cache entry key. */ void cacheOpportunistically(in nsIApplicationCache cache, in ACString key); /** * Get the list of application cache groups. */ void getGroups([optional] out unsigned long count, [array, size_is(count), retval] out string groupIDs); /** * Get the list of application cache groups in the order of * activating time. */ void getGroupsTimeOrdered([optional] out unsigned long count, [array, size_is(count), retval] out string groupIDs); };