blob: c5d8a7c8c19b4124d391265495f7fc262f5864c1 [file] [log] [blame]
epoger@google.com7687a832013-09-15 02:18:07 +00001/*
2 * GMExpectedResultsLoader:
3 * Reads an expected-results.json file, and imports its data into $scope.
4 */
5var GMExpectedResultsLoader = angular.module(
6 'GMExpectedResultsLoader',
7 [],
8 function($httpProvider) {
9 /* Override transformResponse so that the numeric checksums are interpreted as
10 * strings instead, since Javascript cannot handle 64-bit integers. */
11 $httpProvider.defaults.transformResponse = function(data, headersGetter) {
12 return JSON.parse(data.replace(/\s(\d+)\s/g, " \"$1\" "));
13 }
14 }
15);
16GMExpectedResultsLoader.controller(
17 'GMExpectedResultsLoader.Controller',
18 function($scope, $http) {
19 /* When the changePlatformPath function is called, download expected-results.json
20 * from the desired platform directory.
21 *
22 * When the JSON is received, predigest it and return it to the frontend as
23 * $scope.gmExpectedResults .
24 */
25 $scope.changePlatformPath = function() {
26 $http.get($scope.platformPath + "/expected-results.json").success(
27 function(response) {
28 var jsonResults = [];
29 var imageNameRegex = /^(.+)_([^_]+).png/;
30 angular.forEach(response['expected-results'], function(imageExpectations, imageName) {
31 var matched = imageNameRegex.exec(imageName);
32 var allowedImages = [];
33 angular.forEach(imageExpectations['allowed-digests'], function(allowedDigest, key) {
34 var thisImage = {
35 hashType: allowedDigest[0], hashValue: allowedDigest[1]
36 };
37 allowedImages.push(thisImage);
38 });
39 var thisResult = {
40 test: matched[1], config: matched[2],
41 allowedImages: allowedImages,
42 bugs: imageExpectations['bugs'],
43 reviewedByHuman: imageExpectations['reviewed-by-human']
44 };
45 jsonResults.push(thisResult);
46 });
47 $scope.gmExpectedResults = jsonResults;
48 }
49 );
50 };
51 }
52);