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
|
/*
* Copyright (C) 2012 Research In Motion Limited. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
* Boston, MA 02110-1301 USA
*/
#include "config.h"
#if ENABLE(FILE_SYSTEM)
#include "PlatformAsyncFileSystemCallbacks.h"
#include "Assertions.h"
#include "AsyncFileSystem.h"
#include "AsyncFileSystemBlackBerry.h"
#include "AsyncFileWriterBlackBerry.h"
#include "AsyncFileWriterClient.h"
#include "FileError.h"
#include "FileMetadata.h"
#include <GuardedPointerDeleter.h>
namespace WebCore {
void PlatformAsyncFileSystemCallbacks::notifyOpenFileSystem(BlackBerry::Platform::WebFileSystem* platformFileSystem)
{
ASSERT(platformFileSystem);
m_callbacks->didOpenFileSystem(String::fromUTF8(platformFileSystem->name().c_str()), m_rootURL, createAsyncFileSystem(adoptPtr(platformFileSystem)));
deleteMe();
}
void PlatformAsyncFileSystemCallbacks::notifySucceed()
{
m_callbacks->didSucceed();
deleteMe();
}
void PlatformAsyncFileSystemCallbacks::notifyFail(BlackBerry::Platform::WebFileError error)
{
m_callbacks->didFail(static_cast<FileError::ErrorCode>(error));
deleteMe();
}
static inline void getFileMetadata(const BlackBerry::Platform::WebFileInfo& fileInfo, FileMetadata& fileMetadata)
{
fileMetadata.modificationTime = fileInfo.m_modificationTime;
fileMetadata.length = fileInfo.m_length;
fileMetadata.type = static_cast<FileMetadata::Type>(fileInfo.m_type);
fileMetadata.platformPath = String::fromUTF8(fileInfo.m_platformPath.c_str());
}
void PlatformAsyncFileSystemCallbacks::notifyReadMetadata(const BlackBerry::Platform::WebFileInfo& fileInfo)
{
FileMetadata fileMetadata;
getFileMetadata(fileInfo, fileMetadata);
m_callbacks->didReadMetadata(fileMetadata);
deleteMe();
}
void PlatformAsyncFileSystemCallbacks::notifyCreateSnapshotFileAndReadMetadata(const BlackBerry::Platform::WebFileInfo& fileInfo)
{
FileMetadata fileMetadata;
getFileMetadata(fileInfo, fileMetadata);
m_callbacks->didCreateSnapshotFile(fileMetadata, 0);
deleteMe();
}
void PlatformAsyncFileSystemCallbacks::notifyReadDirectory(const std::vector<BlackBerry::Platform::WebFileSystemEntry>& entries, bool hasMore)
{
for (size_t i = 0; i < entries.size(); ++i)
m_callbacks->didReadDirectoryEntry(String::fromUTF8(entries[i].m_name.c_str()), entries[i].m_isDirectory);
m_callbacks->didReadDirectoryEntries(hasMore);
deleteMe();
}
void PlatformAsyncFileSystemCallbacks::notifyCreateFileWriter(BlackBerry::Platform::WebFileWriter* platformWriter, long long length)
{
m_callbacks->didCreateFileWriter(createAsyncFileWriter(adoptPtr(platformWriter)), length);
deleteMe();
}
PassOwnPtr<AsyncFileSystem> PlatformAsyncFileSystemCallbacks::createAsyncFileSystem(PassOwnPtr<BlackBerry::Platform::WebFileSystem> platformFileSystem)
{
return AsyncFileSystemBlackBerry::create(platformFileSystem);
}
PassOwnPtr<AsyncFileWriter> PlatformAsyncFileSystemCallbacks::createAsyncFileWriter(PassOwnPtr<BlackBerry::Platform::WebFileWriter> platformWriter)
{
ASSERT(m_writerClient);
BlackBerry::Platform::WebFileWriter* platformWriterPtr = platformWriter.get();
OwnPtr<AsyncFileWriterBlackBerry> writer = AsyncFileWriterBlackBerry::create(platformWriter, m_writerClient);
platformWriterPtr->setClient(writer->platformWriterClient());
return writer.release();
}
void PlatformAsyncFileSystemCallbacks::deleteMe()
{
BlackBerry::Platform::GuardedPointerDeleter::deleteOnThread(BlackBerry::Platform::webKitThreadMessageClient(), this);
}
} // namespace WebCore
#endif
|