#include "config.h"
#include "FileException.h"
#include "ExceptionCodeDescription.h"
namespace WebCore {
static struct FileExceptionNameDescription {
const char* const name;
const char* const description;
} fileExceptions[] = {
{ "NOT_FOUND_ERR", "A requested file or directory could not be found at the time an operation was processed." },
{ "SECURITY_ERR", "It was determined that certain files are unsafe for access within a Web application, or that too many calls are being made on file resources." },
{ "ABORT_ERR", "An ongoing operation was aborted, typically with a call to abort()." },
{ "NOT_READABLE_ERR", "The requested file could not be read, typically due to permission problems that have occurred after a reference to a file was acquired." },
{ "ENCODING_ERR", "A URI supplied to the API was malformed, or the resulting Data URL has exceeded the URL length limitations for Data URLs." },
{ "NO_MODIFICATION_ALLOWED_ERR", "An attempt was made to write to a file or directory which could not be modified due to the state of the underlying filesystem." },
{ "INVALID_STATE_ERR", "An operation that depends on state cached in an interface object was made but the state had changed since it was read from disk." },
{ "SYNTAX_ERR", "An invalid or unsupported argument was given, like an invalid line ending specifier." },
{ "INVALID_MODIFICATION_ERR", "The modification request was illegal." },
{ "QUOTA_EXCEEDED_ERR", "The operation failed because it would cause the application to exceed its storage quota." },
{ "TYPE_MISMATCH_ERR", "The path supplied exists, but was not an entry of requested type." },
{ "PATH_EXISTS_ERR", "An attempt was made to create a file or directory where an element already exists." }
};
bool FileException::initializeDescription(ExceptionCode ec, ExceptionCodeDescription* description)
{
if (ec < FileExceptionOffset || ec > FileExceptionMax)
return false;
description->typeName = "DOM File";
description->code = ec - FileExceptionOffset;
description->type = FileExceptionType;
size_t tableSize = WTF_ARRAY_LENGTH(fileExceptions);
size_t tableIndex = ec - NOT_FOUND_ERR;
description->name = tableIndex < tableSize ? fileExceptions[tableIndex].name : 0;
description->description = tableIndex < tableSize ? fileExceptions[tableIndex].description : 0;
return true;
}
}