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

Side by Side Diff: chrome/browser/resources/chromeos/wallpaper_manager/js/wallpaper_manager.js

Issue 597503007: Sync current wallpaper (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 /** 5 /**
6 * WallpaperManager constructor. 6 * WallpaperManager constructor.
7 * 7 *
8 * WallpaperManager objects encapsulate the functionality of the wallpaper 8 * WallpaperManager objects encapsulate the functionality of the wallpaper
9 * manager extension. 9 * manager extension.
10 * 10 *
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
514 var reader = new FileReader(); 514 var reader = new FileReader();
515 reader.readAsArrayBuffer(file); 515 reader.readAsArrayBuffer(file);
516 reader.addEventListener('error', errorHandler); 516 reader.addEventListener('error', errorHandler);
517 reader.addEventListener('load', function(e) { 517 reader.addEventListener('load', function(e) {
518 self.setCustomWallpaper(e.target.result, 518 self.setCustomWallpaper(e.target.result,
519 selectedItem.layout, 519 selectedItem.layout,
520 false, selectedItem.baseURL, 520 false, selectedItem.baseURL,
521 self.onWallpaperChanged_.bind(self, 521 self.onWallpaperChanged_.bind(self,
522 selectedItem, selectedItem.baseURL), 522 selectedItem, selectedItem.baseURL),
523 errorHandler); 523 errorHandler);
524 WallpaperUtil.enabledExperimentalFeatureCallback(function() {
525 WallpaperUtil.storePictureToSyncFileSystem(
526 selectedItem.baseURL,
527 e.target.result,
528 function() {}
529 );
530 });
524 }); 531 });
525 }, errorHandler); 532 }, errorHandler);
526 }, errorHandler); 533 }, errorHandler);
527 } 534 };
528 this.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.ORIGINAL, 535 this.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.ORIGINAL,
529 success, errorHandler); 536 success, errorHandler);
530 break; 537 break;
531 case Constants.WallpaperSourceEnum.OEM: 538 case Constants.WallpaperSourceEnum.OEM:
532 // Resets back to default wallpaper. 539 // Resets back to default wallpaper.
533 chrome.wallpaperPrivate.resetWallpaper(); 540 chrome.wallpaperPrivate.resetWallpaper();
534 this.onWallpaperChanged_(selectedItem, selectedItem.baseURL); 541 this.onWallpaperChanged_(selectedItem, selectedItem.baseURL);
535 WallpaperUtil.saveWallpaperInfo(wallpaperURL, selectedItem.layout, 542 WallpaperUtil.saveWallpaperInfo(wallpaperURL, selectedItem.layout,
536 selectedItem.source); 543 selectedItem.source);
537 break; 544 break;
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after
826 833
827 var blob = new Blob([new Int8Array(thumbnail)], 834 var blob = new Blob([new Int8Array(thumbnail)],
828 {'type' : 'image\/jpeg'}); 835 {'type' : 'image\/jpeg'});
829 fileWriter.write(blob); 836 fileWriter.write(blob);
830 }, errorHandler); 837 }, errorHandler);
831 }, errorHandler); 838 }, errorHandler);
832 }; 839 };
833 self.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.THUMBNAIL, 840 self.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.THUMBNAIL,
834 success, errorHandler); 841 success, errorHandler);
835 }; 842 };
836 843 var onCustomWallpaperSuccess = function(thumbnailData, wallpaperData) {
844 WallpaperUtil.enabledExperimentalFeatureCallback(function() {
845 WallpaperUtil.storePictureToSyncFileSystem(fileName, wallpaperData,
846 function() {});
847 });
848 saveThumbnail(thumbnailData);
849 };
837 var success = function(dirEntry) { 850 var success = function(dirEntry) {
838 dirEntry.getFile(fileName, {create: true}, function(fileEntry) { 851 dirEntry.getFile(fileName, {create: true}, function(fileEntry) {
839 fileEntry.createWriter(function(fileWriter) { 852 fileEntry.createWriter(function(fileWriter) {
840 fileWriter.addEventListener('writeend', function(e) { 853 fileWriter.addEventListener('writeend', function(e) {
841 var reader = new FileReader(); 854 var reader = new FileReader();
842 reader.readAsArrayBuffer(file); 855 reader.readAsArrayBuffer(file);
843 reader.addEventListener('error', errorHandler); 856 reader.addEventListener('error', errorHandler);
844 reader.addEventListener('load', function(e) { 857 reader.addEventListener('load', function(e) {
845 self.setCustomWallpaper(e.target.result, layout, true, fileName, 858 self.setCustomWallpaper(e.target.result, layout, true, fileName,
846 saveThumbnail, function() { 859 function(thumbnail) {
860 onCustomWallpaperSuccess(thumbnail, e.target.result);
861 },
862 function() {
847 self.removeCustomWallpaper(fileName); 863 self.removeCustomWallpaper(fileName);
848 errorHandler(); 864 errorHandler();
849 }); 865 });
850 }); 866 });
851 }); 867 });
852
853 fileWriter.addEventListener('error', errorHandler); 868 fileWriter.addEventListener('error', errorHandler);
854 fileWriter.write(file); 869 fileWriter.write(file);
855 }, errorHandler); 870 }, errorHandler);
856 }, errorHandler); 871 }, errorHandler);
857 }; 872 };
858 self.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.ORIGINAL, success, 873 self.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.ORIGINAL, success,
859 errorHandler); 874 errorHandler);
860 }; 875 };
861 setSelectedFile(files[0], layout, new Date().getTime().toString()); 876 setSelectedFile(files[0], layout, new Date().getTime().toString());
862 }; 877 };
863 878
864 /** 879 /**
865 * Removes wallpaper and thumbnail with fileName from FileSystem. 880 * Removes wallpaper and thumbnail with fileName from FileSystem.
866 * @param {string} fileName The file name of wallpaper and thumbnail to be 881 * @param {string} fileName The file name of wallpaper and thumbnail to be
867 * removed. 882 * removed.
868 */ 883 */
869 WallpaperManager.prototype.removeCustomWallpaper = function(fileName) { 884 WallpaperManager.prototype.removeCustomWallpaper = function(fileName) {
870 var errorHandler = this.onFileSystemError_.bind(this); 885 var errorHandler = this.onFileSystemError_.bind(this);
871 var self = this; 886 var self = this;
872 var removeFile = function(fileName) { 887 var removeFile = function(fileName) {
873 var success = function(dirEntry) { 888 var success = function(dirEntry) {
874 dirEntry.getFile(fileName, {create: false}, function(fileEntry) { 889 dirEntry.getFile(fileName, {create: false}, function(fileEntry) {
875 fileEntry.remove(function() { 890 fileEntry.remove(function() {
876 }, errorHandler); 891 }, errorHandler);
877 }, errorHandler); 892 }, errorHandler);
878 } 893 };
879 894
880 // Removes copy of original. 895 // Removes copy of original.
881 self.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.ORIGINAL, success, 896 self.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.ORIGINAL, success,
882 errorHandler); 897 errorHandler);
883 898
884 // Removes generated thumbnail. 899 // Removes generated thumbnail.
885 self.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.THUMBNAIL, success, 900 self.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.THUMBNAIL, success,
886 errorHandler); 901 errorHandler);
887 }; 902 };
888 removeFile(fileName); 903 removeFile(fileName);
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
960 bar.style.left = selectedListItem.offsetLeft + 'px'; 975 bar.style.left = selectedListItem.offsetLeft + 'px';
961 bar.style.width = selectedListItem.offsetWidth + 'px'; 976 bar.style.width = selectedListItem.offsetWidth + 'px';
962 977
963 var wallpapersDataModel = new cr.ui.ArrayDataModel([]); 978 var wallpapersDataModel = new cr.ui.ArrayDataModel([]);
964 var selectedItem; 979 var selectedItem;
965 if (selectedListItem.custom) { 980 if (selectedListItem.custom) {
966 this.document_.body.setAttribute('custom', ''); 981 this.document_.body.setAttribute('custom', '');
967 var errorHandler = this.onFileSystemError_.bind(this); 982 var errorHandler = this.onFileSystemError_.bind(this);
968 var toArray = function(list) { 983 var toArray = function(list) {
969 return Array.prototype.slice.call(list || [], 0); 984 return Array.prototype.slice.call(list || [], 0);
970 } 985 };
971 986
972 var self = this; 987 var self = this;
973 var processResults = function(entries) { 988 var processResults = function(entries) {
974 for (var i = 0; i < entries.length; i++) { 989 for (var i = 0; i < entries.length; i++) {
975 var entry = entries[i]; 990 var entry = entries[i];
976 var wallpaperInfo = { 991 var wallpaperInfo = {
977 baseURL: entry.name, 992 baseURL: entry.name,
978 // The layout will be replaced by the actual value saved in 993 // The layout will be replaced by the actual value saved in
979 // local storage when requested later. Layout is not important 994 // local storage when requested later. Layout is not important
980 // for constructing thumbnails grid, we use CENTER_CROPPED here 995 // for constructing thumbnails grid, we use CENTER_CROPPED here
(...skipping 21 matching lines...) Expand all
1002 var lastElement = { 1017 var lastElement = {
1003 baseURL: '', 1018 baseURL: '',
1004 layout: '', 1019 layout: '',
1005 source: Constants.WallpaperSourceEnum.AddNew, 1020 source: Constants.WallpaperSourceEnum.AddNew,
1006 availableOffline: true 1021 availableOffline: true
1007 }; 1022 };
1008 wallpapersDataModel.push(lastElement); 1023 wallpapersDataModel.push(lastElement);
1009 self.wallpaperGrid_.dataModel = wallpapersDataModel; 1024 self.wallpaperGrid_.dataModel = wallpapersDataModel;
1010 self.wallpaperGrid_.selectedItem = selectedItem; 1025 self.wallpaperGrid_.selectedItem = selectedItem;
1011 self.wallpaperGrid_.activeItem = selectedItem; 1026 self.wallpaperGrid_.activeItem = selectedItem;
1012 } 1027 };
1013 1028
1014 var success = function(dirEntry) { 1029 var success = function(dirEntry) {
1015 var dirReader = dirEntry.createReader(); 1030 var dirReader = dirEntry.createReader();
1016 var entries = []; 1031 var entries = [];
1017 // All of a directory's entries are not guaranteed to return in a single 1032 // All of a directory's entries are not guaranteed to return in a single
1018 // call. 1033 // call.
1019 var readEntries = function() { 1034 var readEntries = function() {
1020 dirReader.readEntries(function(results) { 1035 dirReader.readEntries(function(results) {
1021 if (!results.length) { 1036 if (!results.length) {
1022 processResults(entries.sort()); 1037 processResults(entries.sort());
1023 } else { 1038 } else {
1024 entries = entries.concat(toArray(results)); 1039 entries = entries.concat(toArray(results));
1025 readEntries(); 1040 readEntries();
1026 } 1041 }
1027 }, errorHandler); 1042 }, errorHandler);
1028 }; 1043 };
1029 readEntries(); // Start reading dirs. 1044 readEntries(); // Start reading dirs.
1030 } 1045 };
1031 this.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.ORIGINAL, 1046 this.wallpaperDirs_.getDirectory(WallpaperDirNameEnum.ORIGINAL,
1032 success, errorHandler); 1047 success, errorHandler);
1033 } else { 1048 } else {
1034 this.document_.body.removeAttribute('custom'); 1049 this.document_.body.removeAttribute('custom');
1035 for (var key in this.manifest_.wallpaper_list) { 1050 for (var key in this.manifest_.wallpaper_list) {
1036 if (selectedIndex == AllCategoryIndex || 1051 if (selectedIndex == AllCategoryIndex ||
1037 this.manifest_.wallpaper_list[key].categories.indexOf( 1052 this.manifest_.wallpaper_list[key].categories.indexOf(
1038 selectedIndex - OnlineCategoriesOffset) != -1) { 1053 selectedIndex - OnlineCategoriesOffset) != -1) {
1039 var wallpaperInfo = { 1054 var wallpaperInfo = {
1040 baseURL: this.manifest_.wallpaper_list[key].base_url, 1055 baseURL: this.manifest_.wallpaper_list[key].base_url,
(...skipping 19 matching lines...) Expand all
1060 } 1075 }
1061 } 1076 }
1062 } 1077 }
1063 this.wallpaperGrid_.dataModel = wallpapersDataModel; 1078 this.wallpaperGrid_.dataModel = wallpapersDataModel;
1064 this.wallpaperGrid_.selectedItem = selectedItem; 1079 this.wallpaperGrid_.selectedItem = selectedItem;
1065 this.wallpaperGrid_.activeItem = selectedItem; 1080 this.wallpaperGrid_.activeItem = selectedItem;
1066 } 1081 }
1067 }; 1082 };
1068 1083
1069 })(); 1084 })();
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698