Skip to content

Commit

Permalink
chore(web): removal of 'kmw_ip' checks, references
Browse files Browse the repository at this point in the history
  • Loading branch information
jahorton committed Sep 21, 2022
1 parent a0c1820 commit a67dfbb
Show file tree
Hide file tree
Showing 9 changed files with 27 additions and 137 deletions.
2 changes: 1 addition & 1 deletion developer/src/server/src/site/chargrid.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@

if(keyman.isPositionSynthesized()) { // this is an internal function
// For touch devices, we need to ask KMW
selStart = ta1.kmw_ip ? ta1.kmw_ip.getTextBeforeCaret().length : 0;
selStart = 0;
selLength = 0;
selDirection = 'forward';
} else {
Expand Down
12 changes: 1 addition & 11 deletions web/source/dom/domEventHandlers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -388,11 +388,6 @@ namespace com.keyman.dom {
doChangeEvent(_target: HTMLElement) {
if(DOMEventHandlers.states.changed) {
let event = new Event('change', {"bubbles": true, "cancelable": false});

// Ensure that touch-aliased elements fire as if from the aliased element.
if(_target['base'] && _target['base']['kmw_ip']) {
_target = _target['base'];
}
_target.dispatchEvent(event);
}

Expand Down Expand Up @@ -528,14 +523,9 @@ namespace com.keyman.dom {
// Will usually be called from setActiveElement, which should define DOMEventHandlers.states.lastActiveElement
if(this.keyman.domManager.lastActiveElement) {
tEvent.target = this.keyman.domManager.lastActiveElement;
// Shouldn't happen, but... just in case. Implemented late in 14.0 beta, so
// this detail was kept, though it's likely safe to eliminate.
if(tEvent.target['kmw_ip']) {
tEvent.target = tEvent.target['kmw_ip'];
}
// but will default to first input or text area on page if DOMEventHandlers.states.lastActiveElement is null
} else {
tEvent.target = this.keyman.domManager.sortedInputs[0]['kmw_ip'];
tEvent.target = this.keyman.domManager.sortedInputs[0];
}
}

Expand Down
35 changes: 3 additions & 32 deletions web/source/dom/domManager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -397,7 +397,7 @@ namespace com.keyman.dom {
}

var lastElem = this.lastActiveElement;
if(lastElem == Pelem || lastElem == Pelem['kmw_ip']) {
if(lastElem == Pelem) {
if(this.activeElement == lastElem) {
this.activeElement = null;
}
Expand Down Expand Up @@ -780,12 +780,6 @@ namespace com.keyman.dom {
// If a touch alias was removed, chances are it's gonna mess up our touch-based layout scheme, so let's update the touch elements.
window.setTimeout(function() {
this.listInputs();

for(var k = 0; k < this.sortedInputs.length; k++) {
if(this.sortedInputs[k]['kmw_ip']) {
this.sortedInputs[k]['kmw_ip'].updateInput(this.sortedInputs[k]['kmw_ip']);
}
}
}.bind(this), 1);
} else {
this.listInputs(); // Fix up our internal input ordering scheme.
Expand All @@ -812,12 +806,6 @@ namespace com.keyman.dom {
// if we don't update the touch elements.
window.setTimeout(function() {
keyman.domManager.listInputs();

for(var k = 0; k < this.sortedInputs.length; k++) {
if(this.sortedInputs[k]['kmw_ip']) {
this.sortedInputs[k]['kmw_ip'].updateInput(this.sortedInputs[k]['kmw_ip']);
}
}
}.bind(this), 1);
} else {
this.enableInputElement(Pelem);
Expand Down Expand Up @@ -949,12 +937,6 @@ namespace com.keyman.dom {
var domManager = this;
window.setTimeout(function() {
domManager.listInputs();

for(var k = 0; k < this.sortedInputs.length; k++) {
if(this.sortedInputs[k]['kmw_ip']) {
this.sortedInputs[k]['kmw_ip'].updateInput();
}
}
}.bind(this), 1);
}
}
Expand Down Expand Up @@ -1116,10 +1098,9 @@ namespace com.keyman.dom {
Pelem._kmwAttachment.languageCode = Plc;

// If Pelem is the focused element/active control, we should set the keyboard in place now.
// 'kmw_ip' is the touch-alias for the original page's control.

var lastElem = this.lastActiveElement;
if(lastElem && (lastElem == Pelem || lastElem == Pelem['kmw_ip'])) {
if(lastElem && (lastElem == Pelem)) {

if(Pkbd != null && Plc != null) { // Second part necessary for Closure.
this.keyman.keyboardManager.setActiveKeyboard(Pkbd, Plc);
Expand Down Expand Up @@ -1248,10 +1229,6 @@ namespace com.keyman.dom {
return;
}

// As this is an API function, someone may pass in the base of a touch element.
// We need to respond appropriately.
e = (e['kmw_ip'] ? e['kmw_ip'] : e) as HTMLElement;

// If we're changing controls, don't forget to properly manage the keyboard settings!
// It's only an issue on 'native' (non-embedded) code paths.
if(!this.keyman.isEmbedded) {
Expand Down Expand Up @@ -1343,17 +1320,11 @@ namespace com.keyman.dom {
*
*/
moveToElement(e:string|HTMLElement) {
var i;

if(typeof(e) == "string") { // Can't instanceof string, and String is a different type.
e=document.getElementById(e);
}

if(this.keyman.util.device.touchable && e['kmw_ip']) {
e['kmw_ip'].focus();
} else {
e.focus();
}
e.focus();
}

/* ----------------------- Editable IFrame methods ------------------- */
Expand Down
45 changes: 10 additions & 35 deletions web/tools/recorder/recorder_ui_and_stubs.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,8 @@ var recorderScribe;

function focusReceiver() {
var receiver = document.getElementById('receiver');
if(receiver['kmw_ip']) {
receiver = receiver['kmw_ip'];
}
receiver.focus();

if(keyman.util.device.touchable) {
// At present, touch doesn't 'focus' properly.
keyman.setActiveElement(receiver);
Expand All @@ -21,9 +18,6 @@ function focusReceiver() {

setElementText = function(ele, text) {
ele.value = text;
if(ele['kmw_ip']) {
ele['kmw_ip'].setTextBeforeCaret(ele.value);
}
}

onUpdateInputRecord = function(json) {
Expand All @@ -42,15 +36,8 @@ resetInputRecord = function() {

copyInputRecord = function() {
try {
if(!ta_inputJSON['kmw_ip']) {
ta_inputJSON.select();
} else {
var range = document.createRange();
range.selectNode(ta_inputJSON['kmw_ip']);
window.getSelection().removeAllRanges();
window.getSelection().addRange(range);
}

ta_inputJSON.select();

var res = document.execCommand('copy');
if(res) {
in_output.focus();
Expand Down Expand Up @@ -97,7 +84,7 @@ copyTestDefinition = function() {

try {
masterJSON.select();

var res = document.execCommand('copy');
if(res) {
in_output.focus();
Expand Down Expand Up @@ -164,18 +151,6 @@ window.addEventListener('load', function() {
// Other setup.
initDevice();
setupKeyboardPicker();

var errorInput = document.getElementById('errorText');
if(errorInput['kmw_ip']) {
// Alias DIVs use subelements b/c caret simulation.
// Interestingly, 'childList' is the most important for noting textContent changes.
var config = { childList: true, subtree: true };
var observer = new MutationObserver(function(mutations) {
errorUpdate();
});

observer.observe(errorInput['kmw_ip'], config);
}
});

//var p={'internalName':_internalName,'language':_language,'keyboardName':_keyboardName,'languageCode':_languageCode};
Expand All @@ -191,17 +166,17 @@ function keyboardAdded(properties) {
function setupKeyboardPicker() {
/* Make sure that Keyman is initialized (we can't guarantee initialization order) */
keyman.init();

var kbdControl = document.getElementById('KMW_Keyboard');
/* Retrieve the list of keyboards available from KeymanWeb and populate the selector using the DOM */
var kbds = keyman.getKeyboards();
for(var kbd in kbds) {
var opt = document.createElement('OPTION');
opt.value = kbds[kbd].InternalName + "$$" + kbds[kbd].LanguageCode;
opt.innerHTML = kbds[kbd].Name;
kbdControl.appendChild(opt);
kbdControl.appendChild(opt);
}

// Ensures the default keyboard is active, to match our listbox's initial (default) option.
keyman.setActiveKeyboard('', '');
keyman.addEventListener('keyboardregistered', keyboardAdded);
Expand Down Expand Up @@ -332,7 +307,7 @@ function convertSet(testSet) {
if(sequence.msg) {
recorderScribe.errorUpdate(sequence.msg);
}

return new Promise(function(resolve) {
let saveFunc = function() {
// May need conversion in the future, but is fine for now - the 'Constraint' part of the spec didn't change.
Expand Down Expand Up @@ -392,7 +367,7 @@ function deviceFromConstraint(constraint) {
// ----------- END SPEC VERSION MIGRATION -------------

function loadExistingStubs(files) {

var processStub = function(json, file) {
try {
// Load the stub
Expand Down Expand Up @@ -429,7 +404,7 @@ function loadExistingStubs(files) {
var reader = new XMLHttpRequest();
reader.open('GET', file);
reader.responseType = 'text';

reader.onload = function() {
processStub(reader.response, file);
};
Expand Down
21 changes: 10 additions & 11 deletions web/unit_tests/cases/attachmentAPI.js
Original file line number Diff line number Diff line change
Expand Up @@ -51,8 +51,7 @@ describe('Attachment API', function() {
keyman.attachToControl(ele);
DynamicElements.assertAttached(ele); // Happens in-line, since we directly request the attachment.

// A keystroke must target the input-receiving element. For touch, that's the alias.
eventDriver = new KMWRecorder.BrowserDriver(ele['kmw_ip'] ? ele['kmw_ip'] : ele);
eventDriver = new KMWRecorder.BrowserDriver(ele);
eventDriver.simulateEvent(DynamicElements.keyCommand);

val = retrieveAndReset(ele);
Expand All @@ -74,15 +73,15 @@ describe('Attachment API', function() {
// for the change to take effect.
window.setTimeout(function() {
DynamicElements.assertAttached(ele);
let eventDriver = new KMWRecorder.BrowserDriver(ele['kmw_ip'] ? ele['kmw_ip'] : ele);
let eventDriver = new KMWRecorder.BrowserDriver(ele);
eventDriver.simulateEvent(DynamicElements.keyCommand);
val = retrieveAndReset(ele);
assert.equal(val, DynamicElements.disabledOutput, "'Disabled' element performed keystroke processing!");

keyman.enableControl(ele);
window.setTimeout(function() {
DynamicElements.assertAttached(ele); // Happens in-line, since we directly request the attachment.
let eventDriver = new KMWRecorder.BrowserDriver(ele['kmw_ip'] ? ele['kmw_ip'] : ele);
let eventDriver = new KMWRecorder.BrowserDriver(ele);
eventDriver.simulateEvent(DynamicElements.keyCommand);
val = retrieveAndReset(ele);
assert.equal(val, DynamicElements.enabledLaoOutput, "'Enabled' element did not perform keystroke processing!");
Expand All @@ -108,21 +107,21 @@ describe('Attachment API', function() {

// Set control with independent keyboard.
keyman.setKeyboardForControl(input, "khmer_angkor", "km");
var eventDriver = new KMWRecorder.BrowserDriver(input['kmw_ip'] ? input['kmw_ip'] : input);
var eventDriver = new KMWRecorder.BrowserDriver(input);
eventDriver.simulateEvent(DynamicElements.keyCommand);
val = retrieveAndReset(input);
assert.equal(val, DynamicElements.enabledKhmerOutput, "KMW did not use control's keyboard settings!");

// Swap to a global-linked control...
keyman.setActiveElement(textarea);
eventDriver = new KMWRecorder.BrowserDriver(textarea['kmw_ip'] ? textarea['kmw_ip'] : textarea);
eventDriver = new KMWRecorder.BrowserDriver(textarea);
eventDriver.simulateEvent(DynamicElements.keyCommand);
val = retrieveAndReset(textarea);
assert.equal(val, DynamicElements.enabledLaoOutput, "KMW did not use manage keyboard settings correctly for global-linked control!");

// Swap back and check that the settings persist.
keyman.setActiveElement(input);
eventDriver = new KMWRecorder.BrowserDriver(input['kmw_ip'] ? input['kmw_ip'] : input);
eventDriver = new KMWRecorder.BrowserDriver(input);
eventDriver.simulateEvent(DynamicElements.keyCommand);
val = retrieveAndReset(input);
assert.equal(val, DynamicElements.enabledKhmerOutput, "KMW forgot control's independent keyboard settings!");
Expand Down Expand Up @@ -154,14 +153,14 @@ describe('Attachment API', function() {
keyman.setActiveElement(input);
// Set textarea control with independent keyboard khmer_angkor.
keyman.setKeyboardForControl(textarea, "khmer_angkor", "km");
var eventDriver = new KMWRecorder.BrowserDriver(input['kmw_ip'] ? input['kmw_ip'] : input);
var eventDriver = new KMWRecorder.BrowserDriver(input);
eventDriver.simulateEvent(DynamicElements.keyCommand);
val = retrieveAndReset(input);
assert.equal(val, DynamicElements.enabledLaoOutput, "KMW set independent keyboard for the incorrect control!");

// Swap to the textarea control with its overridden khmer_angkor keyboard...
keyman.setActiveElement(textarea);
eventDriver = new KMWRecorder.BrowserDriver(textarea['kmw_ip'] ? textarea['kmw_ip'] : textarea);
eventDriver = new KMWRecorder.BrowserDriver(textarea);
eventDriver.simulateEvent(DynamicElements.keyCommand);
val = retrieveAndReset(textarea);
assert.equal(val, DynamicElements.enabledKhmerOutput, "KMW did not properly store keyboard for the previously-inactive control!");
Expand All @@ -170,14 +169,14 @@ describe('Attachment API', function() {
keyman.setActiveElement(input);
keyman.setKeyboardForControl(textarea, null, null);

eventDriver = new KMWRecorder.BrowserDriver(input['kmw_ip'] ? input['kmw_ip'] : input);
eventDriver = new KMWRecorder.BrowserDriver(input);
eventDriver.simulateEvent(DynamicElements.keyCommand);
val = retrieveAndReset(input);
assert.equal(val, DynamicElements.enabledLaoOutput, "KMW made a strange error when clearing an inactive control's keyboard setting!");

keyman.setActiveElement(textarea);
// Finally, after clearing the independent setting, check that we are back to Lao output as expected for the textarea
eventDriver = new KMWRecorder.BrowserDriver(textarea['kmw_ip'] ? textarea['kmw_ip'] : textarea);
eventDriver = new KMWRecorder.BrowserDriver(textarea);
eventDriver.simulateEvent(DynamicElements.keyCommand);
val = retrieveAndReset(textarea);
assert.equal(val, DynamicElements.enabledLaoOutput, "KMW did not properly clear control's independent keyboard settings!");
Expand Down
6 changes: 0 additions & 6 deletions web/unit_tests/cases/engine.js
Original file line number Diff line number Diff line change
Expand Up @@ -145,9 +145,6 @@ describe('Engine - Browser Interactions', function() {

it('Simple Keypress', function() {
var inputElem = document.getElementById('singleton');
if(inputElem['kmw_ip']) {
inputElem = inputElem['kmw_ip'];
}

var lao_s_key_json = {"type": "key", "key":"s", "code":"KeyS","keyCode":83,"modifierSet":0,"location":0};
var lao_s_event = new KMWRecorder.PhysicalInputEventSpec(lao_s_key_json);
Expand All @@ -163,9 +160,6 @@ describe('Engine - Browser Interactions', function() {

it('Simple OSK click', function() {
var inputElem = document.getElementById('singleton');
if(inputElem['kmw_ip']) {
inputElem = inputElem['kmw_ip'];
}

var lao_s_osk_json = {"type": "osk", "keyID": 'shift-K_S'};
var lao_s_event = new KMWRecorder.OSKInputEventSpec(lao_s_osk_json);
Expand Down
Loading

0 comments on commit a67dfbb

Please sign in to comment.