1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
|
// Copyright (c) 2013 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.
/**
* Wallpaper file system quota.
*/
/** @const */ var WallpaperQuota = 1024 * 1024 * 100;
var wallpaperDirectories = null;
/**
* Manages custom wallpaper related directories in wallpaper's sandboxed
* FileSystem.
* @constructor
*/
function WallpaperDirectories() {
this.wallpaperDirs_ = {};
this.wallpaperDirs_[Constants.WallpaperDirNameEnum.ORIGINAL] = null;
this.wallpaperDirs_[Constants.WallpaperDirNameEnum.THUMBNAIL] = null;
}
/**
* Gets WallpaperDirectories instance. In case is hasn't been initialized, a new
* instance is created.
* @return {WallpaperDirectories} A WallpaperDirectories instance.
*/
WallpaperDirectories.getInstance = function() {
if (wallpaperDirectories === null)
wallpaperDirectories = new WallpaperDirectories();
return wallpaperDirectories;
};
WallpaperDirectories.prototype = {
/**
* Returns all custom wallpaper related directory entries.
*/
get wallpaperDirs() {
return this.wallpaperDirs_;
},
/**
* If dirName is not requested, gets the directory entry of dirName and cache
* the result. Calls success callback if success.
* @param {string} dirName The directory name of requested directory entry.
* @param {function(DirectoryEntry):void} success Call success with requested
* DirectoryEntry.
* @param {function(e):void} failure Call failure when failed to get the
* requested directory.
*/
requestDir: function(dirName, success, failure) {
if (dirName != Constants.WallpaperDirNameEnum.ORIGINAL &&
dirName != Constants.WallpaperDirNameEnum.THUMBNAIL) {
console.error('Error: Unknow directory name.');
var e = new Error();
e.code = FileError.NOT_FOUND_ERR;
failure(e);
return;
}
var self = this;
window.webkitRequestFileSystem(window.PERSISTENT, WallpaperQuota,
function(fs) {
fs.root.getDirectory(dirName, {create: true}, function(dirEntry) {
self.wallpaperDirs_[dirName] = dirEntry;
success(dirEntry);
}, failure);
}, failure);
},
/**
* Gets DirectoryEntry associated with dirName from cache. If not in cache try
* to request it from FileSystem.
* @param {string} dirName The directory name of requested directory entry.
* @param {function(DirectoryEntry):void} success Call success with requested
* DirectoryEntry.
* @param {function(e):void} failure Call failure when failed to get the
* requested directory.
*/
getDirectory: function(dirName, success, failure) {
if (this.wallpaperDirs[dirName])
success(this.wallpaperDirs[dirName]);
else
this.requestDir(dirName, success, failure);
}
};
|