| OLD | NEW |
| (Empty) | |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 // Custom bindings for the experimental offscreenTabs API. |
| 6 |
| 7 (function() { |
| 8 |
| 9 native function GetChromeHidden(); |
| 10 |
| 11 GetChromeHidden().registerCustomHook( |
| 12 'experimental.offscreenTabs', function(api) { |
| 13 var apiFunctions = api.apiFunctions; |
| 14 |
| 15 function maybeCopy(src, prop, dest) { |
| 16 if (src[prop] !== undefined) |
| 17 dest[prop] = src[prop]; |
| 18 }; |
| 19 |
| 20 function keyboardEventFilter(e) { |
| 21 var result = { |
| 22 type: e.type, |
| 23 ctrlKey: e.ctrlKey, |
| 24 shiftKey: e.shiftKey, |
| 25 altKey: e.altKey, |
| 26 metaKey: e.metaKey, |
| 27 }; |
| 28 maybeCopy(e, 'keyCode', result); |
| 29 maybeCopy(e, 'charCode', result); |
| 30 return result; |
| 31 }; |
| 32 |
| 33 function mouseEventFilter(e) { |
| 34 var result = { |
| 35 type: e.type, |
| 36 ctrlKey: e.ctrlKey, |
| 37 shiftKey: e.shiftKey, |
| 38 altKey: e.altKey, |
| 39 metaKey: e.metaKey, |
| 40 button: e.button, |
| 41 }; |
| 42 maybeCopy(e, 'wheelDeltaX', result); |
| 43 maybeCopy(e, 'wheelDeltaY', result); |
| 44 return result; |
| 45 }; |
| 46 |
| 47 // We are making a copy of |arr|, but applying |func| to index 1. |
| 48 function validate(arr, func) { |
| 49 var newArr = []; |
| 50 for (var i = 0; i < arr.length; i++) |
| 51 newArr.push(i == 1 && typeof(arr) == 'object' ? func(arr[i]) : arr[i]); |
| 52 return newArr; |
| 53 } |
| 54 |
| 55 apiFunctions.setUpdateArgumentsPreValidate( |
| 56 'sendKeyboardEvent', |
| 57 function() { return validate(arguments, keyboardEventFilter); }); |
| 58 apiFunctions.setUpdateArgumentsPreValidate( |
| 59 'sendMouseEvent', |
| 60 function() { return validate(arguments, mouseEventFilter); }); |
| 61 }); |
| 62 |
| 63 })(); |
| OLD | NEW |