| Index: chrome/test/data/extensions/api_test/file_system_provider/get_metadata/test.js
|
| diff --git a/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/test.js b/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/test.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..a93a323f76f4eb6818469eb71c6e54e359c0a304
|
| --- /dev/null
|
| +++ b/chrome/test/data/extensions/api_test/file_system_provider/get_metadata/test.js
|
| @@ -0,0 +1,166 @@
|
| +// Copyright 2014 The Chromium 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';
|
| +
|
| +var fileSystemId;
|
| +var fileSystem;
|
| +
|
| +/**
|
| + * @type {Object}
|
| + * @const
|
| + */
|
| +var TESTING_ROOT = Object.freeze({
|
| + isDirectory: true,
|
| + name: '',
|
| + size: 0,
|
| + modificationTime: new Date(2013, 3, 27, 9, 38, 14)
|
| +});
|
| +
|
| +/**
|
| + * @type {Object}
|
| + * @const
|
| + */
|
| +var TESTING_FILE = Object.freeze({
|
| + isDirectory: false,
|
| + name: 'tiramisu.txt',
|
| + size: 4096,
|
| + modificationTime: new Date(2014, 4, 28, 10, 39, 15)
|
| +});
|
| +
|
| +/**
|
| + * Returns metadata for a requested entry.
|
| + *
|
| + * @param {number} inFileSystemId ID of the file system.
|
| + * @param {string} entryPath Path of the requested entry.
|
| + * @param {function(Object)} onSuccess Success callback with metadata passed
|
| + * an argument.
|
| + * @param {function(string}} onError Error callback with an error code.
|
| + */
|
| +function onGetMetadataRequested(
|
| + inFileSystemId, entryPath, onSuccess, onError) {
|
| + if (inFileSystemId != fileSystemId) {
|
| + onError('SECURITY_ERROR'); // enum ProviderError.
|
| + return;
|
| + }
|
| +
|
| + if (entryPath == '/') {
|
| + onSuccess(TESTING_ROOT);
|
| + return;
|
| + }
|
| +
|
| + if (entryPath == '/' + TESTING_FILE.name) {
|
| + onSuccess(TESTING_FILE);
|
| + return;
|
| + }
|
| +
|
| + onError('NOT_FOUND'); // enum ProviderError.
|
| +}
|
| +
|
| +/**
|
| + * Sets up the tests. Called once per all test cases. In case of a failure,
|
| + * the callback is not called.
|
| + *
|
| + * @param {function()} callback Success callback.
|
| + */
|
| +function setUp(callback) {
|
| + chrome.fileSystemProvider.mount('chocolate.zip', function(id) {
|
| + fileSystemId = id;
|
| + chrome.fileSystemProvider.onGetMetadataRequested.addListener(
|
| + onGetMetadataRequested);
|
| + var volumeId =
|
| + 'provided:' + chrome.runtime.id + '-' + fileSystemId + '-user';
|
| +
|
| + chrome.fileBrowserPrivate.requestFileSystem(
|
| + volumeId,
|
| + function(inFileSystem) {
|
| + chrome.test.assertTrue(!!inFileSystem);
|
| +
|
| + fileSystem = inFileSystem;
|
| + callback();
|
| + });
|
| + }, function() {
|
| + chrome.test.fail();
|
| + });
|
| +}
|
| +
|
| +/**
|
| + * Runs all of the test cases, one by one.
|
| + */
|
| +function runTests() {
|
| + chrome.test.runTests([
|
| + // Read metadata of the root.
|
| + function getFileMetadataSuccess() {
|
| + var onSuccess = chrome.test.callbackPass(function() {});
|
| + fileSystem.root.getMetadata(
|
| + function(metadata) {
|
| + chrome.test.assertEq(TESTING_ROOT.size, metadata.size);
|
| + chrome.test.assertEq(
|
| + TESTING_ROOT.modificationTime.toString(),
|
| + metadata.modificationTime.toString());
|
| + onSuccess();
|
| + }, function(error) {
|
| + chrome.test.fail(error.name);
|
| + });
|
| + },
|
| + // Read metadata of an existing testing file.
|
| + function getFileMetadataSuccess() {
|
| + var onSuccess = chrome.test.callbackPass(function() {});
|
| + fileSystem.root.getFile(
|
| + TESTING_FILE.name,
|
| + {create: false},
|
| + function(fileEntry) {
|
| + chrome.test.assertEq(TESTING_FILE.name, fileEntry.name);
|
| + chrome.test.assertEq(
|
| + TESTING_FILE.isDirectory, fileEntry.isDirectory);
|
| + fileEntry.getMetadata(function(metadata) {
|
| + chrome.test.assertEq(TESTING_FILE.size, metadata.size);
|
| + chrome.test.assertEq(
|
| + TESTING_FILE.modificationTime.toString(),
|
| + metadata.modificationTime.toString());
|
| + onSuccess();
|
| + }, function(error) {
|
| + chrome.test.fail(error.name);
|
| + });
|
| + },
|
| + function(error) {
|
| + chrome.test.fail(error.name);
|
| + });
|
| + },
|
| + // Read metadata of a directory which does not exist, what should return an
|
| + // error. DirectoryEntry.getDirectory() causes fetching metadata.
|
| + function getFileMetadataNotFound() {
|
| + var onSuccess = chrome.test.callbackPass(function() {});
|
| + fileSystem.root.getDirectory(
|
| + 'cranberries',
|
| + {create: false},
|
| + function(dirEntry) {
|
| + chrome.test.fail();
|
| + },
|
| + function(error) {
|
| + chrome.test.assertEq('NotFoundError', error.name);
|
| + onSuccess();
|
| + });
|
| + },
|
| + // Read metadata of a file using getDirectory(). An error should be returned
|
| + // because of type mismatching. DirectoryEntry.getDirectory() causes
|
| + // fetching metadata.
|
| + function getFileMetadataWrongType() {
|
| + var onSuccess = chrome.test.callbackPass(function() {});
|
| + fileSystem.root.getDirectory(
|
| + TESTING_FILE.name,
|
| + {create: false},
|
| + function(fileEntry) {
|
| + chrome.test.fail();
|
| + },
|
| + function(error) {
|
| + chrome.test.assertEq('TypeMismatchError', error.name);
|
| + onSuccess();
|
| + });
|
| + }
|
| + ]);
|
| +}
|
| +
|
| +// Setup and run all of the test cases.
|
| +setUp(runTests);
|
|
|