Chromium Code Reviews| Index: remoting/tools/remote_test_helper/jsonrpc.js |
| diff --git a/remoting/tools/remote_test_helper/jsonrpc.js b/remoting/tools/remote_test_helper/jsonrpc.js |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..08b77b18f9cfa70ba7665c82ec396716bad4861e |
| --- /dev/null |
| +++ b/remoting/tools/remote_test_helper/jsonrpc.js |
| @@ -0,0 +1,62 @@ |
| +// 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 {integer} ident The request id. |
|
Jamie
2015/01/08 20:34:37
{integer} is not a valid type annotation. I think
Mike Meade
2015/01/12 18:04:26
I fixed this to be {number=} and assigned a defaul
|
| + * @return The JSON-RPC request object |
| + **/ |
| +jsonRpc.generateJsonRpcRequest = function(methodname, params, ident) { |
| + ident = ident == undefined ? '...' : ident; |
|
Jamie
2015/01/06 19:31:39
Why is this needed? Under what circumstances will
Mike Meade
2015/01/08 18:58:42
I wrote this to be a general library module for an
Jamie
2015/01/08 20:34:37
I think the problem I have with it is that you've
Mike Meade
2015/01/12 18:04:26
Done.
|
| + 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) { |
|
Jamie
2015/01/06 19:31:39
I think it would be better to clear the responseOb
Mike Meade
2015/01/08 18:58:42
Done.
|
| + 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); |
| +} |