| 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 313ec4b96d9e419429051a538e4fb7ed7d581158..74d6795e4996b618267e6e2910aa62cb31177b81 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,192 @@
|
| 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]
|
| +};
|
| +
|
| +// mock FileReader object in HTML5 File System
|
| +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)
|
| + 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 deep subdirectory')
|
| + }
|
| + }
|
| + },
|
| + /**
|
| + * Create a new file in mockLocalFS.
|
| + * @param {string} fileName File name that to be created.
|
| + * @return {FileEntry} Handle of the new file
|
| + */
|
| + mockTestFile: function(fileName) {
|
| + var mockFile;
|
| + if (fileName[0] == '/')
|
| + fileName = fileName.substr(1);
|
| + if (fileName.split('/').length == 1) {
|
| + mockFile = new FileEntry(fileName);
|
| + this.root.rootFileList.push(mockFile);
|
| + } 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) {mockFile = fe;} );
|
| + };
|
| + this.root.getDirectory(realDirName, {create: true}, getDirSuccess);
|
| + } else {
|
| + console.error('Only support one-level fileSystem mock')
|
| + }
|
| + return mockFile;
|
| + },
|
| + /**
|
| + * Delete all files and directories in mockLocalFS.
|
| + */
|
| + 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]);
|
| + }
|
| + },
|
| + },
|
| + /**
|
| + * Create a new file in mockSyncFS.
|
| + * @param {string} fileName File name that to be created.
|
| + * @return {FileEntry} Handle of the new file
|
| + */
|
| + mockTestFile: function(fileName) {
|
| + var mockFile = new FileEntry(fileName);
|
| + this.root.fileList.push(mockFile);
|
| + return mockFile;
|
| + },
|
| + /**
|
| + * Delete all files in mockSyncFS.
|
| + */
|
| + reset: function() {
|
| + this.root.fileList = [];
|
| + }
|
| };
|
|
|
| // Mock a few chrome apis.
|
| @@ -20,7 +205,7 @@ var chrome = {
|
| items[Constants.AccessLocalWallpaperInfoKey] = {
|
| 'url': 'dummy',
|
| 'layout': 'dummy',
|
| - 'source': 'dummy'
|
| + 'source': Constants.WallpaperSourceEnum.Custom
|
| };
|
| }
|
| callback(items);
|
| @@ -41,7 +226,8 @@ var chrome = {
|
| }
|
| },
|
| syncFileSystem: {
|
| - requestFileSystem: function(fs) {
|
| + requestFileSystem: function(callback) {
|
| + callback(mockSyncFS);
|
| },
|
| onFileStatusChanged: {
|
| addListener: function(listener) {
|
| @@ -67,9 +253,15 @@ var chrome = {
|
| getStrings: function(callback) {
|
| callback({isExperimental: false});
|
| },
|
| + setCustomWallpaper: function(data, layout, isGenerateThumbnail, fileName,
|
| + callback) {
|
| + },
|
| getSyncSetting: function(callback) {
|
| callback({syncThemes: true});
|
| }
|
| + },
|
| + runtime: {
|
| + lastError: null
|
| }
|
| };
|
|
|
| @@ -100,20 +292,18 @@ var chrome = {
|
| var listeners = this.eventListeners && this.eventListeners[type] || [];
|
|
|
| for (var i = 0; i < listeners.length; ++i) {
|
| - if (listeners[i] == listener) {
|
| + if (listeners[i] == listener)
|
| return listeners.splice(i, 1);
|
| - }
|
| }
|
| },
|
|
|
| dispatchEvent: function(type) {
|
| var listeners = this.eventListeners && this.eventListeners[type] || [];
|
|
|
| - if (/test.jpg$/g.test(this.url)) {
|
| - this.response = TestConstants.image;
|
| - } else {
|
| + if (/test.jpg$/g.test(this.url))
|
| + this.response = TestConstants.IMAGE;
|
| + else
|
| this.response = '';
|
| - }
|
|
|
| for (var i = 0; i < listeners.length; ++i)
|
| listeners[i].call(this, new Event(type));
|
|
|