File: healthreport_testRemoteCommands.html

package info (click to toggle)
iceweasel 31.6.0esr-1
  • links: PTS, VCS
  • area: main
  • in suites: jessie-kfreebsd
  • size: 1,368,576 kB
  • sloc: cpp: 3,692,968; ansic: 1,797,194; python: 193,401; java: 180,622; asm: 133,557; xml: 89,288; sh: 71,748; perl: 22,087; makefile: 21,687; objc: 4,014; yacc: 1,995; pascal: 1,292; lex: 950; exp: 449; lisp: 228; awk: 211; php: 113; sed: 43; csh: 31; ada: 16; ruby: 3
file content (128 lines) | stat: -rw-r--r-- 3,191 bytes parent folder | download | duplicates (10)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
<html>
  <head>
    <meta charset="utf-8">

<script>

function init() {
  window.addEventListener("message", function process(e) {doTest(e)}, false);
  doTest();
}

function checkSubmissionValue(payload, expectedValue) {
  return payload.enabled == expectedValue;
}

function validatePayload(payload) {
  payload = JSON.parse(payload);

  // xxxmpc - this is some pretty low-bar validation, but we have plenty of tests of that API elsewhere
  if (!payload.thisPingDate)
    return false;

  return true;
}

var tests = [
{
  info: "Checking initial value is enabled",
  event: "RequestCurrentPrefs",
  payloadType: "prefs",
  validateResponse: function(payload) {
    return checkSubmissionValue(payload, true);
  },
},
{
  info: "Verifying disabling works",
  event: "DisableDataSubmission",
  payloadType: "prefs",
  validateResponse: function(payload) {
    return checkSubmissionValue(payload, false);
  },
},
{
  info: "Verifying we're still disabled",
  event: "RequestCurrentPrefs",
  payloadType: "prefs",
  validateResponse: function(payload) {
    return checkSubmissionValue(payload, false);
  },
},
{
  info: "Verifying we can get a payload while submission is disabled",
  event: "RequestCurrentPayload",
  payloadType: "payload",
  validateResponse: function(payload) {
    return validatePayload(payload);
  },
},
{
  info: "Verifying enabling works",
  event: "EnableDataSubmission",
  payloadType: "prefs",
  validateResponse: function(payload) {
    return checkSubmissionValue(payload, true);
  },
},
{
  info: "Verifying we're still re-enabled",
  event: "RequestCurrentPrefs",
  payloadType: "prefs",
  validateResponse: function(payload) {
    return checkSubmissionValue(payload, true);
  },
},
{
  info: "Verifying we can get a payload after re-enabling",
  event: "RequestCurrentPayload",
  payloadType: "payload",
  validateResponse: function(payload) {
    return validatePayload(payload);
  },
},
];

var currentTest = -1;
function doTest(evt) {
  if (evt) {
    if (currentTest < 0 || !evt.data.content)
      return; // not yet testing

    var test = tests[currentTest];
    if (evt.data.type != test.payloadType)
      return; // skip unrequested events

    var error = JSON.stringify(evt.data.content);
    var pass = false;
    try {
      pass = test.validateResponse(evt.data.content)
    } catch (e) {}
    reportResult(test.info, pass, error);
  }
  // start the next test if there are any left
  if (tests[++currentTest])
    sendToBrowser(tests[currentTest].event);
  else
    reportFinished();
}

function reportResult(info, pass, error) {
  var data = {type: "testResult", info: info, pass: pass, error: error};
  window.parent.postMessage(data, "*");
}

function reportFinished(cmd) {
  var data = {type: "testsComplete", count: tests.length};
  window.parent.postMessage(data, "*");
}

function sendToBrowser(type) {
  var event = new CustomEvent("RemoteHealthReportCommand", {detail: {command: type}, bubbles: true});
  document.dispatchEvent(event);
}

</script>
  </head>
  <body onload="init()">
  </body>
</html>