Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1371)

Unified Diff: Source/modules/filesystem/DOMFileSystemBase.cpp

Issue 461543002: [FileAPI] Check Platform availablity before using it in DOMFileSystem (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: move fileSystem() check above Created 6 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « Source/modules/filesystem/DOMFileSystem.cpp ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: Source/modules/filesystem/DOMFileSystemBase.cpp
diff --git a/Source/modules/filesystem/DOMFileSystemBase.cpp b/Source/modules/filesystem/DOMFileSystemBase.cpp
index 77a47a5857103771a5ece6120ddfd991b26d0d97..7843349bd183eadaa0c513298df6ee22de67d0f5 100644
--- a/Source/modules/filesystem/DOMFileSystemBase.cpp
+++ b/Source/modules/filesystem/DOMFileSystemBase.cpp
@@ -73,7 +73,10 @@ DOMFileSystemBase::~DOMFileSystemBase()
blink::WebFileSystem* DOMFileSystemBase::fileSystem() const
{
- return blink::Platform::current()->fileSystem();
+ blink::Platform* platform = blink::Platform::current();
+ if (!platform)
+ return nullptr;
+ return platform->fileSystem();
}
SecurityOrigin* DOMFileSystemBase::securityOrigin() const
@@ -187,6 +190,11 @@ bool DOMFileSystemBase::pathPrefixToFileSystemType(const String& pathPrefix, Fil
void DOMFileSystemBase::getMetadata(const EntryBase* entry, PassOwnPtr<MetadataCallback> successCallback, PassOwnPtr<ErrorCallback> errorCallback, SynchronousType synchronousType)
{
+ if (!fileSystem()) {
+ reportError(errorCallback, FileError::create(FileError::ABORT_ERR));
+ return;
+ }
+
OwnPtr<AsyncFileSystemCallbacks> callbacks(MetadataCallbacks::create(successCallback, errorCallback, m_context, this));
callbacks->setShouldBlockUntilCompletion(synchronousType == Synchronous);
fileSystem()->readMetadata(createFileSystemURL(entry), callbacks.release());
@@ -223,6 +231,11 @@ static bool verifyAndGetDestinationPathForCopyOrMove(const EntryBase* source, En
void DOMFileSystemBase::move(const EntryBase* source, EntryBase* parent, const String& newName, PassOwnPtr<EntryCallback> successCallback, PassOwnPtr<ErrorCallback> errorCallback, SynchronousType synchronousType)
{
+ if (!fileSystem()) {
+ reportError(errorCallback, FileError::create(FileError::ABORT_ERR));
+ return;
+ }
+
String destinationPath;
if (!verifyAndGetDestinationPathForCopyOrMove(source, parent, newName, destinationPath)) {
reportError(errorCallback, FileError::create(FileError::INVALID_MODIFICATION_ERR));
@@ -237,6 +250,11 @@ void DOMFileSystemBase::move(const EntryBase* source, EntryBase* parent, const S
void DOMFileSystemBase::copy(const EntryBase* source, EntryBase* parent, const String& newName, PassOwnPtr<EntryCallback> successCallback, PassOwnPtr<ErrorCallback> errorCallback, SynchronousType synchronousType)
{
+ if (!fileSystem()) {
+ reportError(errorCallback, FileError::create(FileError::ABORT_ERR));
+ return;
+ }
+
String destinationPath;
if (!verifyAndGetDestinationPathForCopyOrMove(source, parent, newName, destinationPath)) {
reportError(errorCallback, FileError::create(FileError::INVALID_MODIFICATION_ERR));
@@ -251,6 +269,11 @@ void DOMFileSystemBase::copy(const EntryBase* source, EntryBase* parent, const S
void DOMFileSystemBase::remove(const EntryBase* entry, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<ErrorCallback> errorCallback, SynchronousType synchronousType)
{
+ if (!fileSystem()) {
+ reportError(errorCallback, FileError::create(FileError::ABORT_ERR));
+ return;
+ }
+
ASSERT(entry);
// We don't allow calling remove() on the root directory.
if (entry->fullPath() == String(DOMFilePath::root)) {
@@ -266,6 +289,11 @@ void DOMFileSystemBase::remove(const EntryBase* entry, PassOwnPtr<VoidCallback>
void DOMFileSystemBase::removeRecursively(const EntryBase* entry, PassOwnPtr<VoidCallback> successCallback, PassOwnPtr<ErrorCallback> errorCallback, SynchronousType synchronousType)
{
+ if (!fileSystem()) {
+ reportError(errorCallback, FileError::create(FileError::ABORT_ERR));
+ return;
+ }
+
ASSERT(entry && entry->isDirectory());
// We don't allow calling remove() on the root directory.
if (entry->fullPath() == String(DOMFilePath::root)) {
@@ -281,13 +309,24 @@ void DOMFileSystemBase::removeRecursively(const EntryBase* entry, PassOwnPtr<Voi
void DOMFileSystemBase::getParent(const EntryBase* entry, PassOwnPtr<EntryCallback> successCallback, PassOwnPtr<ErrorCallback> errorCallback)
{
+ if (!fileSystem()) {
+ reportError(errorCallback, FileError::create(FileError::ABORT_ERR));
+ return;
+ }
+
ASSERT(entry);
String path = DOMFilePath::getDirectory(entry->fullPath());
+
fileSystem()->directoryExists(createFileSystemURL(path), EntryCallbacks::create(successCallback, errorCallback, m_context, this, path, true));
}
void DOMFileSystemBase::getFile(const EntryBase* entry, const String& path, const FileSystemFlags& flags, PassOwnPtr<EntryCallback> successCallback, PassOwnPtr<ErrorCallback> errorCallback, SynchronousType synchronousType)
{
+ if (!fileSystem()) {
+ reportError(errorCallback, FileError::create(FileError::ABORT_ERR));
+ return;
+ }
+
String absolutePath;
if (!pathToAbsolutePath(m_type, entry, path, absolutePath)) {
reportError(errorCallback, FileError::create(FileError::INVALID_MODIFICATION_ERR));
@@ -305,6 +344,11 @@ void DOMFileSystemBase::getFile(const EntryBase* entry, const String& path, cons
void DOMFileSystemBase::getDirectory(const EntryBase* entry, const String& path, const FileSystemFlags& flags, PassOwnPtr<EntryCallback> successCallback, PassOwnPtr<ErrorCallback> errorCallback, SynchronousType synchronousType)
{
+ if (!fileSystem()) {
+ reportError(errorCallback, FileError::create(FileError::ABORT_ERR));
+ return;
+ }
+
String absolutePath;
if (!pathToAbsolutePath(m_type, entry, path, absolutePath)) {
reportError(errorCallback, FileError::create(FileError::INVALID_MODIFICATION_ERR));
@@ -322,6 +366,11 @@ void DOMFileSystemBase::getDirectory(const EntryBase* entry, const String& path,
int DOMFileSystemBase::readDirectory(DirectoryReaderBase* reader, const String& path, PassOwnPtr<EntriesCallback> successCallback, PassOwnPtr<ErrorCallback> errorCallback, SynchronousType synchronousType)
{
+ if (!fileSystem()) {
+ reportError(errorCallback, FileError::create(FileError::ABORT_ERR));
+ return 0;
+ }
+
ASSERT(DOMFilePath::isAbsolute(path));
OwnPtr<AsyncFileSystemCallbacks> callbacks(EntriesCallbacks::create(successCallback, errorCallback, m_context, reader, path));
@@ -332,6 +381,8 @@ int DOMFileSystemBase::readDirectory(DirectoryReaderBase* reader, const String&
bool DOMFileSystemBase::waitForAdditionalResult(int callbacksId)
{
+ if (!fileSystem())
+ return false;
return fileSystem()->waitForAdditionalResult(callbacksId);
}
« no previous file with comments | « Source/modules/filesystem/DOMFileSystem.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698