Publish Vulpes Preview 15 sources for desktop, Android and Tundra

Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
This commit is contained in:
OverSu 2026-09-30 23:13:03 +02:00
commit b38dea0597
25901 changed files with 9982925 additions and 369 deletions

View file

@ -0,0 +1,101 @@
/* global KeyEvent, evt */
(function(exports) {
'use strict';
// KeyNavigationAdapter files event with '-keyup' as postfix. All behaviors
// which no need to have multple events while holding the key should use
// keyup.
// If we choose to listen to mozbrowser key events, before- and after- prefix
// will be attached on filed events.
function KeyNavigationAdapter() {
}
KeyNavigationAdapter.prototype = evt({
KEY_EVENTS: Object.freeze([
'keydown',
'keyup'
]),
MOZ_BROWSER_KEY_EVENTS: [
'mozbrowserbeforekeydown',
'mozbrowserbeforekeyup',
'mozbrowserafterkeydown',
'mozbrowserafterkeyup'
],
init: function kna_init(targetElement, options) {
this._targetElement = targetElement || window;
options = options || {};
// Pick required event listeners and add them
this._evtNames = [].concat(this.KEY_EVENTS);
if (options.useMozBrowserKeyEvents) {
this._evtNames = this._evtNames.concat(this.MOZ_BROWSER_KEY_EVENTS);
}
this._evtNames.forEach(
name => this._targetElement.addEventListener(name, this));
},
uninit: function kna_uninit() {
this._evtNames.foreach(
name => this._targetElement.removeEventListener(name, this));
},
handleEvent: function kna_handleEvent(evt) {
if(this._evtNames.indexOf(evt.type) !== -1) {
this.handleKeyEvent(this.convertKeyToString(evt.keyCode), evt.type);
}
},
handleKeyEvent: function kna_handleKeyEvent(key, eventType) {
// XXX : It's better to use KeyEvent.Key and use "ArrowUp", "ArrowDown",
// "ArrowLeft", "ArrowRight" for switching after Gecko synced with W3C
// KeyboardEvent.Key standard. Here we still use KeyCode and customized
// string of "up", "down", "left", "right" for the moment.
var evtPostfix = 'keyup' === eventType ? '-keyup' : '';
var prefixMatch = /mozbrowser(before|after)/.exec(eventType);
var evtPrefix = prefixMatch ? prefixMatch[1] + '-' : '';
switch (key) {
case 'up':
case 'down':
case 'left':
case 'right':
this.fire(evtPrefix + 'move' + evtPostfix, key);
break;
case 'enter':
this.fire(evtPrefix + 'enter' + evtPostfix);
break;
case 'back':
this.fire(evtPrefix + 'back' + evtPostfix);
break;
case 'esc':
this.fire(evtPrefix + 'esc' + evtPostfix);
break;
}
},
convertKeyToString: function kna_convertKeyToString(keyCode) {
switch (keyCode) {
case KeyEvent.DOM_VK_UP:
return 'up';
case KeyEvent.DOM_VK_RIGHT:
return 'right';
case KeyEvent.DOM_VK_DOWN:
return 'down';
case KeyEvent.DOM_VK_LEFT:
return 'left';
case KeyEvent.DOM_VK_RETURN:
return 'enter';
case KeyEvent.DOM_VK_ESCAPE:
return 'esc';
case KeyEvent.DOM_VK_BACK_SPACE:
return 'back';
default:// we don't consume other keys.
return null;
}
}
});
exports.KeyNavigationAdapter = KeyNavigationAdapter;
}(window));