2012-08-01 23:29:34 -07:00
|
|
|
/* 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/. */
|
|
|
|
|
|
|
|
#ifndef DeviceStorage_h
|
|
|
|
#define DeviceStorage_h
|
|
|
|
|
|
|
|
#include "nsIDOMDeviceStorage.h"
|
|
|
|
#include "nsIFile.h"
|
2012-07-30 07:58:26 -07:00
|
|
|
#include "nsIPrincipal.h"
|
2012-08-01 23:32:04 -07:00
|
|
|
#include "nsIObserver.h"
|
2012-08-01 23:29:34 -07:00
|
|
|
#include "nsDOMEventTargetHelper.h"
|
|
|
|
|
|
|
|
class nsDOMDeviceStorage MOZ_FINAL
|
|
|
|
: public nsIDOMDeviceStorage
|
|
|
|
, public nsIFileUpdateListener
|
|
|
|
, public nsDOMEventTargetHelper
|
2012-08-01 23:32:04 -07:00
|
|
|
, public nsIObserver
|
2012-08-01 23:29:34 -07:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
NS_DECL_ISUPPORTS
|
|
|
|
NS_DECL_NSIDOMDEVICESTORAGE
|
|
|
|
|
|
|
|
NS_DECL_NSIFILEUPDATELISTENER
|
2012-08-01 23:32:04 -07:00
|
|
|
NS_DECL_NSIOBSERVER
|
2012-08-01 23:29:34 -07:00
|
|
|
NS_DECL_NSIDOMEVENTTARGET
|
|
|
|
NS_DECL_CYCLE_COLLECTION_CLASS_INHERITED(nsDOMDeviceStorage, nsDOMEventTargetHelper)
|
|
|
|
NS_DECL_EVENT_HANDLER(change)
|
|
|
|
|
|
|
|
nsDOMDeviceStorage();
|
|
|
|
|
2012-08-01 23:32:11 -07:00
|
|
|
nsresult Init(nsPIDOMWindow* aWindow, const nsAString &aType);
|
2012-08-01 23:29:34 -07:00
|
|
|
|
2012-08-01 23:32:11 -07:00
|
|
|
void SetRootFileForType(const nsAString& aType);
|
2012-08-01 23:29:34 -07:00
|
|
|
|
|
|
|
static void CreateDeviceStoragesFor(nsPIDOMWindow* aWin,
|
|
|
|
const nsAString &aType,
|
2012-08-01 23:32:11 -07:00
|
|
|
nsDOMDeviceStorage** aStore);
|
2012-08-01 23:29:34 -07:00
|
|
|
void Shutdown();
|
|
|
|
|
|
|
|
private:
|
|
|
|
~nsDOMDeviceStorage();
|
|
|
|
|
|
|
|
nsresult GetInternal(const JS::Value & aName,
|
|
|
|
JSContext* aCx,
|
|
|
|
nsIDOMDOMRequest** aRetval,
|
|
|
|
bool aEditable);
|
|
|
|
|
|
|
|
nsresult EnumerateInternal(const JS::Value & aName,
|
|
|
|
const JS::Value & aOptions,
|
|
|
|
JSContext* aCx,
|
|
|
|
PRUint8 aArgc,
|
|
|
|
bool aEditable,
|
|
|
|
nsIDOMDeviceStorageCursor** aRetval);
|
|
|
|
|
|
|
|
PRInt32 mStorageType;
|
|
|
|
nsCOMPtr<nsIFile> mFile;
|
|
|
|
|
2012-07-30 07:58:26 -07:00
|
|
|
nsCOMPtr<nsIPrincipal> mPrincipal;
|
2012-08-01 23:29:34 -07:00
|
|
|
|
|
|
|
friend class WatchFileEvent;
|
|
|
|
friend class DeviceStorageRequest;
|
|
|
|
|
|
|
|
bool mIsWatchingFile;
|
|
|
|
|
2012-08-09 15:41:18 -07:00
|
|
|
#ifdef MOZ_WIDGET_GONK
|
|
|
|
PRUint32 mLastVolumeState; // Values match nsIVolume.idl
|
|
|
|
void DispatchMountChangeEvent(bool aMounted);
|
|
|
|
#endif
|
|
|
|
|
2012-08-01 23:29:34 -07:00
|
|
|
// nsIDOMDeviceStorage.type
|
|
|
|
enum {
|
|
|
|
DEVICE_STORAGE_TYPE_DEFAULT = 0,
|
|
|
|
DEVICE_STORAGE_TYPE_SHARED,
|
2012-08-03 06:04:35 -07:00
|
|
|
DEVICE_STORAGE_TYPE_EXTERNAL
|
2012-08-01 23:29:34 -07:00
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
#endif
|