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

Unified Diff: chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_directories.js

Issue 12334030: New custom wallpaper picker UI (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: reviews Created 7 years, 9 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: chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_directories.js
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_directories.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_directories.js
new file mode 100644
index 0000000000000000000000000000000000000000..6e018eb5840684cd529c6fcdd787457ed4cebcc7
--- /dev/null
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_directories.js
@@ -0,0 +1,93 @@
+// 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;
+
+/**
+ * Wallpaper directories enum.
+ */
+/** #const */ var WallpaperDirNameEnum = {
+ ORIGINAL: 'original',
+ THUMBNAIL: 'thumbnail'
+ };
+
+var wallpaperDirectories = null;
+
+/**
+ * Manages custom wallpaper related directories in wallpaper's sandboxed
+ * FileSystem.
+ * @constructor
+ */
+function WallpaperDirectories() {
+ this.wallpaperDirs_ = {};
+ this.wallpaperDirs_[WallpaperDirNameEnum.ORIGINAL] = null;
+ this.wallpaperDirs_[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 != WallpaperDirNameEnum.ORIGINAL &&
+ dirName != 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);
+ }
+};

Powered by Google App Engine
This is Rietveld 408576698