Merge Chromium + Blink git repositories
[chromium-blink-merge.git] / remoting / tools / remote_test_helper / jsonrpc.js
blob0e7cba4f5e8f7899d390d8de44904e56488ead20
1 // Copyright (c) 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 var jsonRpc = {};
6 jsonRpc.responseObject = null;
8 jsonRpc.setLastEvent = function(action, value, modifiers) {
9   var request = jsonRpc.generateJsonRpcRequest(
10     'SetLastEvent', [action, value, modifiers]);
11   return jsonRpc.sendRpcRequest(request);
14 jsonRpc.getLastEvent = function() {
15   var request = jsonRpc.generateJsonRpcRequest('GetLastEvent', []);
16   return jsonRpc.sendRpcRequest(request);
19 jsonRpc.clearLastEvent = function() {
20   var request = jsonRpc.generateJsonRpcRequest('ClearLastEvent', []);
21   return jsonRpc.sendRpcRequest(request);
24 /**
25  * Generate the JSON request.
26  * @param {string} methodname The name of the remote method.
27  * @param {list} params The method parameters to pass.
28  * @param {number=} opt_ident The request id.
29  * @return The JSON-RPC request object
30  */
31 jsonRpc.generateJsonRpcRequest = function(methodname, params, opt_ident) {
32   ident = opt_ident == undefined ? 0 : opt_ident;
33   var request = {
34     "jsonrpc": "2.0",
35     "method": methodname,
36     "params": params,
37     "id": ident
38     };
39   return request;
42 /**
43  * Method to POST the request to the RPC server.
44  * @param {object} json_request The JSON request object.
45  */
46 jsonRpc.sendRpcRequest = function(json_request) {
47   jsonRpc.responseObject = null;
48   var xhr = new XMLHttpRequest();
49   xhr.open('POST', '/RPC2', true);
50   xhr.onreadystatechange = function () {
51     if (xhr.readyState == 4 && xhr.status == 200) {
52       try {
53         var response = xhr.responseText;
54         jsonRpc.responseObject = JSON.parse(response).response;
55       } catch (err) {
56         console.error('Could not parse server response.');
57         return;
58       }
59     }
60   }
61   string_request = JSON.stringify(json_request);
62   xhr.send(string_request);