Closed Bug 1463079 Opened 6 years ago Closed 6 years ago

Update to AngularJS 1.7

Categories

(Tree Management :: Treeherder: Frontend, enhancement, P2)

enhancement

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: emorley, Assigned: emorley)

Details

Attachments

(2 files)

The AngularJS 1.7 release is the last breaking change release of AngularJS (they treat minor versions as breaking):
https://github.com/angular/angular.js/blob/master/CHANGELOG.md#170-nonexistent-physiology-2018-05-11

In it they have removed the `$compileProvider.preAssignBindingsEnabled()` flag, which allowed reverting to the pre-AngularJS 1.6 behaviour:
https://github.com/angular/angular.js/blob/master/CHANGELOG.md#compile-due-to
https://github.com/angular/angular.js/commit/38f8c97af74649ce224b6dd45f433cc665acfbfb
https://github.com/angular/angular.js/pull/15782

In order to update to 1.7 we'll need to fix the issue preAssignBindingsEnabled worked around.

The Renovate PR is here:
https://github.com/mozilla/treeherder/pull/3542
Attachment #8979207 - Flags: review?(igoldan)
Attachment #8979207 - Flags: feedback?(wlachance)
Assignee: nobody → emorley
Status: NEW → ASSIGNED
Attachment #8979207 - Flags: review?(igoldan) → review+
Attachment #8979207 - Flags: feedback?(wlachance) → feedback+
Commit pushed to master at https://github.com/mozilla/treeherder

https://github.com/mozilla/treeherder/commit/607b447820e432c2560770219e35a72bb8c54aeb
Bug 1463079 - Remove the preAssignBindingsEnabled workaround (#3567)

AngularJS 1.6 changed the way controller bindings were initialised,
but allowed users to revert to the previous behaviour by setting
`preAssignBindingsEnabled(true)`.

As part of our upgrade from AngularJS 1.5 to 1.6, we set that pref
in Perfherder, to fix the bug 1428958 regression.

However AngularJS 1.7 has now removed the pref, so we need to actually
fix the root cause - by moving any controller logic that is dependant
on the bindings into the `.$onInit()` method, which is only called
after all of the bindings are guaranteed to exist.

See:
https://docs.angularjs.org/guide/migration#migrate1.5to1.6-ng-services-$compile

Testing this locally shows the regression in bug 1428958 no longer
occurs, and as far as I can tell all other functionality in Perfherder
works fine (and there are no new exceptions seen in the console).
Attachment #8979692 - Flags: review?(cdawson)
Attachment #8979692 - Flags: review?(cdawson) → review+
Commit pushed to master at https://github.com/mozilla/treeherder

https://github.com/mozilla/treeherder/commit/c89fa8cfcb9dff5da056e5930d8b9d8087994728
Bug 1463079 - Update to AngularJS 1.7 (#3570)

Changelog:
https://github.com/angular/angular.js/blob/master/CHANGELOG.md#170-nonexistent-physiology-2018-05-11

`PluginCtrl` has been updated to correctly cancel the `$http` requests
made by `selectJob`, since previously they were silently failing to be
cancelled, whereas under AngularJS 1.7 an exception is raised if
`$timeout` is used incorrectly:
https://code.angularjs.org/snapshot/docs/guide/migration#-timeout-

The usage of `$timeout` has been removed in favour of this pattern:
https://odetocode.com/blogs/scott/archive/2014/04/24/canceling-http-requests-in-angularjs.aspx

Closes #3542.
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: