From 690882d1544b622b72adc9a2cf1b98c0eb8d578c Mon Sep 17 00:00:00 2001 From: Georgios Kalpakas Date: Thu, 14 Apr 2016 23:14:26 +0300 Subject: [PATCH] fix($http): pass event object to `eventHandlers`/`uploadEventHandlers` Fixes #14436 --- src/ng/http.js | 12 ++++++++---- test/ng/httpSpec.js | 9 +++++---- 2 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/ng/http.js b/src/ng/http.js index 09df456ed57d..2ca769256adf 100644 --- a/src/ng/http.js +++ b/src/ng/http.js @@ -1276,13 +1276,17 @@ function $HttpProvider() { if (eventHandlers) { var applyHandlers = {}; forEach(eventHandlers, function(eventHandler, key) { - applyHandlers[key] = function() { + applyHandlers[key] = function(event) { if (useApplyAsync) { - $rootScope.$applyAsync(eventHandler); + $rootScope.$applyAsync(callEventHandler); } else if ($rootScope.$$phase) { - eventHandler(); + callEventHandler(); } else { - $rootScope.$apply(eventHandler); + $rootScope.$apply(callEventHandler); + } + + function callEventHandler() { + eventHandler(event); } }; }); diff --git a/test/ng/httpSpec.js b/test/ng/httpSpec.js index 1f948f33307a..bd44b1cbbc00 100644 --- a/test/ng/httpSpec.js +++ b/test/ng/httpSpec.js @@ -1066,14 +1066,15 @@ describe('$http', function() { expect(mockXHR.$$events.progress).toEqual(jasmine.any(Function)); expect(mockXHR.upload.$$events.progress).toEqual(jasmine.any(Function)); + var eventObj = {}; spyOn($rootScope, '$digest'); - mockXHR.$$events.progress(); - expect(progressFn).toHaveBeenCalledOnce(); + mockXHR.$$events.progress(eventObj); + expect(progressFn).toHaveBeenCalledOnceWith(eventObj); expect($rootScope.$digest).toHaveBeenCalledTimes(1); - mockXHR.upload.$$events.progress(); - expect(uploadProgressFn).toHaveBeenCalledOnce(); + mockXHR.upload.$$events.progress(eventObj); + expect(uploadProgressFn).toHaveBeenCalledOnceWith(eventObj); expect($rootScope.$digest).toHaveBeenCalledTimes(2); }); });