Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(360)

Unified Diff: chrome/renderer/resources/extensions/experimental.offscreenTabs_custom_bindings.js

Issue 9234042: Re-land alexbost's experimental offscreenTabs API. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Created 8 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/renderer/renderer_resources.grd ('k') | chrome/test/data/extensions/api_test/get_views/test.js » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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..3635a2c6d90ceb2e5a56a5431fa9af9be1213c11
--- /dev/null
+++ b/chrome/renderer/resources/extensions/experimental.offscreenTabs_custom_bindings.js
@@ -0,0 +1,63 @@
+// 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,
+ ctrlKey: e.ctrlKey,
+ shiftKey: e.shiftKey,
+ altKey: e.altKey,
+ metaKey: e.metaKey,
+ };
+ maybeCopy(e, 'keyCode', result);
+ maybeCopy(e, 'charCode', result);
+ return result;
+ };
+
+ function mouseEventFilter(e) {
+ var result = {
+ type: e.type,
+ ctrlKey: e.ctrlKey,
+ shiftKey: e.shiftKey,
+ altKey: e.altKey,
+ metaKey: e.metaKey,
+ button: e.button,
+ };
+ 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(
+ 'sendKeyboardEvent',
+ function() { return validate(arguments, keyboardEventFilter); });
+ apiFunctions.setUpdateArgumentsPreValidate(
+ 'sendMouseEvent',
+ function() { return validate(arguments, mouseEventFilter); });
+});
+
+})();
« no previous file with comments | « chrome/renderer/renderer_resources.grd ('k') | chrome/test/data/extensions/api_test/get_views/test.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698