aboutsummaryrefslogtreecommitdiffstats
path: root/test/ng
AgeCommit message (Collapse)Author
2013-12-31test(compileSpec): fix broken build on FFIgor Minar
FF 26.0 now throws: "TypeError: NodeList doesn't have an indexed property setter." when we try to assign to `childNodes[1]`, since this test still works properly on Chrome and the issue being tested is not a cross-browser issues, I'm just making the patchability check more robust instead of trying to figure out how to make this test fully pass on FF.
2013-12-30fix(input): prevent double $digest when using jQuery trigger.Michał Gołębiowski
If an event was performed natively, jQuery sets the isTrigger property. When triggering event manually, the field is not present. Manually triggered events are performed synchronously which causes the "$digest already in progress" error. Closes #5293
2013-12-27perf(Scope): limit propagation of $broadcast to scopes that have listeners ↵Karl Seamon
for the event Update $on and $destroy to maintain a count of event keys registered for each scope and its children. $broadcast will not descend past a node that has a count of 0/undefined for the $broadcasted event key. Closes #5341 Closes #5371
2013-12-19fix($compile): remove invalid IE exceptional case for `href`Alexandre Potvin Latreille
It appears that this exceptional case was only valid for IE<8 and that for IE>=8 it was actually causing a bug with the `ng-href-attr` directive on `<a>` elements. Closes #5479
2013-12-19fix($parse): return 'undefined' if a middle key's value is nullCaitlin Potter
Prior to this fix, $parse/$eval would return 'null' if a middle key in an expression's value is null, when it should be expected to be undefined. This patch tries to remedy this by returning undefined for middle values in expressions, when fetching a child of that null value. For example: ```js // Given the following object: $scope.a = { b: null }; // $scope.$eval('a.b.c') returns undefined, whereas previously it would return null ``` Closes #5480
2013-12-18fix($location): parse xlink:href for SVGAElementsCaitlin Potter
Before this fix, the xlink:href property of an SVG <a> element could not be parsed on click, as the property is an SVGAnimatedString rather than a DOMString. This patch parses the xlink:href's animVal into a DOMString in order to prevent an `Object #<SVGAnimatedString> has no method 'indexOf'` exception from being thrown, and also to update the location if necessary as expected. Closes #5472 Closes #5198 Closes #5199 Closes #4098 Closes #1420
2013-12-18perf($parse) use a faster path when the number of path parts is lowKarl Seamon
Use a faster path when the number of path tokens is low (ie the common case). This results in a better than 19x improvement in the time spent in $parse and produces output that is about the same speed in chrome and substantially faster in firefox. http://jsperf.com/angularjs-parse-getter/6 Closes #5359
2013-12-18fix(input): do not hold input for composition on androidChia-liang Kao
Workaround for chrome for android until #2129 is ready. Closes #5308, #5323
2013-12-18chore($sniffer): make android variable publicChia-liang Kao
2013-12-17fix(select): invalidate when 'multiple`, `required` and model is `[]`Caitlin Potter
When `multiple` attribute is set on a `<select>` control and the model value is an empty array, we should invalidate the control. Previously, this directive was using incorrect logic for determining if the model was empty. Closes #5337
2013-12-16fix(ngRepeat): allow multiline expressionsRhys Brett-bowen
allow and pass through new line characters when checking passed in expression Closes #5000
2013-12-13perf(jqLite): implement and use the `empty` method in place of `html(‘’)`Michał Gołębiowski
jQuery's elem.html('') is way slower than elem.empty(). As clearing element contents happens quite often in certain scenarios, switching to using .empty() provides a significant performance boost when using Angular with jQuery. Closes #4457
2013-12-13perf(a): do not link when href or name exists in templateKarl Seamon
Change the a directive to link and hookup a click event only when there is no href or name in the template element. In a large Google app, this results in about 800 fewer registrations, saving a small but measurable amount of time and memory. Closes #5362
2013-12-12fix(ngInclude): Add template to DOM before linking other directivesTobias Bosch
The template needs to be added to the DOM before other directives at the same element as `ngInclude` are linked. Fixes #5247.
2013-12-12fix($compile): Allow literals in isolate scope referencesTobias Bosch
When a component uses an isolate scope reference and the the component is used with an object literal a new object is created on every evaluation. Therefore the compiler needs to compare the values of the parent and the isolate scope using object equality and not object reference equality. Fixes #5296.
2013-12-05fix($compile): update cloned elements if the template arrives after the cloningTobias Bosch
If an element has a directive whose content is loaded using `templateUrl`, and the element is cloned using a linking function before the template arrives, the clone needs to be updated as well. This also updates `ngIf` and `ngRepeat` to keep the connection to the clone of a tranclude function, so that they know about the changes a directive with `templateUrl` does to the element in the future. Fixes to #4930.
2013-12-05chore(Scope): short-circuit after dirty-checking last dirty watcherKarl Seamon
Stop dirty-checking during $digest after the last dirty watcher has been re-checked. This prevents unneeded re-checking of the remaining watchers (They were already checked in the previous iteration), bringing a substantial performance improvement to the average case run time of $digest. Closes #5272 Closes #5287
2013-12-04fix(ngInit): evaluate ngInit before ngIncludeCaitlin Potter
The priority of ngInit is adjusted to occur before ngInclude, and after ngController. This enables ngInit to initiallize values in a controller's scope, and also to initiallize values before ngInclude executes. Closes #5167 Closes #5208
2013-12-04fix(input): ensure ngModelWatch() triggers second digest pass when appropriateDaniel Tabuenca
Due to an earlier change, ngModelWatch() no longer returns a value to the caller. This means the digest loop has no way to tell if the watch actually modified anything and so can not schedule another pass. This means any watches that watch form or model controller changes (e.g. watches on form.$valid) that are scheduled prior to an ngModelWatch() will not be able to see any changes made therin. This commit fixes this behavior by returning the latest evaluated ng-model value. Closes #5258 Closes #5282
2013-12-04fix($rootScope): broadcast $destroy event on $rootScopeJeff Cross
Fixes #5169
2013-12-04fix($rootScope): clear phase if an exception is raised by a watcherThomas Guillory
Add calls to clearPhase() when an exception is raised by a watcher while a digest cycle, in order to not be stuck on `$digest` scope phase
2013-12-04fix($compile): ensure isolated local watches' lastValue is always in syncDaniel Tabuenca
When using two-way binding with isolate scope, under some circumstances the lastValue variable captured in the parentValueWatch function can get out of sync. Specifically, if both the value in the origin scope as well as the value in the isolate scope get independently updated to the same value within one digest cycle, the lastValue is never updated. This potentially causes the watch to make the wrong decision as to which side to update on subsequent passes. This fixes things by ensuring lastValue is always set to the last seen value even if the watch's logic was short circuited because there was no difference between the values in the original and isolate scopes. Closes #5182
2013-11-26refactor($location): move file://+win path fix to $locationJeff Cross
The urlResolve method was fixed to automatically remove the volume label from path names to fix issues with the file protocol on windows where $location.path() was returning paths where the first segment would be the volume name, such as "/C:/mypath". See #4942 and #4928 However, the solution was specific to the $location non- HTML5 mode, and was implemented at a lower level of abstraction than it should have been. This refactor moves the fix to inside of the LocationHashBangUrl $$parse method. Closes #5041
2013-11-26fix($sanitize): Use same whitelist mechanism as $compile does.Tobias Bosch
`$sanitize` now uses the same mechanism as `$compile` to validate uris. By this, the validation in `$sanitize` is more general and can be configured in the same way as the one in `$compile`. Changes - Creates the new private service `$$sanitizeUri`. - Moves related specs from `compileSpec.js` into `sanitizeUriSpec.js`. - Refactors the `linky` filter to be less dependent on `$sanitize` internal functions. Fixes #3748.
2013-11-26chore($httpBackend): preserve original non-zero http status code for file:// ↵corrupt
apps Previously if an app was running from file:// origin we would always return either http 200 or 404 depending on whether the response was present. This changes the behavior so that we do this only if the protocol of the request (not the origin) is file:// and only if the status code is 0. Closes #4436 Closes #4587 Closes #4514
2013-11-25fix(ngAnimate): ensure animations are disabled upon bootstrap for structrual ↵Matias Niemelä
animations Closes #5130
2013-11-22fix(input): Support form auto complete on modern browserTobias Bosch
Although modern browser support the "input" event, they still only fire the "change" event when they auto complete form elements other than the currently selected one. Related to #1460
2013-11-22fix($httpBackend): only IE8 and below can't use `script.onload` for JSONPPete Bacon Darwin
IE8, IE9 and IE10 can use `script.onreadystate` so up till now we have been using this if the sniffer says we are on IE. But IE11 now does not support `script.onreadystate` and only supports the more standard `script.onload` and `script.onerror`. IE9 and IE10 do support `script.onload` and `script.onerror`. So now we only test whether we are on IE8 or earlier before using `script.onreadystate`. See http://pieisgood.org/test/script-link-events/ jQuery just uses all these handlers at once and hopes for the best, but since IE9 and IE10 support both sets of handlers, this could cause the handlers to be run more than once. jQuery also notes that there is a potential memory leak in IE unless we remove the handlers from the script object once they are run. So we are doing this too, now. Closes #4523 Closes #4527 Closes #4922
2013-11-22test($compile): correct the assertion to make test pass on IE11Igor Minar
2013-11-22fix($parse): allow for new lines in expr when promise unwrapping is onrodyhaddad
Previously, when unwrapping promises was set to `true`, an error would occur if a parsed expression had a new line in it. This was because when generating the `evaledFnGetter` code, a new line in an parsed expression would create a new line in a JS string in that code, which is illegal. That is: ```js pw("A+ B") ``` Closes #4718
2013-11-21fix($compile): secure form[action] & iframe[srcdoc]Chirayu Krishnappa
Require bindings to form[action] to be $sce.RESOURCE_URL and bindings to iframe[srcdoc] to be $sce.HTML Closes #4927 Closes #4933
2013-11-21fix(httpBackend): should not read response data when request is abortedGonzalo Ruiz de Villa
When a request is aborted, it makes no sense to read the response headers or text. Also in IE9, trying to read data (either response headers or text) from an aborted request throws an Error c00c023f. Fixes #4913 Closes #4940
2013-11-21fix(ngInclude): Don't throw when the ngInclude element contains content with ↵Tobias Bosch
directives. Related to #5069
2013-11-21fix(tests): Correct tests for IE11Tobias Bosch
Some tests were wrong. However, src/* did not contain problems. Fixes #5046
2013-11-21fix($compile): ensure CSS classes are added and removed only when necessaryMatias Niemelä
When $compile interpolates a CSS class attribute expression it will do so by comparing the CSS class value already present on the element. This may lead to unexpected results when dealing with ngClass values being added and removed therefore it is best that both compile and ngClass delegate addClass/removeClass operations to the same block of code.
2013-11-21fix(ngController): fix issue with ngInclude on the same elementAndrew Silluron-Gonzalez
This changes the priority of ngController to 500 so that it takes precedence over ngInclude. Closes #4431, #4521
2013-11-21feat(input): hold listener during text compositionChia-liang Kao
When composing text in CJKV, intermediate buffer for unfinished text should not be updating the bound scope variables. Closes #4684
2013-11-20refactor($sce): Use $sniffer instead of $document for feature detection.Tobias Bosch
Also adds `$sniffer.msieDocumentMode` property. Closes #4931 Closes #5045
2013-11-20fix(ngClass): ensure that ngClass only adds/removes the changed classesMatias Niemelä
ngClass works by removing all the former classes and then adding all the new classes to the element during each watch change operation. This may cause transition animations to never render. The ngClass directive will now only add and remove the classes that change during each watch operation. Closes #4960 Closes #4944
2013-11-20fix(ngInclude): allow ngInclude to load scripts when jQuery is includedBrian Ford
In 1.2, the behavior of ngInclude was modified to use DOM APIs rather than jqLite. This means that even when jQuery was loaded, ngInclude was not calling into it, and thus scripts were not eval'd as they had been before. Although the use of ngInclude to eval scripts as a lazy-loading strategy was never an intentional feature, this patch restores the ability to do so. Closes #3756
2013-11-14fix($compile): accessing controllers of transcluded directives from childrenTobias Bosch
Additional API (backwards compatible) - Injects `$transclude` (see directive controllers) as 5th argument to directive link functions. - `$transclude` takes an optional scope as first parameter that overrides the bound scope. Deprecations: - `transclude` parameter of directive compile functions (use the new parameter for link functions instead). Refactorings: - Don't use comment node to temporarily store controllers - `ngIf`, `ngRepeat`, ... now all use `$transclude` Closes #4935.
2013-11-13feat($parse): revert hiding "private" propertiesVojta Jina
Hiding `_*` properties was a feature primarily for developers using Closure compiler and Google JS style. We didn't realize how many people will be affected by this change. We might introduce this feature in the future, probably under a config option, but it needs more research and so I'm reverting the change for now. This reverts commit 3d6a89e8888b14ae5cb5640464e12b7811853c7e. Closes #4926 Closes #4842 Closes #4865 Closes #4859 Closes #4849 Conflicts: src/ng/parse.js
2013-11-13fix(urlUtils): made removal of windows drive from path saferJeff Cross
Prior to this fix, the urlResolve method would automatically strip the first segment of a path if the segment ends in a colon. This was to correct undesired behavior in the $location service using the file protocol on windows in multiple browsers (see #4680). However, there could be cases where users intentionally have first path segments that end in a colon (although this conflicts with section 3.3 of rfc3986). The solution to this problem is an extra check to make sure the first path segment of the input url does not end with a colon, to make sure we're only removing undesired path segments. Fixes #4939
2013-11-13docs($httpBackendSpec): fix typo in spy nameBen Wiklund
Closes #4830
2013-11-12fix(urlUtils): urlUtils doesn't return right path for file:// on winROUL
Chrome and other browsers on Windows often append the drive name to the pathname, as described in #4680. This would cause the location service to browse to odd URLs, such as /C:/myfile.html, when opening apps using file://. Fixes #4680
2013-11-12fix($compile): correctly handle interpolated style in replace templatesTobias Bosch
A directive with a template with `replace: true` and an interpolated style at the root element should work correctly. Closes #4882.
2013-11-11fix(ngIf): don't create multiple elements when changing from a truthy to ↵Tobias Bosch
another thruthy value. Fixes #4852.
2013-11-08fix(ngClassSpec): clear animation enable fn from postDigestQueuePete Bacon Darwin
2013-11-07feat(jqLite): expose isolateScope() getter similar to scope()Igor Minar
See doc update in the diff for more info. BREAKING CHANGE: jqLite#scope() does not return the isolate scope on the element that triggered directive with isolate scope. Use jqLite#isolateScope() instead.
2013-11-07fix($compile): don't leak isolate scope state when replaced directive is ↵Igor Minar
used multiple times When an isolate scope directive is also a "replace" directive and at the root of its template it has other directives, we need to keep track remember to use isolate scope when linking these. This commit fixes the leakage of this state when this directive is used again later inside or outside of the isolate directive template.