Chromium Code Reviews| Index: chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js |
| diff --git a/chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js b/chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js |
| index f7318bcd47be23af2ca696daf8efa4623672333b..df498c7605348ca11b57aeec7bf865dbd729ffee 100644 |
| --- a/chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js |
| +++ b/chrome/test/data/chromeos/wallpaper_manager/unit_tests/api_mock.js |
| @@ -6,7 +6,178 @@ |
| var TestConstants = { |
| wallpaperURL: 'https://test.com/test.jpg', |
| // A dummy string which is used to mock an image. |
| - image: '*#*@#&' |
| + image: '*#*@#&', |
| + // A dummy array which is used to mock the file content. |
| + fileString: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15] |
| +}; |
| + |
| +function FileReader() { |
| + this.result = ''; |
| + this.onloadend = function() { |
| + }; |
| + this.readAsArrayBuffer = function(mockFile) { |
| + this.result = mockFile; |
| + this.onloadend(); |
| + } |
| +} |
| + |
| +// Mock localFS handler |
| +var mockLocalFS = { |
| + root: { |
| + dirList: [], |
| + rootFileList: [], |
| + getDirectory: function(dir, isCreate, success, failure) { |
| + for(var i = 0; i < this.dirList.length; i++) { |
| + if (this.dirList[i].name == dir) { |
| + success(this.dirList[i]); |
| + return; |
| + } |
| + } |
| + if (!isCreate.create) { |
| + if (failure) { |
|
bshe
2014/10/28 22:34:57
nit: perhaps easier to read this way:
if (!isCreat
Ran
2014/10/29 19:13:13
I don't think they are equivalent. As if we pass i
bshe
2014/10/30 12:51:36
dooh. My mistake. you are right.
|
| + failure('DIR_NOT_FOUND'); |
| + } |
| + } else { |
| + this.dirList.push(new DirEntry(dir)); |
| + success(this.dirList[this.dirList.length - 1]); |
| + } |
| + }, |
| + getFile: function(fileName, isCreate, success, failure) { |
| + if (fileName[0] == '/') |
| + fileName = fileName.substr(1); |
| + if (fileName.split('/').length == 1) { |
| + for(var i = 0; i < this.rootFileList.length; i++) { |
| + if (fileName == this.rootFileList[i].name) { |
| + success(this.rootFileList[i]); |
| + return; |
| + } |
| + } |
| + if (!isCreate.create) { |
| + if (failure) |
| + failure('FILE_NOT_FOUND'); |
| + } else { |
| + this.rootFileList.push(new FileEntry(fileName)); |
| + success(this.rootFileList[this.rootFileList.length - 1]); |
| + } |
| + } else if (fileName.split('/').length == 2) { |
| + var realDirName = fileName.split('/')[0]; |
| + var realFileName = fileName.split('/')[1]; |
| + var getDirSuccess = function(dirEntry) { |
| + dirEntry.getFile(realFileName, isCreate, success, failure); |
| + }; |
| + this.getDirectory(realDirName, {create: false}, |
| + getDirSuccess, failure); |
| + } else { |
| + console.error('Only support one-level fileSystem mock') |
|
bshe
2014/10/28 22:34:57
nit: Only support one level deep subdirectory.
Ran
2014/10/29 19:13:13
Done.
|
| + } |
| + } |
| + }, |
| + mockTestFile: function(fileName) { |
| + var ret; |
|
bshe
2014/10/28 22:34:57
nit: ret/mockFile
Ran
2014/10/29 19:13:13
Done.
|
| + if (fileName[0] == '/') |
| + fileName = fileName.substr(1); |
| + if (fileName.split('/').length == 1) { |
| + ret = new FileEntry(fileName); |
| + this.root.rootFileList.push(ret); |
| + } else if (fileName.split('/').length == 2) { |
| + var realDirName = fileName.split('/')[0]; |
| + var realFileName = fileName.split('/')[1]; |
| + var getDirSuccess = function(dirEntry) { |
| + dirEntry.getFile(realFileName, {create: true}, |
| + function(fe) {ret = fe;} ); |
| + }; |
| + this.root.getDirectory(realDirName, {create: true}, getDirSuccess); |
| + } else { |
| + console.error('Only support one-level fileSystem mock') |
| + } |
| + return ret; |
| + }, |
| + reset: function() { |
| + this.root.dirList = []; |
| + this.root.rootFileList = []; |
| + } |
| +}; |
| + |
| +function DirEntry(dirname) { |
| + this.name = dirname; |
| + this.fileList = []; |
| + this.getFile = function(fileName, isCreate, success, failure) { |
| + for(var i = 0; i < this.fileList.length; i++) { |
| + if (fileName == this.fileList[i].name) { |
| + success(this.fileList[i]); |
| + return; |
| + } |
| + } |
| + if (!isCreate.create) { |
| + if (failure) { |
| + failure('FILE_NOT_FOUND'); |
| + } |
| + } else { |
| + this.fileList.push( new FileEntry(fileName) ); |
| + success(this.fileList[this.fileList.length - 1]); |
| + } |
| + } |
| +} |
| + |
| +window.webkitRequestFileSystem = function(type, size, callback) { |
| + callback(mockLocalFS); |
| +} |
| + |
| +function Blob(arg) { |
| + var data = arg[0]; |
| + this.content = ''; |
| + if (typeof data == 'string') { |
| + this.content = data; |
| + } else { |
| + this.content = Array.prototype.join.call(data); |
| + } |
| +} |
| + |
| +var mockWriter = { |
| + write: function(blobData) { |
| + } |
| +}; |
| + |
| +function FileEntry(filename) { |
| + this.name = filename; |
| + this.file = function(callback) { |
| + callback(TestConstants.fileString); |
| + }; |
| + this.createWriter = function(callback) { |
| + callback(mockWriter); |
| + }; |
| + this.remove = function(success, failure) { |
| + }; |
| +} |
| + |
| +// Mock chrome syncFS handler |
| +var mockSyncFS = { |
| + root: { |
| + fileList: [], |
| + getFile: function(fileName, isCreate, success, failure) { |
| + for(var i = 0; i < this.fileList.length; i++) { |
| + if (fileName == this.fileList[i].name) { |
| + success(this.fileList[i]); |
| + return; |
| + } |
| + } |
| + if (!isCreate.create) { |
| + if (failure) |
| + failure('FILE_NOT_FOUND'); |
| + } else { |
| + this.fileList.push(new FileEntry(fileName)); |
| + success(this.fileList[this.fileList.length - 1]); |
| + } |
| + }, |
| + }, |
| + mockTestFile: function(fileName) { |
| + var ret = new FileEntry(fileName); |
| + this.root.fileList.push(ret); |
| + return ret; |
| + }, |
| + reset: function() { |
| + this.root.fileList = []; |
| + } |
| }; |
| // Mock a few chrome apis. |
| @@ -20,7 +191,7 @@ var chrome = { |
| items[Constants.AccessLocalWallpaperInfoKey] = { |
| 'url': 'dummy', |
| 'layout': 'dummy', |
| - 'source': 'dummy' |
| + 'source': Constants.WallpaperSourceEnum.Custom |
| }; |
| } |
| callback(items); |
| @@ -41,7 +212,8 @@ var chrome = { |
| } |
| }, |
| syncFileSystem: { |
| - requestFileSystem: function(fs) { |
| + requestFileSystem: function(callback) { |
| + callback(mockSyncFS); |
| }, |
| onFileStatusChanged: { |
| addListener: function(listener) { |
| @@ -66,7 +238,13 @@ var chrome = { |
| wallpaperPrivate: { |
| getStrings: function(callback) { |
| callback({isExperimental: false}); |
| + }, |
| + setCustomWallpaper: function(data, layout, isGenerateThumbnail, fileName, |
| + callback) { |
| } |
| + }, |
| + runtime: { |
| + lastError: null |
| } |
| }; |