change(web): drops old IE-related handling code#6557
Conversation
User Test ResultsTest specification and instructions ✅ SUITE_IN_APP:8 tests in 2 groups PASSED
✅ SUITE_BROWSER:4 tests in 2 groups PASSED
Test Artifacts
|
|
Ooh, a "fun" note: when testing on an un-updated Android API 21 (5.0) image, most KMW testing pages will break! To fix this, replace Neither |
|
To test the previous commit (f14e7f1), I dummied out the After doing so, the standard unminified test page appeared fully functional on an emulated API 21 device running Chrome for Android 37. Therefore, the one remaining reason to continue using Noting the significant file size it brings, that leaves us with a choice:
The latter two options allow us to drop |
|
Note tagged PRs - there are a few comments noted here that motivate use of arrow functions, which had always been an issue for IE. Adjustments will be possible once |
|
Extra note: make absolutely sure that IE has been removed from all test configs for Web - such as in the "manual" (local) unit-testing configuration on Windows. |
SUITE_IN_APP:GROUP_IOS_12_APP: iOS 12.0 (any matching device; Simulator is fine)
|
SUITE_BROWSER:GROUP_ANDROID_6_CHROME: Chrome on Android 6.0 / API 23 (any matching device; emulation is fine)
|
SUITE_IN_APP:GROUP_IOS_12_APP: iOS 12.0 (any matching device; Simulator is fine)
|
SUITE_BROWSER:GROUP_IOS_12_SAFARI: Safari on iOS 12.0 (any matching device; Simulator is fine)
|
|
Weird that you're getting a 404 when following that link; it works perfectly fine for me right now. Maybe something went funny with the server when you were testing? BTW, I believe that in this scenario, that'd be a "BLOCKED", not a "FAILED" - you didn't even get to run the tests, after all. SUITE_BROWSER GROUP_ANDROID_6_CHROME GROUP_IOS_12_SAFARI |
@jahorton Ah..Yes. It is "BLOCKED" and not "FAILED". Thanks Josh, for the clarification. 👍 |
This is my preference: Keyman Engine for Web should not include any polyfills. Any app that uses Keyman Engine for Web (whether that be a native device app like Keyman for Android, or a website like keymanweb.com) can decide which versions of browsers it wants to support and provide the necessary polyfills. This is similar to our strategy for supporting error reporting -- it's up to the app, not Keyman Engine for Web, to make these choices. (The worker may be an issue, admittedly -- any ideas?) What we should do, to be nice JS citizens, is provide guidance in the Keyman Engine for Web documentation on which features may require polyfills. Note: if we want keymanweb.com to support older browsers, we can include es6-shim.js there. Analysis of current device users may help on this. |
| // Think of it as performing a floor() function, but the floor depends on the origin's direction. | ||
| let snapOrder: (x: number, y: number) => boolean; | ||
| const isRTL = (this as unknown as HTMLElement).dir == 'rtl'; | ||
| const snapOrder = isRTL ? (a, b) => a < b : (a, b) => a > b; |
There was a problem hiding this comment.
Except... they're actually transpiling now?
Yeah, I noticed that they've been transpiling properly for a while. Perhaps we had the wrong output version set at some point?
| e.style.MozUserSelect="none"; | ||
| e.style.KhtmlUserSelect="none"; | ||
| e.style.UserSelect="none"; | ||
| e.style.WebkitUserSelect="none"; |
There was a problem hiding this comment.
Three of these are probably also unnecessary now but I haven't checked version support for *UserSelect?
There was a problem hiding this comment.
https://developer.mozilla.org/en-US/docs/Web/CSS/user-select
The fact that the article still references all of them and their differences is something I find concerning.
Always has been. That'd take some time and investment to work around, I think. Rough approach outline(?): For inlined scripts: https://stackoverflow.com/a/34854903 For file-based scripts: it sounds like something AJAX-based would be required. Once all scripts are loaded, they could then be prepended to the worker Blob. Of course, note how this will add more asynch-ness to our keyboards' startup time. |
@bharanidharanj I am able to replicate this error page. We will fix that in an upcoming update to the test pages. However, I am not sure why you need to click that link in order to run the test? You should be able to navigate from the User Test Results artifacts section: to: and from there, to: without ever needing to click the "Return to main index" link? (If you accidentally go to the wrong page, use the back button in your browser) @keymanapp-test-bot retest TEST_LOREM_IPSUM |
We need a '../index.html' link rather than '../' on the three second-level KeymanWeb test pages, in order to get to the index page for artifacts when the test pages are hosted on build.palaso.org -- otherwise TeamCity returns a 404. (This is probably also good for file-system-based navigation.) We don't need the same reference on other directories, just for the top-level index.html. Identified at #6557 (comment)
| printf "function %s () {\n" "${name}" | ||
|
|
||
| # TODO: I don't know if this is still true, or if we can add the polyfills to | ||
| # the project directly now? |
There was a problem hiding this comment.
Hmm. We could test this, I suppose. It's possible the declaration emitter got enhanced in the newer TS version we're using now.
It definitely fell over quickly when I tried directly linking against it with allowJS=true in the config before we were using incremental builds.
@mcdurdin I thought by clicking on the 'Return to main index' link would show the corresponding test page. Anyhow, thanks for your suggestion. I will retest it and post my comment. 👍 |
SUITE_BROWSER:GROUP_IOS_12_SAFARI: Safari on iOS 12.0 (any matching device; Simulator is fine)
|
mcdurdin
left a comment
There was a problem hiding this comment.
Any change to polyfill strategy (moving responsibility to the consumer of Keyman Engine for Web) belongs in a separate PR, so this LGTM now (two minor comments pending)
|
Changes in this pull request will be available for download in Keyman version 16.0.19-alpha |








Fixes #5943.
Also addresses some concerns of #3796. As of commit 474634a,
While this should be safe, removing numerous old internal hooks like this could have unforeseen complications.
These changes are 16.0-only; they will not land in 15.0.
This PR seeks to remove a lot of the older parts of KMW that were devoted to IE-wrangling. We haven't actively tested KMW on IE in a while and we officially dropped support versions ago. Now, it's time to drop all pretenses of IE support entirely.
That said, we still do need to keep some polyfills around, as older Android devices that we still support launched with old enough versions of Chrome that parts of KMW will instantly break on them unless their users actually update Chrome. I added documenting comments to the most relevant file:
keyman/common/web/lm-worker/build.sh
Lines 54 to 80 in 326dc4d
This is the LMLayer's worker polyfill set. Note that some of these polyfills are used explicitly because we don't want
es6-shimbloat in theWebWorker- KeymanWeb itself would usees6-shiminstead for such cases. That said, KMW doesn't actually seem to utilize the features being polyfilled... here.Also, now that we're dropping IE... we can actually just straight-up stop bundling
es6-shiminto KMW.User Testing
Test Suite 1: in-app uses
SUITE_IN_APP:
Testing Environments
GROUP_ANDROID_5_APP: Android 5.0 / API 21 (any matching device; emulation is fine)
GROUP_IOS_12_APP: iOS 12.0 (any matching device; Simulator is fine)
For both, please:
sil_euro_latin(the default keyboard) installed with predictive text active.Tests
TEST_INAPP_BASE: Using English(EuroLatin SIL)...
In portrait orientation, verify OSK is visible and fills the width the bottom of the screen
qkey workspkey worksSHIFT1231key works0key worksTEST_INAPP_LONG_PRESS: Using English(EuroLatin SIL)...
Type on the OSK using the following scenarios and verify expected output:
TEST_KEYBOARD_SWAP: Use the keyboard's globe key to swap keyboards.
TEST_PREDICTIVE_TEXT: Using English(EuroLatin SIL)...
th. All suggestions should begin with these two letters.thwith your selection.Test Suite 2: standalone use on mobile platforms
SUITE_BROWSER:
Testing Environments
GROUP_ANDROID_6_CHROME: Chrome on Android 6.0 / API 23 (any matching device; emulation is fine)
for ... ofandMap.GROUP_IOS_12_SAFARI: Safari on iOS 12.0 (any matching device; Simulator is fine)
For both, please:
sil_euro_latin(the default keyboard) installed with predictive text active.Tests
TEST_INAPP_BASE: Use the testing page "Test unminified Keymanweb".
In portrait orientation, verify OSK is visible and fills the width the bottom of the screen
qkey workspkey worksSHIFT1231key works0key worksTEST_LOREM_IPSUM: Use the testing page "Tests performance of touch-alias elements with large amounts of text" - it should be the last one listed on the testing index page.
lorem ipsum. Text entry should feel responsive and no laggier than the other interactions required by this test.