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

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: merge / rebase Created 8 years, 11 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
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); });
+});
+
+})();

Powered by Google App Engine
This is Rietveld 408576698