summaryrefslogtreecommitdiff
path: root/chromium/chrome/renderer/resources/extensions/messaging_utils.js
diff options
context:
space:
mode:
authorAndras Becsi <andras.becsi@digia.com>2014-03-18 13:16:26 +0100
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2014-03-20 15:55:39 +0100
commit3f0f86b0caed75241fa71c95a5d73bc0164348c5 (patch)
tree92b9fb00f2e9e90b0be2262093876d4f43b6cd13 /chromium/chrome/renderer/resources/extensions/messaging_utils.js
parente90d7c4b152c56919d963987e2503f9909a666d2 (diff)
downloadqtwebengine-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.js53
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;