Chromium Code Reviews| 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 = {}; |
| /** |