dom/indexedDB/FileManager.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
     2 /* vim: set ts=2 et sw=2 tw=80: */
     3 /* This Source Code Form is subject to the terms of the Mozilla Public
     4  * License, v. 2.0. If a copy of the MPL was not distributed with this
     5  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
     7 #ifndef mozilla_dom_indexeddb_filemanager_h__
     8 #define mozilla_dom_indexeddb_filemanager_h__
    10 #include "IndexedDatabase.h"
    12 #include "nsIDOMFile.h"
    13 #include "nsIFile.h"
    15 #include "mozilla/dom/quota/PersistenceType.h"
    16 #include "mozilla/dom/quota/StoragePrivilege.h"
    17 #include "nsDataHashtable.h"
    19 class mozIStorageConnection;
    21 BEGIN_INDEXEDDB_NAMESPACE
    23 class FileInfo;
    25 class FileManager MOZ_FINAL
    26 {
    27   friend class FileInfo;
    29   typedef mozilla::dom::quota::PersistenceType PersistenceType;
    30   typedef mozilla::dom::quota::StoragePrivilege StoragePrivilege;
    32 public:
    33   FileManager(PersistenceType aPersistenceType, const nsACString& aGroup,
    34               const nsACString& aOrigin, StoragePrivilege aPrivilege,
    35               const nsAString& aDatabaseName)
    36   : mPersistenceType(aPersistenceType), mGroup(aGroup), mOrigin(aOrigin),
    37     mPrivilege(aPrivilege), mDatabaseName(aDatabaseName), mLastFileId(0),
    38     mInvalidated(false)
    39   { }
    41   NS_INLINE_DECL_THREADSAFE_REFCOUNTING(FileManager)
    43   PersistenceType Type()
    44   {
    45     return mPersistenceType;
    46   }
    48   const nsACString& Group() const
    49   {
    50     return mGroup;
    51   }
    53   const nsACString& Origin() const
    54   {
    55     return mOrigin;
    56   }
    58   const StoragePrivilege& Privilege() const
    59   {
    60     return mPrivilege;
    61   }
    63   const nsAString& DatabaseName() const
    64   {
    65     return mDatabaseName;
    66   }
    68   bool Invalidated() const
    69   {
    70     return mInvalidated;
    71   }
    73   nsresult Init(nsIFile* aDirectory,
    74                 mozIStorageConnection* aConnection);
    76   nsresult Invalidate();
    78   already_AddRefed<nsIFile> GetDirectory();
    80   already_AddRefed<nsIFile> GetJournalDirectory();
    82   already_AddRefed<nsIFile> EnsureJournalDirectory();
    84   already_AddRefed<FileInfo> GetFileInfo(int64_t aId);
    86   already_AddRefed<FileInfo> GetNewFileInfo();
    88   static already_AddRefed<nsIFile> GetFileForId(nsIFile* aDirectory,
    89                                                 int64_t aId);
    91   static nsresult InitDirectory(nsIFile* aDirectory,
    92                                 nsIFile* aDatabaseFile,
    93                                 PersistenceType aPersistenceType,
    94                                 const nsACString& aGroup,
    95                                 const nsACString& aOrigin);
    97   static nsresult GetUsage(nsIFile* aDirectory, uint64_t* aUsage);
    99 private:
   100   // Private destructor, to discourage deletion outside of Release():
   101   ~FileManager()
   102   {
   103   }
   105   PersistenceType mPersistenceType;
   106   nsCString mGroup;
   107   nsCString mOrigin;
   108   StoragePrivilege mPrivilege;
   109   nsString mDatabaseName;
   111   nsString mDirectoryPath;
   112   nsString mJournalDirectoryPath;
   114   int64_t mLastFileId;
   116   // Protected by IndexedDatabaseManager::FileMutex()
   117   nsDataHashtable<nsUint64HashKey, FileInfo*> mFileInfos;
   119   bool mInvalidated;
   120 };
   122 END_INDEXEDDB_NAMESPACE
   124 #endif // mozilla_dom_indexeddb_filemanager_h__

mercurial