| OLD | NEW |
| 1 <script> | 1 <!-- |
| 2 var fileSystem = null; | 2 * Copyright (c) 2011 The Chromium Authors. All rights reserved. Use of this |
| 3 var testDirName = null; | 3 * source code is governed by a BSD-style license that can be found in the |
| 4 var testFileName = null; | 4 * LICENSE file. |
| 5 var watchfileUrl = null; | 5 --> |
| 6 | 6 <script src="tab.js"></script> |
| 7 function errorCallback(e) { | |
| 8 var msg = ''; | |
| 9 switch (e.code) { | |
| 10 case FileError.QUOTA_EXCEEDED_ERR: | |
| 11 msg = 'QUOTA_EXCEEDED_ERR'; | |
| 12 break; | |
| 13 case FileError.NOT_FOUND_ERR: | |
| 14 msg = 'NOT_FOUND_ERR'; | |
| 15 break; | |
| 16 case FileError.SECURITY_ERR: | |
| 17 msg = 'SECURITY_ERR'; | |
| 18 break; | |
| 19 case FileError.INVALID_MODIFICATION_ERR: | |
| 20 msg = 'INVALID_MODIFICATION_ERR'; | |
| 21 break; | |
| 22 case FileError.INVALID_STATE_ERR: | |
| 23 msg = 'INVALID_STATE_ERR'; | |
| 24 break; | |
| 25 default: | |
| 26 msg = 'Unknown Error'; | |
| 27 break; | |
| 28 }; | |
| 29 chrome.test.fail("Got unexpected error: " + msg); | |
| 30 console.log('Error: ' + msg); | |
| 31 alert('Error: ' + msg); | |
| 32 } | |
| 33 | |
| 34 function successCallbackFinal(entry) { | |
| 35 chrome.test.succeed(); | |
| 36 } | |
| 37 | |
| 38 function onGetFileEntry(entry) { | |
| 39 chrome.test.succeed(); | |
| 40 } | |
| 41 | |
| 42 function deleteDirectory() { | |
| 43 console.log("Deleting dir : " + testDirName); | |
| 44 fileSystem.root.getDirectory(testDirName, {create:false}, | |
| 45 function(directory) { | |
| 46 // Do clean-up. (Assume the tab won't be reloaded in testing.) | |
| 47 directory.removeRecursively(successCallbackFinal, errorCallback); | |
| 48 }, errorCallback); | |
| 49 } | |
| 50 | |
| 51 | |
| 52 // Sets up directory watch, kicks of file removal from the directory. | |
| 53 function setupDirectoryWatch(dirEntry) { | |
| 54 watchfileUrl = dirEntry.toURL(); | |
| 55 chrome.fileBrowserPrivate.addFileWatch( | |
| 56 watchfileUrl, | |
| 57 function(success) { | |
| 58 if (!success) { | |
| 59 chrome.test.fail("File watch setup failed."); | |
| 60 } else { | |
| 61 console.log("Added new file watch: " + watchfileUrl); | |
| 62 fileSystem.root.getFile(testDirName+'/'+testFileName, {create: false}, | |
| 63 triggerFolderChange, errorCallback); | |
| 64 } | |
| 65 }); | |
| 66 } | |
| 67 | |
| 68 function triggerFolderChange(fileEntry) { | |
| 69 // Just delete test file, this should trigger onFolderChanged call below. | |
| 70 fileEntry.remove(function() {}, errorCallback); | |
| 71 } | |
| 72 | |
| 73 function onFolderChanged(info) { | |
| 74 if (info && info.eventType == 'changed' && | |
| 75 info.fileUrl == watchfileUrl) { | |
| 76 // Remove file watch. | |
| 77 console.log("Removing file watch: " + info.fileUrl); | |
| 78 chrome.fileBrowserPrivate.removeFileWatch(info.fileUrl, | |
| 79 function(success) { | |
| 80 if (success) { | |
| 81 chrome.test.succeed(); | |
| 82 } else { | |
| 83 chrome.test.fail("Failed to remove file watch."); | |
| 84 } | |
| 85 }); | |
| 86 } else { | |
| 87 var msg = "ERROR: Unexpected watch event info"; | |
| 88 console.log(msg); | |
| 89 console.log(info); | |
| 90 chrome.test.fail(msg); | |
| 91 } | |
| 92 } | |
| 93 | |
| 94 function onLocalFS(fs, error) { | |
| 95 if (!fs) { | |
| 96 errorCallback(error); | |
| 97 return; | |
| 98 } | |
| 99 fileSystem = fs; | |
| 100 console.log("DONE requesting filesystem: " + fileSystem.name); | |
| 101 // Read directory content. | |
| 102 console.log("Opening file : " + testDirName+'/'+testFileName); | |
| 103 fileSystem.root.getDirectory(testDirName, {create: false}, | |
| 104 function(dirEntry) { | |
| 105 console.log('DONE opening directory: ' + dirEntry.fullPath); | |
| 106 fileSystem.root.getFile(testDirName+'/'+testFileName, {create:false}, | |
| 107 onGetFileEntry, errorCallback); | |
| 108 }, errorCallback); | |
| 109 } | |
| 110 | |
| 111 // Initialize tests - get test dir, file name. | |
| 112 function start() { | |
| 113 var loc = window.location.href; | |
| 114 console.log("Opening tab " + loc); | |
| 115 if (loc.indexOf("#") == -1 ) { | |
| 116 chrome.test.fail("Missing params"); | |
| 117 return; | |
| 118 } | |
| 119 loc = unescape(loc.substr(loc.indexOf("#") + 1)); | |
| 120 if (loc.lastIndexOf("/") == -1 ) { | |
| 121 chrome.test.fail("Bad params"); | |
| 122 return; | |
| 123 } | |
| 124 testDirName = loc.substr(0, loc.lastIndexOf("/")); | |
| 125 testFileName = loc.substr(loc.lastIndexOf("/") + 1); | |
| 126 | |
| 127 chrome.test.runTests([ | |
| 128 function basic_operations() { | |
| 129 console.log("Requesting local file system..."); | |
| 130 chrome.fileBrowserPrivate.requestLocalFileSystem(onLocalFS); | |
| 131 }, | |
| 132 | |
| 133 function file_watcher() { | |
| 134 chrome.fileBrowserPrivate.onFileChanged.addListener(onFolderChanged); | |
| 135 console.log("Setting up watch of : " + testDirName); | |
| 136 fileSystem.root.getDirectory(testDirName, {create: false}, | |
| 137 setupDirectoryWatch, errorCallback); | |
| 138 }, | |
| 139 | |
| 140 function cleanup() { | |
| 141 deleteDirectory(); | |
| 142 } | |
| 143 ]); | |
| 144 } | |
| 145 | |
| 146 start(); | |
| 147 </script> | |
| OLD | NEW |