// 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); }