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

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

Issue 597503007: Sync current wallpaper (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 3 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/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 = {};
/**

Powered by Google App Engine
This is Rietveld 408576698