| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 Loading... |
| 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 })(); |
| OLD | NEW |