diff options
author | Andras Becsi <andras.becsi@digia.com> | 2014-03-18 13:16:26 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-03-20 15:55:39 +0100 |
commit | 3f0f86b0caed75241fa71c95a5d73bc0164348c5 (patch) | |
tree | 92b9fb00f2e9e90b0be2262093876d4f43b6cd13 /chromium/chrome/renderer/resources/extensions/messaging_utils.js | |
parent | e90d7c4b152c56919d963987e2503f9909a666d2 (diff) | |
download | qtwebengine-chromium-3f0f86b0caed75241fa71c95a5d73bc0164348c5.tar.gz |
Update to new stable branch 1750
This also includes an updated ninja and chromium dependencies
needed on Windows.
Change-Id: Icd597d80ed3fa4425933c9f1334c3c2e31291c42
Reviewed-by: Zoltan Arvai <zarvai@inf.u-szeged.hu>
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'chromium/chrome/renderer/resources/extensions/messaging_utils.js')
-rw-r--r-- | chromium/chrome/renderer/resources/extensions/messaging_utils.js | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/chromium/chrome/renderer/resources/extensions/messaging_utils.js b/chromium/chrome/renderer/resources/extensions/messaging_utils.js new file mode 100644 index 00000000000..dd0fc28aa01 --- /dev/null +++ b/chromium/chrome/renderer/resources/extensions/messaging_utils.js @@ -0,0 +1,53 @@ +// Copyright 2013 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. + +// Routines used to normalize arguments to messaging functions. + +function alignSendMessageArguments(args, hasOptionsArgument) { + // Align missing (optional) function arguments with the arguments that + // schema validation is expecting, e.g. + // extension.sendRequest(req) -> extension.sendRequest(null, req) + // extension.sendRequest(req, cb) -> extension.sendRequest(null, req, cb) + if (!args || !args.length) + return null; + var lastArg = args.length - 1; + + // responseCallback (last argument) is optional. + var responseCallback = null; + if (typeof args[lastArg] == 'function') + responseCallback = args[lastArg--]; + + var options = null; + if (hasOptionsArgument && lastArg >= 1) { + // options (third argument) is optional. It can also be ambiguous which + // argument it should match. If there are more than two arguments remaining, + // options is definitely present: + if (lastArg > 1) { + options = args[lastArg--]; + } else { + // Exactly two arguments remaining. If the first argument is a string, + // it should bind to targetId, and the second argument should bind to + // request, which is required. In other words, when two arguments remain, + // only bind options when the first argument cannot bind to targetId. + if (!(args[0] === null || typeof args[0] == 'string')) + options = args[lastArg--]; + } + } + + // request (second argument) is required. + var request = args[lastArg--]; + + // targetId (first argument, extensionId in the manifest) is optional. + var targetId = null; + if (lastArg >= 0) + targetId = args[lastArg--]; + + if (lastArg != -1) + return null; + if (hasOptionsArgument) + return [targetId, request, options, responseCallback]; + return [targetId, request, responseCallback]; +} + +exports.alignSendMessageArguments = alignSendMessageArguments; |