From 3265b0e73f00e96dd5a789db595f12dea9d7a863 Mon Sep 17 00:00:00 2001 From: Bart van den Eijnden Date: Tue, 13 Nov 2012 09:43:31 +0100 Subject: [PATCH] Make sure config.headers does not overwrite DEFAULT_CONFIG.headers in OpenLayers.Request.issue --- lib/OpenLayers/Request.js | 4 +++- tests/Request.html | 30 +++++++++++++++++++++++++++++- 2 files changed, 32 insertions(+), 2 deletions(-) diff --git a/lib/OpenLayers/Request.js b/lib/OpenLayers/Request.js index e593178409..c61ce6a556 100644 --- a/lib/OpenLayers/Request.js +++ b/lib/OpenLayers/Request.js @@ -173,8 +173,10 @@ OpenLayers.Util.extend(OpenLayers.Request, { this.DEFAULT_CONFIG, {proxy: OpenLayers.ProxyHost} ); + config = config || {}; + config.headers = config.headers || {}; config = OpenLayers.Util.applyDefaults(config, defaultConfig); - + config.headers = OpenLayers.Util.applyDefaults(config.headers, defaultConfig.headers); // Always set the "X-Requested-With" header to signal that this request // was issued through the XHR-object. Since header keys are case // insensitive and we want to allow overriding of the "X-Requested-With" diff --git a/tests/Request.html b/tests/Request.html index 29ced665ae..cd679c699d 100644 --- a/tests/Request.html +++ b/tests/Request.html @@ -16,7 +16,35 @@ function teardown() { OpenLayers.Request.XMLHttpRequest = window._xhr; } - + + function test_defaultHeaders(t) { + setup(); + t.plan(2); + var config = { + headers: { + x: 'y' + } + }; + OpenLayers.Request.DEFAULT_CONFIG.headers = { + foo: 'bar' + }; + var proto = OpenLayers.Request.XMLHttpRequest.prototype; + var issue = OpenLayers.Function.bind(OpenLayers.Request.issue, + OpenLayers.Request); + + var headers = {}; + var _setRequestHeader = proto.setRequestHeader; + proto.setRequestHeader = function(key, value) { + headers[key] = value; + }; + request = issue(config); + t.eq(headers.foo, 'bar', "Header from DEFAULT_CONFIG set correctly"); + t.eq(headers.x, 'y', "Header from config set correctly"); + proto.setRequestHeader = _setRequestHeader; + OpenLayers.Request.DEFAULT_CONFIG.headers = {}; + teardown(); + } + function test_issue(t) { setup();