| Index: ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js
|
| diff --git a/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js b/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js
|
| index b306b668b37432f12e317daa29818b1a41d13a85..e9f0d04cabc7243b8f4fa0ec6aa0478bf50161dd 100644
|
| --- a/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js
|
| +++ b/ui/file_manager/file_manager/foreground/js/thumbnail_loader_unittest.js
|
| @@ -6,6 +6,26 @@ function getLoadTarget(entry, metadata) {
|
| return new ThumbnailLoader(entry, null, metadata).getLoadTarget();
|
| }
|
|
|
| +/**
|
| + * Generates a data url of a sample image for testing.
|
| + *
|
| + * @param {number} width Width.
|
| + * @param {number} height Height.
|
| + * @return {string} Data url of a sample image.
|
| + */
|
| +function generateSampleImageDataUrl(width, height) {
|
| + var canvas = document.createElement('canvas');
|
| + canvas.width = width;
|
| + canvas.height = height;
|
| +
|
| + var context = canvas.getContext('2d');
|
| + context.fillStyle = 'black';
|
| + context.fillRect(0, 0, width / 2, height / 2);
|
| + context.fillRect(width / 2, height / 2, width / 2, height / 2);
|
| +
|
| + return canvas.toDataURL('image/png');
|
| +}
|
| +
|
| function testShouldUseMetadataThumbnail() {
|
| var mockFileSystem = new MockFileSystem('volumeId');
|
| var imageEntry = new MockEntry(mockFileSystem, '/test.jpg');
|
| @@ -33,3 +53,108 @@ function testShouldUseMetadataThumbnail() {
|
| getLoadTarget(
|
| pdfEntry, {external: {thumbnailUrl: 'url', dirty: true}}));
|
| }
|
| +
|
| +function testLoadAsDataUrlFromImageClient(callback) {
|
| + ImageLoaderClient.getInstance = function() {
|
| + return {
|
| + load: function(url, callback, opt_option) {
|
| + callback({
|
| + status: 'success', data: 'imageDataUrl', width: 32, height: 32});
|
| + }
|
| + };
|
| + };
|
| +
|
| + var fileSystem = new MockFileSystem('volume-id');
|
| + var entry = new MockEntry(fileSystem, '/Test1.jpg');
|
| + var thumbnailLoader = new ThumbnailLoader(entry);
|
| + reportPromise(thumbnailLoader.loadAsDataUrl().then(function(result) {
|
| + assertEquals('imageDataUrl', result.data);
|
| + }), callback);
|
| +}
|
| +
|
| +function testLoadAsDataUrlFromExifThumbnail(callback) {
|
| + ImageLoaderClient.getInstance = function() {
|
| + return {
|
| + load: function(url, callback, opt_option) {
|
| + // Assert that data url is passed.
|
| + assertTrue(/^data:/i.test(url));
|
| + callback({status: 'success', data: url, width: 32, height: 32});
|
| + }
|
| + };
|
| + };
|
| +
|
| + var metadata = {
|
| + thumbnail: {
|
| + url: generateSampleImageDataUrl(32, 32)
|
| + }
|
| + };
|
| +
|
| + var fileSystem = new MockFileSystem('volume-id');
|
| + var entry = new MockEntry(fileSystem, '/Test1.jpg');
|
| + var thumbnailLoader = new ThumbnailLoader(entry, undefined, metadata);
|
| + reportPromise(thumbnailLoader.loadAsDataUrl().then(function(result) {
|
| + assertEquals(metadata.thumbnail.url, result.data);
|
| + }), callback);
|
| +}
|
| +
|
| +function testLoadAsDataUrlFromExifThumbnailRotate(callback) {
|
| + ImageLoaderClient.getInstance = function() {
|
| + return {
|
| + load: function(url, callback, opt_option) {
|
| + // Assert that data url is passed.
|
| + assertTrue(/^data:/i.test(url));
|
| + callback({status: 'success', data: url, width: 64, height: 32});
|
| + }
|
| + };
|
| + };
|
| +
|
| + var metadata = {
|
| + thumbnail: {
|
| + url: generateSampleImageDataUrl(64, 32),
|
| + transform: {
|
| + rotate90: 1,
|
| + scaleX: 1,
|
| + scaleY: -1,
|
| + }
|
| + }
|
| + };
|
| +
|
| + var fileSystem = new MockFileSystem('volume-id');
|
| + var entry = new MockEntry(fileSystem, '/Test1.jpg');
|
| + var thumbnailLoader = new ThumbnailLoader(entry, undefined, metadata);
|
| + reportPromise(thumbnailLoader.loadAsDataUrl().then(function(result) {
|
| + assertEquals(32, result.width);
|
| + assertEquals(64, result.height);
|
| + // For test image, transformed image should become equal to the following
|
| + // generated sample image.
|
| + assertEquals(generateSampleImageDataUrl(32, 64), result.data);
|
| + }), callback);
|
| +}
|
| +
|
| +function testLoadAsDataUrlFromExternal(callback) {
|
| + var externalThumbnailUrl = 'https://external-thumbnail-url/';
|
| + var externalThumbnailDataUrl = generateSampleImageDataUrl(32, 32);
|
| +
|
| + ImageLoaderClient.getInstance = function() {
|
| + return {
|
| + load: function(url, callback, opt_option) {
|
| + assertEquals(externalThumbnailUrl, url);
|
| + callback({status: 'success', data: externalThumbnailDataUrl,
|
| + width: 32, height: 32});
|
| + }
|
| + };
|
| + };
|
| +
|
| + var metadata = {
|
| + external: {
|
| + thumbnailUrl: externalThumbnailUrl
|
| + }
|
| + }
|
| +
|
| + var fileSystem = new MockFileSystem('volume-id');
|
| + var entry = new MockEntry(fileSystem, '/Test1.jpg');
|
| + var thumbnailLoader = new ThumbnailLoader(entry, undefined, metadata);
|
| + reportPromise(thumbnailLoader.loadAsDataUrl().then(function(result) {
|
| + assertEquals(externalThumbnailDataUrl, result.data);
|
| + }), callback);
|
| +}
|
|
|