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); }); });