From d960c69b3478ab3b2dac1cd624c8a8bac57375cf Mon Sep 17 00:00:00 2001 From: Antoine Vandecreme Date: Thu, 30 Jul 2015 16:44:41 -0400 Subject: [PATCH] Replace eval call when passing a Json string. --- src/viewer.js | 3 +-- test/modules/formats.js | 60 +++++++++++++++++++++++++++++++---------- 2 files changed, 47 insertions(+), 16 deletions(-) diff --git a/src/viewer.js b/src/viewer.js index 01560f01..b0ee7757 100644 --- a/src/viewer.js +++ b/src/viewer.js @@ -1996,8 +1996,7 @@ function getTileSourceImplementation( viewer, tileSource, successCallback, if ( tileSource.match( /\s*<.*/ ) ) { tileSource = $.parseXml( tileSource ); } else if ( tileSource.match( /\s*[\{\[].*/ ) ) { - /*jshint evil:true*/ - tileSource = eval( '(' + tileSource + ')' ); + tileSource = $.parseJSON(tileSource); } } diff --git a/test/modules/formats.js b/test/modules/formats.js index 3c0f0610..2cef3576 100644 --- a/test/modules/formats.js +++ b/test/modules/formats.js @@ -14,14 +14,18 @@ var viewer = null; // ---------- - var testOpen = function(name) { + var testOpenUrl = function(relativeUrl) { + testOpen('/test/data/' + relativeUrl); + }; + + var testOpen = function(tileSource) { $(document).ready(function() { var timeWatcher = Util.timeWatcher(7000); viewer = OpenSeadragon({ id: 'example', prefixUrl: '/build/openseadragon/images/', - tileSources: '/test/data/' + name + tileSources: tileSource }); ok(viewer, 'Viewer exists'); @@ -52,62 +56,90 @@ // ---------- asyncTest('DZI', function() { - testOpen('testpattern.dzi'); + testOpenUrl('testpattern.dzi'); }); // ---------- asyncTest('DZI JSONp', function() { - testOpen('testpattern.js'); + testOpenUrl('testpattern.js'); }); // ---------- asyncTest('DZI XML', function() { - testOpen('testpattern.xml'); + testOpenUrl('testpattern.xml'); }); // ---------- asyncTest('DZI XML with query parameter', function() { - testOpen('testpattern.xml?param=value'); + testOpenUrl('testpattern.xml?param=value'); }); // ---------- asyncTest('IIIF 1.0 JSON', function() { - testOpen('iiif_1_0_files/info.json'); + testOpenUrl('iiif_1_0_files/info.json'); }); // ---------- asyncTest('IIIF 1.0 XML', function() { - testOpen('iiif_1_0_files/info.xml'); + testOpenUrl('iiif_1_0_files/info.xml'); }); // ---------- asyncTest('IIIF 1.1 JSON', function() { - testOpen('iiif_1_1_tiled/info.json'); + testOpenUrl('iiif_1_1_tiled/info.json'); }); // ---------- asyncTest('IIIF No Tiles, Less than 256', function() { - testOpen('iiif_1_1_no_tiles_255/info.json'); + testOpenUrl('iiif_1_1_no_tiles_255/info.json'); }); // ---------- asyncTest('IIIF No Tiles, Bet. 256 and 512', function() { - testOpen('iiif_1_1_no_tiles_384/info.json'); + testOpenUrl('iiif_1_1_no_tiles_384/info.json'); }); // ---------- asyncTest('IIIF No Tiles, Bet. 512 and 1024', function() { - testOpen('iiif_1_1_no_tiles_768/info.json'); + testOpenUrl('iiif_1_1_no_tiles_768/info.json'); }); // ---------- asyncTest('IIIF No Tiles, Larger than 1024', function() { - testOpen('iiif_1_1_no_tiles_1048/info.json'); + testOpenUrl('iiif_1_1_no_tiles_1048/info.json'); }); // ---------- asyncTest('IIIF 2.0 JSON', function() { - testOpen('iiif_2_0_tiled/info.json'); + testOpenUrl('iiif_2_0_tiled/info.json'); + }); + + // ---------- + asyncTest('IIIF 2.0 JSON String', function() { + testOpen( + '{' + + ' "@context": "http://iiif.io/api/image/2/context.json",' + + ' "@id": "http://localhost:8000/test/data/iiif_2_0_tiled",' + + ' "protocol": "http://iiif.io/api/image",' + + ' "height": 1024,' + + ' "width": 775,' + + ' "tiles" : [{"width":256, "scaleFactors":[1,2,4,8]}],' + + ' "profile": ["http://iiif.io/api/image/2/level1.json",' + + ' {' + + ' "qualities": [' + + ' "native",' + + ' "bitonal",' + + ' "grey",' + + ' "color"' + + ' ],' + + ' "formats": [' + + ' "jpg",' + + ' "png",' + + ' "gif"' + + ' ]' + + ' }' + + ' ]' + + '}'); }); })();