| 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..1486032d8f37a84b4823ae45237135339753d459
|
| --- /dev/null
|
| +++ b/chrome/renderer/resources/extensions/experimental.offscreenTabs_custom_bindings.js
|
| @@ -0,0 +1,76 @@
|
| +// 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;
|
| + };
|
| +
|
| + // We are making a copy of |arr|, but applying |func| to index 1.
|
| + function validate(arr, func) {
|
| + var newArr = [];
|
| + for (var i = 0; i < arr.length; i++)
|
| + newArr.push(i == 1 && typeof(arr) == 'object' ? func(arr[i]) : arr[i]);
|
| + return newArr;
|
| + }
|
| +
|
| + apiFunctions.setUpdateArgumentsPreValidate(
|
| + 'experimental.offscreenTabs.sendKeyboardEvent',
|
| + function() { return validate(arguments, keyboardEventFilter); });
|
| + apiFunctions.setUpdateArgumentsPreValidate(
|
| + 'experimental.offscreenTabs.sendMouseEvent',
|
| + function() { return validate(arguments, mouseEventFilter); });
|
| +});
|
| +
|
| +})();
|
|
|