aboutsummaryrefslogtreecommitdiffstats
path: root/src
AgeCommit message (Collapse)Author
2013-06-24fix($location): default to / for the url base if no base[href]Igor Minar
With the recent refactoring of $location service we changed this behavior resulting in a regression. Previously we thought that html5 mode always required base[href] to be set in order for urls to resolve properly. It turns out that base[href] is problematic because it makes anchor urls (#foo) to always resolve to the base url, which is almost always incorrect and results in all anchors links and other anchor urls (e.g. svg references) to be broken. For this reason, we should now start recommending that people just deploy to root context (/) and not set the base[href] when using the html5 mode (push/pop history state). If it's impossible to deploy to the root context then either all urls in the app must be absolute or base[href] must be set with the caveat that anchor urls in such app won't work. Closes #2762
2013-06-24fix($parse): move global getter out of parse.jsChirayu Krishnappa
2013-06-24fix($compile): reject multi-expression interpolations for src attributeChirayu Krishnappa
BREAKING CHANGE: Concatenating expressions makes it hard to reason about whether some combination of concatenated values are unsafe to use and could easily lead to XSS. By requiring that a single expression be used for *[src/ng-src] such as iframe[src], object[src], etc. (but not img[src/ng-src] since that value is sanitized), we ensure that the value that's used is assigned or constructed by some JS code somewhere that is more testable or make it obvious that you bound the value to some user controlled value. This helps reduce the load when auditing for XSS issues. To migrate your code, follow the example below: Before: JS: scope.baseUrl = 'page'; scope.a = 1; scope.b = 2; HTML: <!-- Are a and b properly escaped here? Is baseUrl controlled by user? --> <iframe src="{{baseUrl}}?a={{a}&b={{b}}"> After: JS: var baseUrl = "page"; scope.getIframeSrc = function() { // There are obviously better ways to do this. The // key point is that one will think about this and do // it the right way. var qs = ["a", "b"].map(function(value, name) { return encodeURIComponent(name) + "=" + encodeURIComponent(value); }).join("&"); // baseUrl isn't on scope so it isn't bound to a user // controlled value. return baseUrl + "?" + qs; } HTML: <iframe src="{{getIframeSrc()}}">
2013-06-21fix($compile): disallow interpolations for DOM event handlersChirayu Krishnappa
BREAKING CHANGE: Interpolations inside DOM event handlers are disallowed. DOM event handlers execute arbitrary Javascript code. Using an interpolation for such handlers means that the interpolated value is a JS string that is evaluated. Storing or generating such strings is error prone and likely leads to an XSS if you're not super careful. On the other hand, ng-click and such event handlers evaluate Angular expressions that are a lot safer (e.g. No direct access to global objects - only scope), cleaner and harder to exploit. To migrate the code follow the example below: Before: JS: scope.foo = 'alert(1)'; HTML: <div onclick="{{foo}}"> After: JS: scope.foo = function() { alert(1); } HTML: <div ng-click="foo()">
2013-06-21fix($compile): sanitize values bound to img[src]Chirayu Krishnappa
Ref: 9532234bf1c408af9a6fd2c4743fdb585b920531 BREAKING CHANGE: img[src] URLs are now sanitized using the same whitelist as a[href] URLs. The most obvious impact is if you were using data: URIs. data: URIs will be whitelisted for img[src] in a future commit.
2013-06-20refactor(angular.bootstrap): rename internal functionPete Bacon Darwin
2013-06-20fix(Angular.js): don't crash on invalid query parametersPete Bacon Darwin
2013-06-20docs(ngRepeat): fix typoJens Rantil
2013-06-19fix($http): ensure case-insens. header overridingCaio Cunha
If user send content-type header, both content-type and default Content-Type headers were sent. Now default header overriding is case-insensitive.
2013-06-19feat(jqLite): switch bind/unbind to more recent jQuery on/offMichał Gołębiowski
jQuery switched to a completely new event binding implementation as of 1.7.0, centering around on/off methods instead of previous bind/unbind. This patch makes jqLite match this implementation while still supporting previous bind/unbind methods.
2013-06-18docs(loader): fix typo and minor semantic errorOre Landau
2013-06-17feat(ngdocs): support popover, foldouts and foldover annotationsMatias Niemelä
2013-06-17fix(ngMock): ensure mocked window still provides window.location functionalityMatias Niemelä
2013-06-17fix(jqLite): allow override of jqLite.triggerHandler event objectMatias Niemelä
2013-06-17chore(minErr): replace ngError with minErrKen Sheedlo
2013-06-13docs(select): fix typos in ngOptionsMisha Moroshko
2013-06-13docs($q): fix a few issuesOre Landau
2013-06-13style(ngRepeat): fix typosJulien Bouquillon
2013-06-12docs(FormController): add methods for FormControllerDean Sofer
2013-06-12docs(ngModelController): improve $parsers/$formatters with exampleDean Peterson
2013-06-12docs(ngClass): fix minor typo.Ore Landau
2013-06-11docs(ngRoute): clarify when gets updatedPete Bacon Darwin
2013-06-11docs(ngSubmit): clarify that there must be no `action` attributePete Bacon Darwin
2013-06-11fix(ngRepeat): support growing over multi-element groupsMisko Hevery
2013-06-11fix($compile): support multi-element group over text nodesMisko Hevery
2013-06-06feat(ngdocs): provide documentation for the new ngRepeat repeater syntaxMatias Niemelä
2013-06-06chore(AngularPublic): remove angular.noConflict featureMatias Niemelä
2013-06-06refactor($route): pull $route and friends into angular-route.jsIgor Minar
$route, $routeParams and ngView have been pulled from core angular.js to angular-route.js/ngRoute module. This is was done to in order keep the core focused on most commonly used functionality and allow community routers to be freely used instead of $route service. There is no need to panic, angular-route will keep on being supported by the angular team. Note: I'm intentionally not fixing tutorial links. Tutorial will need bigger changes and those should be done when we update tutorial to 1.2. BREAKING CHANGE: applications that use $route will now need to load angular-route.js file and define dependency on ngRoute module. Before: ``` ... <script src="angular.js"></script> ... var myApp = angular.module('myApp', ['someOtherModule']); ... ``` After: ``` ... <script src="angular.js"></script> <script src="angular-route.js"></script> ... var myApp = angular.module('myApp', ['ngRoute', 'someOtherModule']); ... ``` Closes #2804
2013-06-04docs(ngTransclude): fix outdated scope definition in exampleMarcin Wosinek
2013-06-04docs(Angular.js): clarify ngApp usageRobbie Ferrero
2013-06-04docs(angular-mocks): fix typo in exampleRobb Shecter
fromJSON() should be fromJson()
2013-06-04docs(sanitize): add @description sectionAlan Klement
2013-06-04docs(ngClass): clarify the use of object mapLuc Morin
2013-06-04docs(input): provide explanation of how ngModel will affect the local scopeLuc Morin
2013-05-31fix(ngController): fix indentation bug which causes example to mess upMatias Niemelä
2013-05-30fix(jqLite): Added optional name arg in removeDataJeff Cross
jQuery's API for removeData allows a second 'name' argument to just remove the property by that name from an element's data. The absence of this argument was causing some features not to work correctly when combining multiple directives, such as ng-click, ng-show, and ng-animate.
2013-05-30fix($animator): ensure $animator calculates the highest duration + delay for ↵Matias Niemelä
and transitions and animations together
2013-05-30docs(): Rectify animator.animate documentationGias Kay Lee
2013-05-30feat(ngdocs): provide support for inline variable hintingMatias Niemelä
2013-05-28feat($compile): support multi-element directiveMisko Hevery
By appending directive-start and directive-end to a directive it is now possible to have the directive act on a group of elements. It is now possible to iterate over multiple elements like so: <table> <tr ng-repeat-start="item in list">I get repeated</tr> <tr ng-repeat-end>I also get repeated</tr> </table>
2013-05-24feat(ngError): add error message compression and better error messagesIgor Minar
- add toThrowNg matcher
2013-05-23feat($swipe): Refactor swipe logic from ngSwipe to $swipe service.Braden Shepherdson
This new service is used by the ngSwipeLeft/Right directives, and by the separate ngCarousel and swipe-to-delete directives which are under development.
2013-05-23feat($resource): expose promise instead of only $thenAlexander Shtuchkin
- Instance or collection have `$promise` property which is the initial promise. - Add per-action `interceptor`, which has access to entire $http response object. BREAKING CHANGE: resource instance does not have `$then` function anymore. Before: Resource.query().$then(callback); After: Resource.query().$promise.then(callback); BREAKING CHANGE: instance methods return the promise rather than the instance itself. Before: resource.$save().chaining = true; After: resource.$save(); resourve.chaining = true; BREAKING CHANGE: On success, promise is resolved with the resource instance rather than http response object. Use interceptor to access the http response object. Before: Resource.query().$then(function(response) {...}); After: var Resource = $resource('/url', {}, { get: { method: 'get', interceptor: { response: function(response) { // expose response return response; } } } });
2013-05-23fix(jqLite): correctly monkey-patch core jQuery methodsMichał Gołębiowski
When real jQuery is present, Angular monkey patch it to fire `$destroy` event. This commit fixes two issues in the jQuery patch: - passing a selector to the $.fn.remove method (only fire `$destroy` on the matched elements) - using `$.fn.html` without parameters as a getter (do not fire `$destroy`)
2013-05-23docs(input): add missing ngChange directive for email typeDavid Bennett
All other input types already have it.
2013-05-21docs(Angular.js): add missing @returns to extend()Joakim Blomskøld
2013-05-20chore(ngdocs): move angular-bootstrap.js to be generated only inside the ↵Matias Niemelä
docs and remove from the build process
2013-05-20feat($http): add support for aborting via timeout promisesDavid Bennett
If the timeout argument is a promise, abort the request when it is resolved. Implemented by adding support to $httpBackend service and $httpBackend mock service. This api can also be used to explicitly abort requests while keeping the communication between the deffered and promise unidirectional. Closes #1159
2013-05-20docs(filters): fix minor typographical errorDaniel Tse
Fix a typographical error "it's" -> "its" in the dateFilter documentation
2013-05-20doc(filter): remove invalid characterMisha Moroshko