aboutsummaryrefslogtreecommitdiffstats
path: root/test
AgeCommit message (Collapse)Author
2013-10-07feat($interval): add a service wrapping setIntervalJulie
The $interval service simplifies creating and testing recurring tasks. This service does not increment $browser's outstanding request count, which means that scenario tests and Protractor tests will not timeout when a site uses a polling function registered by $interval. Provides a workaround for #2402. For unit tests, repeated tasks can be controlled using ngMock$interval's tick(), tickNext(), and tickAll() functions.
2013-10-07fix(*): protect calls to hasOwnProperty in public APIPeter Bacon Darwin
Objects received from outside AngularJS may have had their `hasOwnProperty` method overridden with something else. In cases where we can do this without incurring a performance penalty we call directly on Object.prototype.hasOwnProperty to ensure that we use the correct method. Also, we have some internal hash objects, where the keys for the map are provided from outside AngularJS. In such cases we either prevent `hasOwnProperty` from being used as a key or provide some other way of preventing our objects from having their `hasOwnProperty` overridden. BREAKING CHANGE: Inputs with name equal to "hasOwnProperty" are not allowed inside form or ngForm directives. Before, inputs whose name was "hasOwnProperty" were quietly ignored and not added to the scope. Now a badname exception is thrown. Using "hasOwnProperty" for an input name would be very unusual and bad practice. Either do not include such an input in a `form` or `ngForm` directive or change the name of the input. Closes #3331
2013-10-07style(injectorSpec): add semicolons & test helpersPeter Bacon Darwin
2013-10-07style(angularSpec): add missing semicolonPeter Bacon Darwin
2013-10-05fix(rootScope): make stopPropagation only stop its own eventPete Bacon Darwin
All sibling event handlers residing on the same scope to were stopped if one of them called stopPropagation. Closes #4204
2013-10-04fix(ngResource): Remove request body from $deleteJen Bourey
Prevent the obj.$delete instance method from sending the resource as the request body. This commit uses the existing hasBody boolean to only set httpConfig.data for methods which should have a request body. Closes #4280
2013-10-04chore($parse): convert parser() and lex() to prototype-based codejankuca
This reduces memory consumption of parsed angular expressions and speeds up parsing. This JSPerf case demonstrates the performance boost: http://jsperf.com/closure-vs-prototype-ngparser Chrome: 1.5–2x boost FF: slightly slower (I would love to know why) IE: 4x boost To be clear, this doesn't have any impact on runtime performance of expressions as demostrated in this JSPerf: http://jsperf.com/angular-parser-changes Closes #3681
2013-10-04fix(routeProvider): parametrized routes do not match against locations that ↵Nicola Peduzzi
would not valorize each parameters.
2013-10-03fix($compile): fix (reverse) directive postLink fn execution orderIgor Minar
previously the compile/link fns executed in this order controlled via priority: - CompilePriorityHigh, CompilePriorityMedium, CompilePriorityLow - PreLinkPriorityHigh, PreLinkPriorityMedium, PreLinkPriorityLow - link children - PostLinkPriorityHigh, PostLinkPriorityMedium, PostLinkPriorityLow This was changed to: - CompilePriorityHigh, CompilePriorityMedium, CompilePriorityLow - PreLinkPriorityHigh, PreLinkPriorityMedium, PreLinkPriorityLow - link children - PostLinkPriorityLow, PostLinkPriorityMedium , PostLinkPriorityHigh Using this order the child transclusion directive that gets replaced onto the current element get executed correctly (see issue #3558), and more generally, the order of execution of post linking function makes more sense. The incorrect order was an oversight that has gone unnoticed for many suns and moons. (FYI: postLink functions are the default linking functions) BREAKING CHANGE: the order of postLink fn is now mirror opposite of the order in which corresponding preLinking and compile functions execute. Very few directives in practice rely on order of postLinking function (unlike on the order of compile functions), so in the rare case of this change affecting an existing directive, it might be necessary to convert it to a preLinking function or give it negative priority (look at the diff of this commit to see how an internal attribute interpolation directive was adjusted). Closes #3558
2013-10-03fix($compile): don't terminate compilation for regular transclusion directivesIgor Minar
Previously we would stop the compilation for both regular and element transclusion directives which was wrong. Only element transclusion directives should be terminal.
2013-10-03fix($sanitize): sanitize DOCTYPE declarations correctlypaolo-delmundo
HTML to be sanitized that contains a DOCTYPE declaration were causing the HTML parser to throw an error. Now the parser correctly removes the declarations when sanitizing HTML. Closes #3931
2013-10-02fix($resource): pass transformed value to both callbacks and promisesjankuca
Closes #3817
2013-10-02fix(isArrayLike): correctly handle string primitivesDaniel Luz
Closes #3356
2013-10-02feat(ngMock.$timeout): remove flushNext methodVojta Jina
2013-10-02fix($location): prevent infinite digest error in IE7Angel Balcarcel
Refactored `replacedUrl` to store the new URL on both `location.replace` and setting `location.href` directly to handle delays in the actual location value change in IE. Closes #2802
2013-10-02test($sce): ie8 fix for entire fileChirayu Krishnappa
Ref: https://github.com/angular/angular.js/pull/4221#/issuecomment-25515813 Closes #4221
2013-10-02fix($scope): $evalAsync executes on the right scopeLucas Galfasó
Executes $evalAsync at the scope that the call was made Closes: #3548
2013-10-02fix($compile): ng-attr to support dash separated attribute namesJamie Mason
2013-10-02style(rootScopeSpec): add semi-colonsPete Bacon Darwin
2013-10-02style($qSpec): add semi-colonsPete Bacon Darwin
2013-10-01test($sce): make ie8 happyChirayu Krishnappa
Ref: https://github.com/angular/angular.js/pull/4221#/issuecomment-25515813 Closes #4221
2013-10-01fix($compile): allow interpolations for non-event handlers attrsFrancesco Pontillo
Fix wrong behaviour that didn't allow 'data-on' and 'on' element attributes to be interpolated by $compile. The regex now accepts any string beginning with 'on' and with at least one more English letter.
2013-10-01fix($httpBackend): set headers with falsy valuesRicardo Bin
This is a breaking change. To migrate to the new behavior, delete or set headers to `undefined` to avoid having them sent. To restore the old behavior, override `$httpBackendProvider` with the old implementation. Closes #2984
2013-10-01fix($animator): avoid completing the animation asynchronously unless CSS ↵Matias Niemelä
transtiions/animations are present Closes #4023 Closes #3940
2013-10-01fix($httpBackend): don't send empty string bodiesJames Roper
The `XMLHttpRequest.send` spec defines different semantics for `null` than for an empty String: an empty String should be sent with a `Content-Type` of `text/plain`, whereas `null` should have no `Content-Type` header set. Closes #2149
2013-10-01chore: remove Firefox CORS workaroundjquadrin
See #1468
2013-10-01fix(dateFilter): allow negative millisecond value stringsHenning Teek
2013-10-01chore($ngAnimate): simplify vendor prefixes handling in testsMichał Gołębiowski
2013-10-01feat(filter): allow map of filters to be registeredColin Casey
This feature adds similar functionality to what `$ControllerProvider.register` and `$CompileProvider.directive` currently provide by allowing a map of filter name/factories to be passed as the sole argument to `$FilterProvider.register` to register all of the specified filters. Closes #4036 Closes #4091
2013-10-01feat($sce): simpler patterns for $sceDelegateProviders white/blacklistsChirayu Krishnappa
Closes #4006
2013-09-30fix(ngTransclude): detect ngTranslude usage without a transclusion directivejankuca
Closes #3759
2013-09-30fix($compile): link parents before traversingVojta Jina
How did compiling a templateUrl (async) directive with `replace:true` work before this commit? 1/ apply all directives with higher priority than the templateUrl directive 2/ partially apply the templateUrl directive (create `beforeTemplateNodeLinkFn`) 3/ fetch the template 4/ apply second part of the templateUrl directive on the fetched template (`afterTemplateNodeLinkFn`) That is, the templateUrl directive is basically split into two parts (two `nodeLinkFn` functions), which has to be both applied. Normally we compose linking functions (`nodeLinkFn`) using continuation - calling the linking function of a parent element, passing the linking function of the child elements as an argument. The parent linking function then does: 1/ execute its pre-link functions 2/ call the child elements linking function (traverse) 3/ execute its post-link functions Now, we have two linking functions for the same DOM element level (because the templateUrl directive has been split). There has been multiple issues because of the order of these two linking functions (creating controller before setting up scope locals, running linking functions before instantiating controller, etc.). It is easy to fix one use case, but it breaks some other use case. It is hard to decide what is the "correct" order of these two linking functions as they are essentially on the same level. Running them side-by-side screws up pre/post linking functions for the high priority directives (those executed before the templateUrl directive). It runs post-linking functions before traversing: ```js beforeTemplateNodeLinkFn(null); // do not travers afterTemplateNodeLinkFn(afterTemplateChildLinkFn); ``` Composing them (in any order) screws up the order of post-linking functions. We could fix this by having post-linking functions to execute in reverse order (from the lowest priority to the highest) which might actually make a sense. **My solution is to remove this splitting.** This commit removes the `beforeTemplateNodeLinkFn`. The first run (before we have the template) only schedules fetching the template. The rest (creating scope locals, instantiating a controller, linking functions, etc) is done when processing the directive again (in the context of the already fetched template; this is the cloned `derivedSyncDirective`). We still need to pass-through the linking functions of the higher priority directives (those executed before the templateUrl directive), that's why I added `preLinkFns` and `postLinkFns` arguments to `applyDirectivesToNode`. This also changes the "$compile transclude should make the result of a transclusion available to the parent directive in post- linking phase (templateUrl)" unit test. It was testing that a parent directive can see the content of transclusion in its pre-link function. That is IMHO wrong (as the `ngTransclude` directive inserts the translusion in its linking function). This test was only passing because of c173ca412878d537b18df01f39e400ea48a4b398, which changed the behavior of the compiler to traverse before executing the parent linking function. That was wrong and also caused the #3792 issue, which this change fixes. Closes #3792 Closes #3923 Closes #3935 Closes #3927
2013-09-30fix($animate): ensure transition-property is not changed when only keyframe ↵Matias Niemelä
animations are in use Closes #3933
2013-09-27fix(log): prevent logging `undefined` for $log in IEColin Casey
Closes #1705
2013-09-27fix(jqLite): use get/setAttribute so that jqLite works on SVG nodesBrian Ford
jqLite previously used `elt.className` to add and remove classes from a DOM Node, but because the className property is not writable on SVG elements, it doesn't work with them. This patch replaces accesses to `className` with `get/setAttribute`. `classList` was also considered as a solution, but because only IE10+ supports it, we have to wait. :'( The JqLiteAddClass/JQLiteRemoveClass methods are now also used directly by $animate to work around the jQuery not being able to handle class modifications on SVG elements. Closes #3858
2013-09-26fix($compile): collect ranges on multiple directives on one elementjankuca
The problem was in keeping the values of `attrNameStart` and `attrNameEnd` between directive loop iterations which lead to the compiler looking for multi-element ranges for any directives that happened to be in the directive list after one that was applied on a range. For instance, having a ng-repeat-start and ng-class on a single element with ng-repeat being resolved first made the compiler look for an ng-repeat-end for both ng-repeat and ng-class because the `attrNameEnd` was not reset to a falsy value before the second iteration. As the result, an exception saying the block end element could not be found and the second directive was not actually applied. Closes #4002
2013-09-26fix(ngAnimate): ensure that delays are always considered before an animation ↵Matias Niemelä
closes Closes #4028
2013-09-25fix(ngRepeat): correctly track elements even when the collection is ↵jankuca
initially undefined Previously if the collection model was set to undefined on the first digest, the repeater would get confused and not use the correct tracking function for associating model with dom elements in the repeater. Closes #4145 Closes #3964
2013-09-20test(ng-non-bindable): test sibling bindingsChirayu Krishnappa
Ref: https://github.com/angular/angular.dart/blob/master/test/directives/ng_non_bindable_spec.dart
2013-09-20fix(ng-bind-html): watch string value instead of wrapperChirayu Krishnappa
Ref: https://github.com/angular/angular.js/pull/4045 I have this sinking feeling that support this use case sort of encourages binding to function that blindly trust some html. For now, I'm fixing the issue while I think about the use cases some more. In the case of a function that performs any non-trivial work before wrapping the value (e.g. the showdown filter in issue #3980, or the binding to a simply wrapper function in issue #3932 if it did anything meaty), this fix makes it "work" - but performance is going to suck - you should bind to some other thing on scope that watches the actual source and adjusts itself when that changes (e.g. the showdown filter.) For the case of the wrapper in #3932, if one isn't performing sanitization or some such thing - then you the developer has insight into why that value is safe in that particular context - and it should be available simply by name and not as a result of a function taking any arbitrary input to make auditing of security a little saner. Closes #3932, #3980
2013-09-20fix(ngInclude): don't break attribute bindings on ngInclude-ed elementBrian Ford
BREAKING CHANGE: ngInclude's priority is now set to 1000 It's quite rare for anyone to depend on explicity directive priority, but if a custom directive that needs to run before ngInclude exists, it should have its priority checked and adjusted if needed. Closes #3793
2013-09-20fix(ngView): IE8 regression due to expando on non-element nodesIgor Minar
This fixes the "TypeError: Object doesn't support this property or method" error on IE8, when view templates contain leading white-space. Closes #3971
2013-09-17fix($parse): disallow access to window and dom in expressionsChirayu Krishnappa
2013-09-17fix(test): fixed toThrow usageChirayu Krishnappa
2013-09-13fix(ngOptions): ignore object properties which start with $Gowtam Lal
2013-09-11test($browser): correct false positive in ApplicationSpec.jsWoody Peterson
Previously, the check that Application should return a new $window and $document had the arguments reversed in the first call to navigateTo; thus, the subsequent check of inequality of $window and $document in the next navigateTo call would always pass. This corrects the argument order, which makes this test not succeptible to false positives.
2013-09-11fix(ngSanitize): sanitizer should not accept <!--> as a valid commentR. Merkert
According to http://validator.w3.org/ , <!--> is not a valid comment and neither is any comment containing the -- substring.
2013-09-06fix(ngAnimate): check elapsedTime on current eventMatias Niemelä
onAnimationProgress now checks the event's elapsedTime property before checking the originalEvent.elapsedTime property. Use browserTrigger with elapsedTime parameter to trigger animation events
2013-09-06fix(ngScenario): provide event parameters as objectMatias Niemelä
BREAKING CHANGE: browserTrigger now uses an eventData object instead of direct parameters for mouse events. To migrate, place the `keys`,`x` and `y` parameters inside of an object and place that as the third parameter for the browserTrigger function.
2013-09-05refactor($animate): use CSS3 transition/animation events instead of ↵Matias Niemelä
$timeouts to track ongoing animations Closes #3629 Closes #3874