mirror of
https://github.com/openseadragon/openseadragon.git
synced 2024-11-22 13:16:10 +03:00
Merge pull request #613 from avandecreme/master
Fix Cross Origin policy not working (#612)
This commit is contained in:
commit
001c95a5c3
@ -175,9 +175,6 @@
|
|||||||
* these paths, prefer setting the option.prefixUrl rather than overriding
|
* these paths, prefer setting the option.prefixUrl rather than overriding
|
||||||
* every image path directly through this setting.
|
* every image path directly through this setting.
|
||||||
*
|
*
|
||||||
* @property {Object} [tileHost=null]
|
|
||||||
* TODO: Implement this. Currently not used.
|
|
||||||
*
|
|
||||||
* @property {Boolean} [debugMode=false]
|
* @property {Boolean} [debugMode=false]
|
||||||
* TODO: provide an in-screen panel providing event detail feedback.
|
* TODO: provide an in-screen panel providing event detail feedback.
|
||||||
*
|
*
|
||||||
|
@ -409,10 +409,10 @@ $.Viewer = function( options ) {
|
|||||||
width: this.navigatorWidth,
|
width: this.navigatorWidth,
|
||||||
height: this.navigatorHeight,
|
height: this.navigatorHeight,
|
||||||
autoResize: this.navigatorAutoResize,
|
autoResize: this.navigatorAutoResize,
|
||||||
tileHost: this.tileHost,
|
|
||||||
prefixUrl: this.prefixUrl,
|
prefixUrl: this.prefixUrl,
|
||||||
viewer: this,
|
viewer: this,
|
||||||
navigatorRotate: this.navigatorRotate
|
navigatorRotate: this.navigatorRotate,
|
||||||
|
crossOriginPolicy: this.crossOriginPolicy
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -505,7 +505,6 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype,
|
|||||||
height: this.referenceStripHeight,
|
height: this.referenceStripHeight,
|
||||||
width: this.referenceStripWidth,
|
width: this.referenceStripWidth,
|
||||||
tileSources: this.tileSources,
|
tileSources: this.tileSources,
|
||||||
tileHost: this.tileHost,
|
|
||||||
prefixUrl: this.prefixUrl,
|
prefixUrl: this.prefixUrl,
|
||||||
viewer: this
|
viewer: this
|
||||||
});
|
});
|
||||||
@ -1290,6 +1289,7 @@ $.extend( $.Viewer.prototype, $.EventSource.prototype, $.ControlDock.prototype,
|
|||||||
blendTime: _this.blendTime,
|
blendTime: _this.blendTime,
|
||||||
alwaysBlend: _this.alwaysBlend,
|
alwaysBlend: _this.alwaysBlend,
|
||||||
minPixelRatio: _this.minPixelRatio,
|
minPixelRatio: _this.minPixelRatio,
|
||||||
|
crossOriginPolicy: _this.crossOriginPolicy,
|
||||||
debugMode: _this.debugMode
|
debugMode: _this.debugMode
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -39,7 +39,7 @@
|
|||||||
<script src="/src/referencestrip.js"></script>
|
<script src="/src/referencestrip.js"></script>
|
||||||
<script src="/src/displayrectangle.js"></script>
|
<script src="/src/displayrectangle.js"></script>
|
||||||
<script src="/src/spring.js"></script>
|
<script src="/src/spring.js"></script>
|
||||||
<script src="/src/imageLoader.js"></script>
|
<script src="/src/imageloader.js"></script>
|
||||||
<script src="/src/tile.js"></script>
|
<script src="/src/tile.js"></script>
|
||||||
<script src="/src/overlay.js"></script>
|
<script src="/src/overlay.js"></script>
|
||||||
<script src="/src/drawer.js"></script>
|
<script src="/src/drawer.js"></script>
|
||||||
|
@ -301,4 +301,77 @@
|
|||||||
viewer.open('/test/data/testpattern.dzi');
|
viewer.open('/test/data/testpattern.dzi');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// The Wikipedia logo has CORS enabled
|
||||||
|
var corsImg = 'http://upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png';
|
||||||
|
|
||||||
|
// PhantomJS always taint the canvas, so we only run some tests on browsers
|
||||||
|
// supporting CORS images.
|
||||||
|
function browserSupportsImgCrossOrigin(callback) {
|
||||||
|
var img = new Image();
|
||||||
|
img.crossOrigin = 'anonymous';
|
||||||
|
img.onload = function() {
|
||||||
|
var canvas = document.createElement("canvas");
|
||||||
|
var ctx = canvas.getContext("2d");
|
||||||
|
ctx.drawImage(img, 0, 0);
|
||||||
|
callback(!isCanvasTainted(ctx));
|
||||||
|
};
|
||||||
|
img.src = corsImg;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isCanvasTainted(context) {
|
||||||
|
var isTainted = false;
|
||||||
|
try {
|
||||||
|
// We test if the canvas is tainted by retrieving data from it.
|
||||||
|
// An exception will be raised if the canvas is tainted.
|
||||||
|
var url = context.getImageData(0, 0, 1, 1);
|
||||||
|
} catch (e) {
|
||||||
|
isTainted = true;
|
||||||
|
}
|
||||||
|
return isTainted;
|
||||||
|
}
|
||||||
|
|
||||||
|
asyncTest( 'CrossOriginPolicyMissing', function () {
|
||||||
|
|
||||||
|
viewer.crossOriginPolicy = false;
|
||||||
|
viewer.open( {
|
||||||
|
type: 'legacy-image-pyramid',
|
||||||
|
levels: [ {
|
||||||
|
url: corsImg,
|
||||||
|
width: 135,
|
||||||
|
height: 155
|
||||||
|
} ]
|
||||||
|
} );
|
||||||
|
viewer.addHandler('tile-drawn', function() {
|
||||||
|
ok(isCanvasTainted(viewer.drawer.context), "Canvas should be tainted.");
|
||||||
|
start();
|
||||||
|
});
|
||||||
|
|
||||||
|
} );
|
||||||
|
|
||||||
|
asyncTest( 'CrossOriginPolicyAnonymous', function () {
|
||||||
|
|
||||||
|
browserSupportsImgCrossOrigin(function(supported) {
|
||||||
|
if (!supported) {
|
||||||
|
expect(0);
|
||||||
|
start();
|
||||||
|
} else {
|
||||||
|
viewer.crossOriginPolicy = 'Anonymous';
|
||||||
|
viewer.open( {
|
||||||
|
type: 'legacy-image-pyramid',
|
||||||
|
levels: [ {
|
||||||
|
url: corsImg,
|
||||||
|
width: 135,
|
||||||
|
height: 155
|
||||||
|
} ]
|
||||||
|
} );
|
||||||
|
viewer.addHandler('tile-drawn', function() {
|
||||||
|
ok(!isCanvasTainted(viewer.drawer.context), "Canvas should not be tainted.");
|
||||||
|
start();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
} );
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
@ -843,4 +843,29 @@
|
|||||||
viewer.addHandler('open', openHandler);
|
viewer.addHandler('open', openHandler);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
asyncTest('Viewer options transmitted to navigator', function() {
|
||||||
|
|
||||||
|
viewer = OpenSeadragon({
|
||||||
|
id: 'example',
|
||||||
|
prefixUrl: '/build/openseadragon/images/',
|
||||||
|
tileSources: ['/test/data/testpattern.dzi', '/test/data/testpattern.dzi'],
|
||||||
|
springStiffness: 100, // Faster animation = faster tests
|
||||||
|
showNavigator: true,
|
||||||
|
collectionMode: true,
|
||||||
|
crossOriginPolicy: 'Anonymous'
|
||||||
|
});
|
||||||
|
viewer.addHandler('open', function openHandler() {
|
||||||
|
viewer.removeHandler('open', openHandler);
|
||||||
|
|
||||||
|
var navigator = viewer.navigator;
|
||||||
|
|
||||||
|
equal(navigator.prefixUrl, viewer.prefixUrl,
|
||||||
|
"Prefix URL should be transmitted to the navigator.");
|
||||||
|
equal(navigator.crossOriginPolicy, viewer.crossOriginPolicy,
|
||||||
|
"Cross origin policy should be transmitted to the navigator.");
|
||||||
|
start();
|
||||||
|
});
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
})();
|
})();
|
||||||
|
Loading…
Reference in New Issue
Block a user