| Index: chrome/renderer/resources/extensions/experimental.offscreenTabs_custom_bindings.js
|
| diff --git a/chrome/renderer/resources/extensions/experimental.offscreenTabs_custom_bindings.js b/chrome/renderer/resources/extensions/experimental.offscreenTabs_custom_bindings.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..3140e801b94e115936fe6e893cd87e6b3f32c8a2
|
| --- /dev/null
|
| +++ b/chrome/renderer/resources/extensions/experimental.offscreenTabs_custom_bindings.js
|
| @@ -0,0 +1,89 @@
|
| +// Copyright (c) 2012 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.
|
| +
|
| +// Custom bindings for the experimental offscreenTabs API.
|
| +
|
| +(function() {
|
| +
|
| +native function GetChromeHidden();
|
| +
|
| +GetChromeHidden().registerCustomHook(
|
| + 'experimental.offscreenTabs', function(api) {
|
| + var apiFunctions = api.apiFunctions;
|
| +
|
| + function maybeCopy(src, prop, dest) {
|
| + if (src[prop] != undefined) {
|
| + dest[prop] = src[prop];
|
| + }
|
| + };
|
| +
|
| + function keyboardEventFilter(e) {
|
| + var result = {
|
| + "type": e.type,
|
| + "char": e.char,
|
| + "key": e.key,
|
| + "location": e.location,
|
| + "ctrlKey": e.ctrlKey,
|
| + "shiftKey": e.shiftKey,
|
| + "altKey": e.altKey,
|
| + "metaKey": e.metaKey,
|
| + "repeat": e.repeat,
|
| + "locale": e.locale
|
| + };
|
| + maybeCopy(e, "keyCode", result);
|
| + maybeCopy(e, "charCode", result);
|
| + return result;
|
| + };
|
| +
|
| + function mouseEventFilter(e) {
|
| + var result = {
|
| + "type": e.type,
|
| + "screenX": e.screenX,
|
| + "screenY": e.screenY,
|
| + "clientX": e.clientX,
|
| + "clientY": e.clientY,
|
| + "ctrlKey": e.ctrlKey,
|
| + "shiftKey": e.shiftKey,
|
| + "altKey": e.altKey,
|
| + "metaKey": e.metaKey,
|
| + "button": e.button,
|
| + "buttons": e.buttons
|
| + };
|
| + maybeCopy(e, "deltaX", result);
|
| + maybeCopy(e, "deltaY", result);
|
| + maybeCopy(e, "deltaZ", result);
|
| + maybeCopy(e, "wheelDeltaX", result);
|
| + maybeCopy(e, "wheelDeltaY", result);
|
| + return result;
|
| + };
|
| +
|
| + function validateFunc(args, filter) {
|
| + var newArgs = [];
|
| +
|
| + for (var ii = 0; ii < args.length; ++ii) {
|
| + var arg = args[ii];
|
| + if (ii == 1 && typeof(arg) == 'object') {
|
| + arg = filter(arg);
|
| + }
|
| + newArgs.push(arg);
|
| + }
|
| +
|
| + return newArgs;
|
| + };
|
| +
|
| + function validateKeyboardEvent() {
|
| + return validateFunc(arguments, keyboardEventFilter);
|
| + }
|
| +
|
| + function validateMouseEvent() {
|
| + return validateFunc(arguments, mouseEventFilter);
|
| + }
|
| +
|
| + apiFunctions.setUpdateArgumentsPreValidate(
|
| + "experimental.offscreenTabs.sendKeyboardEvent", validateKeyboardEvent);
|
| + apiFunctions.setUpdateArgumentsPreValidate(
|
| + "experimental.offscreenTabs.sendMouseEvent", validateMouseEvent);
|
| +});
|
| +
|
| +})();
|
|
|