// Copyright 2011 The Closure Library Authors. All Rights Reserved. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS-IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. /** * @fileoverview A wrapper for the HTML5 FileError object. * */ goog.provide('goog.fs.Error'); goog.provide('goog.fs.Error.ErrorCode'); goog.require('goog.debug.Error'); goog.require('goog.string'); /** * A filesystem error. Since the filesystem API is asynchronous, stack traces * are less useful for identifying where errors come from, so this includes a * large amount of metadata in the message. * * @param {number} code The error code for the error. * @param {string} action The action being undertaken when the error was raised. * @constructor * @extends {goog.debug.Error} */ goog.fs.Error = function(code, action) { goog.base(this, goog.string.subs('Error %s: %s', action, goog.fs.Error.getDebugMessage(code))); this.code = /** @type {goog.fs.Error.ErrorCode} */ (code); }; goog.inherits(goog.fs.Error, goog.debug.Error); /** * Error codes for file errors. * @see http://www.w3.org/TR/file-system-api/#idl-def-FileException * * @enum {number} */ goog.fs.Error.ErrorCode = { NOT_FOUND: 1, SECURITY: 2, ABORT: 3, NOT_READABLE: 4, ENCODING: 5, NO_MODIFICATION_ALLOWED: 6, INVALID_STATE: 7, SYNTAX: 8, INVALID_MODIFICATION: 9, QUOTA_EXCEEDED: 10, TYPE_MISMATCH: 11, PATH_EXISTS: 12 }; /** * @param {number} errorCode The error code for the error. * @return {string} A debug message for the given error code. These messages are * for debugging only and are not localized. */ goog.fs.Error.getDebugMessage = function(errorCode) { switch (errorCode) { case goog.fs.Error.ErrorCode.NOT_FOUND: return 'File or directory not found'; case goog.fs.Error.ErrorCode.SECURITY: return 'Insecure or disallowed operation'; case goog.fs.Error.ErrorCode.ABORT: return 'Operation aborted'; case goog.fs.Error.ErrorCode.NOT_READABLE: return 'File or directory not readable'; case goog.fs.Error.ErrorCode.ENCODING: return 'Invalid encoding'; case goog.fs.Error.ErrorCode.NO_MODIFICATION_ALLOWED: return 'Cannot modify file or directory'; case goog.fs.Error.ErrorCode.INVALID_STATE: return 'Invalid state'; case goog.fs.Error.ErrorCode.SYNTAX: return 'Invalid line-ending specifier'; case goog.fs.Error.ErrorCode.INVALID_MODIFICATION: return 'Invalid modification'; case goog.fs.Error.ErrorCode.QUOTA_EXCEEDED: return 'Quota exceeded'; case goog.fs.Error.ErrorCode.TYPE_MISMATCH: return 'Invalid filetype'; case goog.fs.Error.ErrorCode.PATH_EXISTS: return 'File or directory already exists at specified path'; default: return 'Unrecognized error'; } };