gecko-dev/dom/file/FileBlobImpl.h
Bogdan Tara 240b24fbe1 Backed out 5 changesets (bug 1534712, bug 1545758) for test_ext_webrequest_upload.html failures CLOSED TREE
Backed out changeset 447b0f5a5802 (bug 1545758)
Backed out changeset 0528f8f11814 (bug 1545758)
Backed out changeset d85c68071b54 (bug 1545758)
Backed out changeset 10b380bc5b0c (bug 1545758)
Backed out changeset 57136f4e7b54 (bug 1534712)
2019-04-25 12:36:51 +03:00

81 lines
2.7 KiB
C++

/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* vim: set ts=8 sts=2 et sw=2 tw=80: */
/* 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 mozilla_dom_FileBlobImpl_h
#define mozilla_dom_FileBlobImpl_h
#include "mozilla/dom/BaseBlobImpl.h"
class nsIFile;
namespace mozilla {
namespace dom {
class FileBlobImpl : public BaseBlobImpl {
public:
NS_INLINE_DECL_REFCOUNTING_INHERITED(FileBlobImpl, BaseBlobImpl)
// Create as a file
explicit FileBlobImpl(nsIFile* aFile);
// Create as a file
FileBlobImpl(const nsAString& aName, const nsAString& aContentType,
uint64_t aLength, nsIFile* aFile);
FileBlobImpl(const nsAString& aName, const nsAString& aContentType,
uint64_t aLength, nsIFile* aFile, int64_t aLastModificationDate);
// Create as a file with custom name
FileBlobImpl(
nsIFile* aFile, const nsAString& aName, const nsAString& aContentType,
const nsAString& aBlobImplType = NS_LITERAL_STRING("FileBlobImpl"));
// Overrides
virtual uint64_t GetSize(ErrorResult& aRv) override;
virtual void GetType(nsAString& aType) override;
virtual int64_t GetLastModified(ErrorResult& aRv) override;
virtual void SetLastModified(int64_t aLastModified) override;
virtual void GetMozFullPathInternal(nsAString& aFullPath,
ErrorResult& aRv) const override;
virtual void CreateInputStream(nsIInputStream** aInputStream,
ErrorResult& aRv) override;
virtual bool IsDirectory() const override;
// We always have size and date for this kind of blob.
virtual bool IsSizeUnknown() const override { return false; }
virtual bool IsDateUnknown() const override { return false; }
void SetName(const nsAString& aName) { mName = aName; }
void SetType(const nsAString& aType) { mContentType = aType; }
int64_t GetFileId() override { return mFileId; }
void SetFileId(int64_t aFileId) { mFileId = aFileId; }
protected:
virtual ~FileBlobImpl() = default;
// Create slice
FileBlobImpl(const FileBlobImpl* aOther, uint64_t aStart, uint64_t aLength,
const nsAString& aContentType);
virtual already_AddRefed<BlobImpl> CreateSlice(uint64_t aStart,
uint64_t aLength,
const nsAString& aContentType,
ErrorResult& aRv) override;
nsCOMPtr<nsIFile> mFile;
bool mWholeFile;
int64_t mFileId;
};
} // namespace dom
} // namespace mozilla
#endif // mozilla_dom_FileBlobImpl_h