| Index: chrome/test/data/extensions/api_test/local_filesystem/tab.js
|
| ===================================================================
|
| --- chrome/test/data/extensions/api_test/local_filesystem/tab.js (revision 0)
|
| +++ chrome/test/data/extensions/api_test/local_filesystem/tab.js (revision 0)
|
| @@ -0,0 +1,149 @@
|
| +// Copyright (c) 2011 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.
|
| +
|
| +var fileSystem = null;
|
| +var testDirName = null;
|
| +var testFileName = null;
|
| +var watchfileUrl = null;
|
| +
|
| +function errorCallback(e) {
|
| + var msg = '';
|
| + switch (e.code) {
|
| + case FileError.QUOTA_EXCEEDED_ERR:
|
| + msg = 'QUOTA_EXCEEDED_ERR';
|
| + break;
|
| + case FileError.NOT_FOUND_ERR:
|
| + msg = 'NOT_FOUND_ERR';
|
| + break;
|
| + case FileError.SECURITY_ERR:
|
| + msg = 'SECURITY_ERR';
|
| + break;
|
| + case FileError.INVALID_MODIFICATION_ERR:
|
| + msg = 'INVALID_MODIFICATION_ERR';
|
| + break;
|
| + case FileError.INVALID_STATE_ERR:
|
| + msg = 'INVALID_STATE_ERR';
|
| + break;
|
| + default:
|
| + msg = 'Unknown Error';
|
| + break;
|
| + };
|
| + chrome.test.fail("Got unexpected error: " + msg);
|
| + console.log('Error: ' + msg);
|
| + alert('Error: ' + msg);
|
| +}
|
| +
|
| +function successCallbackFinal(entry) {
|
| + chrome.test.succeed();
|
| +}
|
| +
|
| +function onGetFileEntry(entry) {
|
| + chrome.test.succeed();
|
| +}
|
| +
|
| +function deleteDirectory() {
|
| + console.log("Deleting dir : " + testDirName);
|
| + fileSystem.root.getDirectory(testDirName, {create:false},
|
| + function(directory) {
|
| + // Do clean-up. (Assume the tab won't be reloaded in testing.)
|
| + directory.removeRecursively(successCallbackFinal, errorCallback);
|
| + }, errorCallback);
|
| +}
|
| +
|
| +
|
| +// Sets up directory watch, kicks of file removal from the directory.
|
| +function setupDirectoryWatch(dirEntry) {
|
| + watchfileUrl = dirEntry.toURL();
|
| + chrome.fileBrowserPrivate.addFileWatch(
|
| + watchfileUrl,
|
| + function(success) {
|
| + if (!success) {
|
| + chrome.test.fail("File watch setup failed.");
|
| + } else {
|
| + console.log("Added new file watch: " + watchfileUrl);
|
| + fileSystem.root.getFile(testDirName+'/'+testFileName, {create: false},
|
| + triggerFolderChange, errorCallback);
|
| + }
|
| + });
|
| +}
|
| +
|
| +function triggerFolderChange(fileEntry) {
|
| + // Just delete test file, this should trigger onFolderChanged call below.
|
| + fileEntry.remove(function() {}, errorCallback);
|
| +}
|
| +
|
| +function onFolderChanged(info) {
|
| + if (info && info.eventType == 'changed' &&
|
| + info.fileUrl == watchfileUrl) {
|
| + // Remove file watch.
|
| + console.log("Removing file watch: " + info.fileUrl);
|
| + chrome.fileBrowserPrivate.removeFileWatch(info.fileUrl,
|
| + function(success) {
|
| + if (success) {
|
| + chrome.test.succeed();
|
| + } else {
|
| + chrome.test.fail("Failed to remove file watch.");
|
| + }
|
| + });
|
| + } else {
|
| + var msg = "ERROR: Unexpected watch event info";
|
| + console.log(msg);
|
| + console.log(info);
|
| + chrome.test.fail(msg);
|
| + }
|
| +}
|
| +
|
| +function onLocalFS(fs, error) {
|
| + if (!fs) {
|
| + errorCallback(error);
|
| + return;
|
| + }
|
| + fileSystem = fs;
|
| + console.log("DONE requesting filesystem: " + fileSystem.name);
|
| + // Read directory content.
|
| + console.log("Opening file : " + testDirName+'/'+testFileName);
|
| + fileSystem.root.getDirectory(testDirName, {create: false},
|
| + function(dirEntry) {
|
| + console.log('DONE opening directory: ' + dirEntry.fullPath);
|
| + fileSystem.root.getFile(testDirName+'/'+testFileName, {create:false},
|
| + onGetFileEntry, errorCallback);
|
| + }, errorCallback);
|
| +}
|
| +
|
| +// Initialize tests - get test dir, file name.
|
| +function start() {
|
| + var loc = window.location.href;
|
| + console.log("Opening tab " + loc);
|
| + if (loc.indexOf("#") == -1 ) {
|
| + chrome.test.fail("Missing params");
|
| + return;
|
| + }
|
| + loc = unescape(loc.substr(loc.indexOf("#") + 1));
|
| + if (loc.lastIndexOf("/") == -1 ) {
|
| + chrome.test.fail("Bad params");
|
| + return;
|
| + }
|
| + testDirName = loc.substr(0, loc.lastIndexOf("/"));
|
| + testFileName = loc.substr(loc.lastIndexOf("/") + 1);
|
| +
|
| + chrome.test.runTests([
|
| + function basic_operations() {
|
| + console.log("Requesting local file system...");
|
| + chrome.fileBrowserPrivate.requestLocalFileSystem(onLocalFS);
|
| + },
|
| +
|
| + function file_watcher() {
|
| + chrome.fileBrowserPrivate.onFileChanged.addListener(onFolderChanged);
|
| + console.log("Setting up watch of : " + testDirName);
|
| + fileSystem.root.getDirectory(testDirName, {create: false},
|
| + setupDirectoryWatch, errorCallback);
|
| + },
|
| +
|
| + function cleanup() {
|
| + deleteDirectory();
|
| + }
|
| + ]);
|
| +}
|
| +
|
| +start();
|
|
|