Index: chrome/browser/resources/chromeos/wallpaper_manager/js/util.js |
diff --git a/chrome/browser/resources/chromeos/wallpaper_manager/js/util.js b/chrome/browser/resources/chromeos/wallpaper_manager/js/util.js |
index 397f1805e4acdc668b9bae7da94c74ff51d98b38..6bde307484cfa306a34dafaf7ab597173c6561e1 100644 |
--- a/chrome/browser/resources/chromeos/wallpaper_manager/js/util.js |
+++ b/chrome/browser/resources/chromeos/wallpaper_manager/js/util.js |
@@ -2,6 +2,127 @@ |
// Use of this source code is governed by a BSD-style license that can be |
// found in the LICENSE file. |
+var globalStrings = null; |
bshe
2014/09/24 17:07:05
define all globals and functions in WallpaperUtil
Ran
2014/09/24 22:01:35
Acknowledged.
Ran
2014/09/26 17:34:53
Done.
|
+function enableSync(callback) { |
+ if (globalStrings) { |
+ if (globalStrings.isSyncCustomWallpaper) |
+ callback(); |
+ } |
+ else { |
+ chrome.wallpaperPrivate.getStrings(function(strings) { |
+ globalStrings = strings; |
+ if (globalStrings.isSyncCustomWallpaper) |
+ callback(); |
+ }); |
+ } |
+} |
+ |
+function errorHandler(e) { |
+ console.error(e); |
+} |
+ |
+function writeFile(fileEntry, picData, writeCallback) { |
+ fileEntry.createWriter(function(fileWriter) { |
+ var blob = new Blob([new Int8Array(picData)], |
+ {'type' : 'image\/jpeg'}); |
bshe
2014/09/24 17:07:05
Did you try png wallpapers? We also support png fi
Ran
2014/09/24 22:19:22
Yes, I tried png wallpapers and sync works as well
Ran
2014/09/26 17:34:54
Done.
|
+ fileWriter.write(blob); |
+ if (writeCallback) writeCallback(); |
+ },errorHandler); |
+} |
+ |
+function writeWallpaperToSync(wallpaperFilename, picData, writeCallback) { |
+ var writeWallpaperToSyncCallback = function(fs) { |
+ if (!fs) return; |
+ fs.root.getFile(wallpaperFilename, |
+ {create: false}, |
+ function() { writeCallback();}, //already exists |
+ function(e) { //not exists, create |
+ fs.root.getFile(wallpaperFilename, |
+ {create: true}, |
+ function(fe) { |
+ writeFile(fe, picData, writeCallback); |
+ }, |
+ errorHandler); |
+ }); |
+ }; |
+ chrome.syncFileSystem.requestFileSystem(writeWallpaperToSyncCallback); |
+} |
+ |
+function storePictureToLocal(picData, loadDir, picName) { |
+ if (!picData) return; //TODO |
+ var getDirSuccess = function(dirEntry) { |
+ dirEntry.getFile(picName, |
+ {create: false}, |
+ function() {}, //already exists |
+ function(e) { //not exists, create |
+ dirEntry.getFile(picName, |
+ {create: true}, |
+ function(fe) { |
+ writeFile(fe, picData); |
+ }, |
+ errorHandler); |
+ }); |
+ }; |
+ window.webkitRequestFileSystem(window.PERSISTENT, 1024 * 1024 * 100, |
+ function(fs) { |
+ fs.root.getDirectory(loadDir, {create: true}, |
+ getDirSuccess, errorHandler); |
+ }, |
+ errorHandler); |
+} |
+ |
+var setWallpaperFromSyncLastCallFinished = true; |
+function setWallpaperByName(wallpaperFilename, wallpaperLayout, successCall) { |
+ if (!setWallpaperFromSyncLastCallFinished) return; |
+ setWallpaperFromSyncLastCallFinished = false; |
+ var setWallpaperFromSyncCallback = function(fs) { |
+ if (!fs) { |
+ errorHandler('fs is null'); |
+ return; |
+ } |
+ if (!wallpaperFilename) { |
+ errorHandler('wallpaperFilename is null'); |
+ return; |
+ } |
+ if (!wallpaperLayout) |
+ wallpaperLayout = 'CENTER_CROPPED'; |
+ fs.root.getFile(wallpaperFilename, {create: false}, function(fileEntry) { |
+ fileEntry.file(function(file) { |
+ var reader = new FileReader(); |
+ reader.onloadend = function() { |
+ chrome.wallpaperPrivate.setCustomWallpaper( |
+ reader.result, |
+ wallpaperLayout, |
+ true, |
+ wallpaperFilename, |
+ function(thumbnailData) { |
+ if (!thumbnailData) { |
+ errorHandler('thumbnailData is null!'); |
+ //setWallpaperFromSyncCallback(); |
+ } |
+ else { |
+ storePictureToLocal(reader.result, |
+ 'original', |
+ wallpaperFilename); |
+ storePictureToLocal(thumbnailData, |
+ 'thumbnail', |
+ wallpaperFilename); |
+ if (successCall) |
+ successCall(); |
+ setWallpaperFromSyncLastCallFinished = true; |
+ } |
+ } |
+ ); |
+ }; |
+ reader.readAsArrayBuffer(file); |
+ },errorHandler); |
+ },function(e) { //fail to read file, expected due to download delay |
+ setWallpaperFromSyncLastCallFinished = true; |
+ }); |
+ }; |
+ chrome.syncFileSystem.requestFileSystem(setWallpaperFromSyncCallback); |
bshe
2014/09/24 17:07:05
We can probably save fs to a local variable so tha
Ran
2014/09/26 17:34:53
Done.
|
+} |
+ |
var WallpaperUtil = {}; |
/** |