summaryrefslogtreecommitdiffstats
path: root/netwerk/cache2/nsICacheStorageService.idl
blob: f0a4cf5b652af3f5a42f806feec4e93f28196a4b (plain)
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
/* 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 nsICacheStorage;
interface nsILoadContextInfo;
interface nsIEventTarget;
interface nsICacheStorageConsumptionObserver;
interface nsICacheStorageVisitor;
interface nsIPrincipal;

/**
 * Provides access to particual cache storages of the network URI cache.
 */
[scriptable, uuid(ae29c44b-fbc3-4552-afaf-0a157ce771e7)]
interface nsICacheStorageService : nsISupports
{
  /**
   * Get storage where entries will only remain in memory, never written
   * to the disk.
   *
   * NOTE: Any existing disk entry for [URL|id-extension] will be doomed
   * prior opening an entry using this memory-only storage.  Result of
   * AsyncOpenURI will be a new and empty memory-only entry.  Using
   * OPEN_READONLY open flag has no effect on this behavior.
   *
   * @param aLoadContextInfo
   *    Information about the loading context, this focuses the storage JAR and
   *    respects separate storage for private browsing.
   */
  nsICacheStorage memoryCacheStorage(in nsILoadContextInfo aLoadContextInfo);

  /**
   * Get storage where entries will be written to disk when not forbidden by
   * response headers.
   */
  nsICacheStorage diskCacheStorage(in nsILoadContextInfo aLoadContextInfo);

  /**
   * Get storage where entries will be written to disk and marked as pinned.
   * These pinned entries are immune to over limit eviction and call of clear()
   * on this service.
   */
  nsICacheStorage pinningCacheStorage(in nsILoadContextInfo aLoadContextInfo);

  /**
   * Evict any cache entry having the same origin of aPrincipal.
   *
   * @param aPrincipal
   *   The principal to compare the entries with.
   */
  void clearOrigin(in nsIPrincipal aPrincipal);

  /**
   * Evict any cache entry which belongs to a base domain. This includes entries
   * partitioned under aBaseDomain and entries which belong to aBaseDomain, but
   * are partitioned under other top level sites.
   * @param aBaseDomain
   *   The base domain to clear cache for.
   */
  void clearBaseDomain(in AString aBaseDomain);

  /**
   * Evict any cache entry having the same originAttributes.
   *
   * @param aOriginAttributes
   *   The origin attributes in string format to compare the entries with.
   */
  void clearOriginAttributes(in AString aOriginAttributes);

  /**
   * Evict the whole cache.
   */
  void clear();

  /**
   * Purge only data of disk backed entries.  Metadata are left for
   * performance purposes.
   */
  const uint32_t PURGE_DISK_DATA_ONLY = 1;
  /**
   * Purge whole disk backed entries from memory.  Disk files will
   * be left unattended.
   */
  const uint32_t PURGE_DISK_ALL = 2;
  /**
   * Purge all entries we keep in memory, including memory-storage
   * entries.  This may be dangerous to use.
   */
  const uint32_t PURGE_EVERYTHING = 3;
  /**
   * Purges data we keep warmed in memory.  Use for tests and for
   * saving memory.
   */
  void purgeFromMemory(in uint32_t aWhat);

  /**
   * I/O thread target to use for any operations on disk
   */
  readonly attribute nsIEventTarget ioTarget;

  /**
   * Asynchronously determine how many bytes of the disk space the cache takes.
   * @see nsICacheStorageConsumptionObserver
   * @param aObserver
   *    A mandatory (weak referred) observer.  Documented at
   *    nsICacheStorageConsumptionObserver.
   *    NOTE: the observer MUST implement nsISupportsWeakReference.
   */
  void asyncGetDiskConsumption(in nsICacheStorageConsumptionObserver aObserver);

  /**
   * Asynchronously visits all storages of the disk cache and memory cache.
   * @see nsICacheStorageVisitor
   * @param aVisitor
   *   A visitor callback.
   * @param aVisitEntries
   *   A boolean indicates whether visits entries.
   */
  void asyncVisitAllStorages(in nsICacheStorageVisitor aVisitor,
                             in boolean aVisitEntries);
};

[scriptable, uuid(7728ab5b-4c01-4483-a606-32bf5b8136cb)]
interface nsICacheStorageConsumptionObserver : nsISupports
{
  /**
   * Callback invoked to answer asyncGetDiskConsumption call. Always triggered
   * on the main thread.
   * NOTE: implementers must also implement nsISupportsWeakReference.
   *
   * @param aDiskSize
   *    The disk consumption in bytes.
   */
  void onNetworkCacheDiskConsumption(in int64_t aDiskSize);
};