| // Copyright (c) 2014 The Chromium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| var jsonRpc = {}; |
| jsonRpc.responseObject = null; |
| |
| jsonRpc.setLastEvent = function(action, value, modifiers) { |
| var request = jsonRpc.generateJsonRpcRequest( |
| 'SetLastEvent', [action, value, modifiers]); |
| return jsonRpc.sendRpcRequest(request); |
| } |
| |
| jsonRpc.getLastEvent = function() { |
| var request = jsonRpc.generateJsonRpcRequest('GetLastEvent', []); |
| return jsonRpc.sendRpcRequest(request); |
| } |
| |
| jsonRpc.clearLastEvent = function() { |
| var request = jsonRpc.generateJsonRpcRequest('ClearLastEvent', []); |
| return jsonRpc.sendRpcRequest(request); |
| } |
| |
| /** |
| * Generate the JSON request. |
| * @param {string} methodname The name of the remote method. |
| * @param {list} params The method parameters to pass. |
| * @param {number=} opt_ident The request id. |
| * @return The JSON-RPC request object |
| */ |
| jsonRpc.generateJsonRpcRequest = function(methodname, params, opt_ident) { |
| ident = opt_ident == undefined ? 0 : opt_ident; |
| var request = { |
| "jsonrpc": "2.0", |
| "method": methodname, |
| "params": params, |
| "id": ident |
| }; |
| return request; |
| } |
| |
| /** |
| * Method to POST the request to the RPC server. |
| * @param {object} json_request The JSON request object. |
| */ |
| jsonRpc.sendRpcRequest = function(json_request) { |
| jsonRpc.responseObject = null; |
| var xhr = new XMLHttpRequest(); |
| xhr.open('POST', '/RPC2', true); |
| xhr.onreadystatechange = function () { |
| if (xhr.readyState == 4 && xhr.status == 200) { |
| try { |
| var response = xhr.responseText; |
| jsonRpc.responseObject = JSON.parse(response).response; |
| } catch (err) { |
| console.error('Could not parse server response.'); |
| return; |
| } |
| } |
| } |
| string_request = JSON.stringify(json_request); |
| xhr.send(string_request); |
| } |