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

Unified Diff: ui/file_manager/zip_archiver/unpacker/js/volume.js

Issue 2804453002: Move files from zip_archiver/unpacker/ to zip_archiver/. (Closed)
Patch Set: Move files from zip_archiver/unpacker/ to zip_archiver/. Created 3 years, 8 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
Index: ui/file_manager/zip_archiver/unpacker/js/volume.js
diff --git a/ui/file_manager/zip_archiver/unpacker/js/volume.js b/ui/file_manager/zip_archiver/unpacker/js/volume.js
deleted file mode 100644
index 64fae35b99c899c0f811796be69d745fee9bc7bd..0000000000000000000000000000000000000000
--- a/ui/file_manager/zip_archiver/unpacker/js/volume.js
+++ /dev/null
@@ -1,346 +0,0 @@
-// Copyright 2014 The Chromium OS Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-'use strict';
-
-/**
- * Converts a c/c++ time_t variable to Date.
- * @param {number} timestamp A c/c++ time_t variable.
- * @return {!Date}
- */
-function DateFromTimeT(timestamp) {
- return new Date(1000 * timestamp);
-}
-
-/**
- * Corrects metadata entries fields in order for them to be sent to Files.app.
- * This function runs recursively for every entry in a directory.
- * @param {!Object<string, !EntryMetadata>} entryMetadata The metadata to
- * correct.
- */
-function correctMetadata(entryMetadata) {
- entryMetadata.index = parseInt(entryMetadata.index, 10);
- entryMetadata.size = parseInt(entryMetadata.size, 10);
- entryMetadata.modificationTime =
- DateFromTimeT(entryMetadata.modificationTime);
- if (entryMetadata.isDirectory) {
- console.assert(entryMetadata.entries,
- 'The field "entries" is mandatory for dictionaries.');
- for (var entry in entryMetadata.entries) {
- correctMetadata(entryMetadata.entries[entry]);
- }
- }
-}
-
-/**
- * Defines a volume object that contains information about archives' contents
- * and performs operations on these contents.
- * @constructor
- * @param {!unpacker.Decompressor} decompressor The decompressor used to obtain
- * data from archives.
- * @param {!Entry} entry The entry corresponding to the volume's archive.
- */
-unpacker.Volume = function(decompressor, entry) {
- /**
- * Used for restoring the opened file entry after resuming the event page.
- * @type {!Entry}
- */
- this.entry = entry;
-
- /**
- * @type {!unpacker.Decompressor}
- */
- this.decompressor = decompressor;
-
- /**
- * The volume's metadata. The key is the full path to the file on this volume.
- * For more details see
- * https://developer.chrome.com/apps/fileSystemProvider#type-EntryMetadata
- * @type {?Object<string, !EntryMetadata>}
- */
- this.metadata = null;
-
- /**
- * A map with currently opened files. The key is a requestId value from the
- * openFileRequested event and the value is the open file options.
- * @type {!Object<!unpacker.types.RequestId,
- * !unpacker.types.OpenFileRequestedOptions>}
- */
- this.openedFiles = {};
-
- /**
- * Default encoding set for this archive. If empty, then not known.
- * @type {string}
- */
- this.encoding =
- unpacker.Volume.ENCODING_TABLE[chrome.i18n.getUILanguage()] || '';
-
- /**
- * The default read metadata request id. -1 is ok as the request ids used by
- * flleSystemProvider are greater than 0.
- * @type {number}
- */
- this.DEFAULT_READ_METADATA_REQUEST_ID = -1;
-};
-
-/**
- * The default read metadata request id. -1 is ok as the request ids used by
- * flleSystemProvider are greater than 0.
- * @const {number}
- */
-unpacker.Volume.DEFAULT_READ_METADATA_REQUEST_ID = -1;
-
-/**
- * Map from language codes to default charset encodings.
- * @const {!Object<string, string>}
- */
-unpacker.Volume.ENCODING_TABLE = {
- ar: 'CP1256',
- bg: 'CP1251',
- ca: 'CP1252',
- cs: 'CP1250',
- da: 'CP1252',
- de: 'CP1252',
- el: 'CP1253',
- en: 'CP1250',
- en_GB: 'CP1250',
- es: 'CP1252',
- es_419: 'CP1252',
- et: 'CP1257',
- fa: 'CP1256',
- fi: 'CP1252',
- fil: 'CP1252',
- fr: 'CP1252',
- he: 'CP1255',
- hi: 'UTF-8', // Another one may be better.
- hr: 'CP1250',
- hu: 'CP1250',
- id: 'CP1252',
- it: 'CP1252',
- ja: 'CP932', // Alternatively SHIFT-JIS.
- ko: 'CP949', // Alternatively EUC-KR.
- lt: 'CP1257',
- lv: 'CP1257',
- ms: 'CP1252',
- nl: 'CP1252',
- no: 'CP1252',
- pl: 'CP1250',
- pt_BR: 'CP1252',
- pt_PT: 'CP1252',
- ro: 'CP1250',
- ru: 'CP1251',
- sk: 'CP1250',
- sl: 'CP1250',
- sr: 'CP1251',
- sv: 'CP1252',
- th: 'CP874', // Confirm!
- tr: 'CP1254',
- uk: 'CP1251',
- vi: 'CP1258',
- zh_CN: 'CP936',
- zh_TW: 'CP950'
-};
-
-/**
- * @return {boolean} True if volume is ready to be used.
- */
-unpacker.Volume.prototype.isReady = function() {
- return !!this.metadata;
-};
-
-/**
- * @return {boolean} True if volume is in use.
- */
-unpacker.Volume.prototype.inUse = function() {
- return this.decompressor.hasRequestsInProgress() ||
- Object.keys(this.openedFiles).length > 0;
-};
-
-/**
- * Initializes the volume by reading its metadata.
- * @param {function()} onSuccess Callback to execute on success.
- * @param {function(!ProviderError)} onError Callback to execute on error.
- */
-unpacker.Volume.prototype.initialize = function(onSuccess, onError) {
- var requestId = unpacker.Volume.DEFAULT_READ_METADATA_REQUEST_ID;
- this.decompressor.readMetadata(requestId, this.encoding, function(metadata) {
- // Make a deep copy of metadata.
- this.metadata = /** @type {!Object<string, !EntryMetadata>} */ (JSON.parse(
- JSON.stringify(metadata)));
- correctMetadata(this.metadata);
-
- onSuccess();
- }.bind(this), onError);
-};
-
-/**
- * Obtains the metadata for a single entry in the archive. Assumes metadata is
- * loaded.
- * @param {!unpacker.types.GetMetadataRequestedOptions} options Options for
- * getting the metadata of an entry.
- * @param {function(!EntryMetadata)} onSuccess Callback to execute on success.
- * @param {function(!ProviderError)} onError Callback to execute on error.
- */
-unpacker.Volume.prototype.onGetMetadataRequested = function(options, onSuccess,
- onError) {
- console.assert(this.isReady(), 'Metadata must be loaded.');
- var entryMetadata = this.getEntryMetadata_(options.entryPath);
- if (!entryMetadata)
- onError('NOT_FOUND');
- else
- onSuccess(entryMetadata);
-};
-
-/**
- * Reads a directory contents from metadata. Assumes metadata is loaded.
- * @param {!unpacker.types.ReadDirectoryRequestedOptions} options Options
- * for reading the contents of a directory.
- * @param {function(!Array<!EntryMetadata>, boolean)} onSuccess Callback to
- * execute on success.
- * @param {function(!ProviderError)} onError Callback to execute on error.
- */
-unpacker.Volume.prototype.onReadDirectoryRequested = function(
- options, onSuccess, onError) {
- console.assert(this.isReady(), 'Metadata must be loaded.');
- var directoryMetadata = this.getEntryMetadata_(options.directoryPath);
- if (!directoryMetadata) {
- onError('NOT_FOUND');
- return;
- }
- if (!directoryMetadata.isDirectory) {
- onError('NOT_A_DIRECTORY');
- return;
- }
-
- // Convert dictionary entries to an array.
- var entries = [];
- for (var entry in directoryMetadata.entries) {
- entries.push(directoryMetadata.entries[entry]);
- }
-
- onSuccess(entries, false /* Last call. */);
-};
-
-/**
- * Opens a file for read or write.
- * @param {!unpacker.types.OpenFileRequestedOptions} options Options for
- * opening a file.
- * @param {function()} onSuccess Callback to execute on success.
- * @param {function(!ProviderError)} onError Callback to execute on error.
- */
-unpacker.Volume.prototype.onOpenFileRequested = function(options, onSuccess,
- onError) {
- console.assert(this.isReady(), 'Metadata must be loaded.');
- if (options.mode != 'READ') {
- onError('INVALID_OPERATION');
- return;
- }
-
- var metadata = this.getEntryMetadata_(options.filePath);
- if (!metadata) {
- onError('NOT_FOUND');
- return;
- }
-
- this.openedFiles[options.requestId] = options;
-
- this.decompressor.openFile(
- options.requestId, metadata.index, this.encoding, function() {
- onSuccess();
- }.bind(this), function(error) {
- delete this.openedFiles[options.requestId];
- onError('FAILED');
- }.bind(this));
-};
-
-/**
- * Closes a file identified by options.openRequestId.
- * @param {!unpacker.types.CloseFileRequestedOptions} options Options for
- * closing a file.
- * @param {function()} onSuccess Callback to execute on success.
- * @param {function(!ProviderError)} onError Callback to execute on error.
- */
-unpacker.Volume.prototype.onCloseFileRequested = function(options, onSuccess,
- onError) {
- console.assert(this.isReady(), 'Metadata must be loaded.');
- var openRequestId = options.openRequestId;
- var openOptions = this.openedFiles[openRequestId];
- if (!openOptions) {
- onError('INVALID_OPERATION');
- return;
- }
-
- this.decompressor.closeFile(options.requestId, openRequestId, function() {
- delete this.openedFiles[openRequestId];
- onSuccess();
- }.bind(this), onError);
-};
-
-/**
- * Reads the contents of a file identified by options.openRequestId.
- * @param {!unpacker.types.ReadFileRequestedOptions} options Options for
- * reading a file's contents.
- * @param {function(!ArrayBuffer, boolean)} onSuccess Callback to execute on
- * success.
- * @param {function(!ProviderError)} onError Callback to execute on error.
- */
-unpacker.Volume.prototype.onReadFileRequested = function(options, onSuccess,
- onError) {
- console.assert(this.isReady(), 'Metadata must be loaded.');
- var openOptions = this.openedFiles[options.openRequestId];
- if (!openOptions) {
- onError('INVALID_OPERATION');
- return;
- }
-
- var offset = options.offset;
- var length = options.length;
- // Offset and length should be validated by the API.
- console.assert(offset >= 0, 'Offset should be >= 0.');
- console.assert(length >= 0, 'Length should be >= 0.');
-
- var fileSize = this.getEntryMetadata_(openOptions.filePath).size;
- if (offset >= fileSize || length == 0) { // No more data.
- onSuccess(new ArrayBuffer(0), false /* Last call. */);
- return;
- }
- length = Math.min(length, fileSize - offset);
-
- this.decompressor.readFile(options.requestId, options.openRequestId,
- offset, length, onSuccess, onError);
-};
-
-/**
- * Gets the metadata for an entry based on its path.
- * @param {string} entryPath The full path to the entry.
- * @return {?Object} The correspondent metadata.
- * @private
- */
-unpacker.Volume.prototype.getEntryMetadata_ = function(entryPath) {
- var pathArray = entryPath.split('/');
-
- // Remove empty strings resulted after split. As paths start with '/' we will
- // have an empty string at the beginning of pathArray and possible an
- // empty string at the end for directories (e.g. /path/to/dir/). The code
- // assumes entryPath cannot have consecutive '/'.
- pathArray.splice(0, 1);
-
- if (pathArray.length > 0) { // In case of 0 this is root directory.
- var lastIndex = pathArray.length - 1;
- if (pathArray[lastIndex] == '')
- pathArray.splice(lastIndex);
- }
-
- // Get the actual metadata by iterating through every directory metadata
- // on the path to the entry.
- var entryMetadata = this.metadata;
- for (var i = 0, limit = pathArray.length; i < limit; i++) {
- if (!entryMetadata ||
- !entryMetadata.isDirectory && i != limit - 1 /* Parent directory. */)
- return null;
- entryMetadata = entryMetadata.entries[pathArray[i]];
- }
-
- return entryMetadata;
-};
« no previous file with comments | « ui/file_manager/zip_archiver/unpacker/js/unpacker.js ('k') | ui/file_manager/zip_archiver/unpacker/manifest.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698