Closed
Bug 1005751
Opened 10 years ago
Closed 10 years ago
[Keyboard] Make keyboard not to wait for settings db when showing up
Categories
(Firefox OS Graveyard :: Gaia::Keyboard, defect, P1)
Tracking
(Not tracked)
RESOLVED
FIXED
2.0 S2 (23may)
People
(Reporter: timdream, Assigned: timdream)
References
Details
(Whiteboard: [save=~69ms][p=3])
Attachments
(1 file)
+++ This bug was initially created as a clone of Bug #970188 +++ The keyboard cold launch patch currently wait for Settings database to return the settings. It should not do that.
Assignee | ||
Updated•10 years ago
|
Whiteboard: [save=~250ms]
Assignee | ||
Updated•10 years ago
|
Assignee: nobody → timdream
Status: NEW → ASSIGNED
Target Milestone: --- → 2.0 S1 (9may)
Assignee | ||
Comment 1•10 years ago
|
||
My WIP, it saves about 110ms when launching, see the log below for the timestamp of "doShowKeyboard" https://github.com/timdream/gaia/tree/keyboard-startup-settings This however it's not ready. This takes a lot longer than I expected because I was hit by a unreported bug; for some reasons, although I didn't do call path change beyond doShowKeyboard, the faster keyboard will receive onResize event of unknown origin. It will trigger extra stuff that actually makes keyboard launch slower. Rudy, would you be able to fix this and find the cause of the above behavior next week while I am OOO? The keyboard app is really not in a good shape where we understand it fully. ======================= With only the PerformanceTimer: [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236 I/GeckoDump( 4087): [kbdTime] BLOCKING IMERender.draw:callback, 2516, 2790, 124 [Keyboard Manager kbd] set layout to display: type=text index=0 [Keyboard Manager kbd] setLayoutFrameActive: undefinedundefined, active: false [Keyboard Manager kbd] setLayoutFrameActive: app://keyboard.gaiamobile.org/manifest.webapp/index.html#en, active: true [Keyboard Manager kbd] hideKeyboard display transitionend [kbdTime] keyboard.js, 0, 287 [kbdTime] getSettings, 1, 288 [kbdTime] gotSettings, 178, 465 [kbdTime] initKeyboard, 180, 467 [kbdTime] initKeyboard->setKeyboardName->showKeyboard, 188, 475, 8 [kbdTime] setKeyboardName, 189, 476 [kbdTime] loadLayout, 189, 476 [kbdTime] setLayout, 220, 507 [kbdTime] loadIMEngine, 221, 508 [kbdTime] setInputMethod, 290, 577 [kbdTime] showKeyboard, 292, 579 [kbdTime] showKeyboard:inputContext.getText, 322, 609 [kbdTime] doShowKeyboard, 339, 626 [kbdTime] glue.sendCandidates, 345, 632 [kbdTime] renderKeyboard, 345, 632 [kbdTime] BLOCKING renderKeyboard, 485, 772, 140 [kbdTime] dimensionsObserver:callback, 486, 773 [kbdTime] updateTargetWindowHeight, 487, 774 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] showKeyboard display transitionend [Keyboard Manager kbd] updateHeight: 236 [kbdTime] IMERender.draw:callback, 1542, 1829 [kbdTime] glue.sendCandidates, 1616, 1903 [kbdTime] BLOCKING IMERender.draw:callback, 1620, 1907, 73 With other commits: [Keyboard Manager kbd] set layout to display: type=text index=0 [Keyboard Manager kbd] setLayoutFrameActive: undefinedundefined, active: false [Keyboard Manager kbd] setLayoutFrameActive: app://keyboard.gaiamobile.org/manifest.webapp/index.html#en, active: true [Keyboard Manager kbd] hideKeyboard display transitionend [kbdTime] keyboard.js, 0, 274 [kbdTime] initKeyboard, 2, 276 [kbdTime] initKeyboard->setKeyboardName->showKeyboard, 50, 324, 48 [kbdTime] setKeyboardName, 51, 325 [kbdTime] loadLayout, 51, 325 [kbdTime] setLayout, 170, 444 [kbdTime] loadIMEngine, 170, 444 [kbdTime] setInputMethod, 236, 510 [kbdTime] showKeyboard, 236, 510 [kbdTime] showKeyboard:inputContext.getText, 248, 522 [kbdTime] doShowKeyboard, 270, 544 [kbdTime] glue.sendCandidates, 303, 577 [kbdTime] renderKeyboard, 303, 577 [kbdTime] BLOCKING renderKeyboard, 421, 695, 117 [kbdTime] dimensionsObserver:callback, 422, 696 [kbdTime] updateTargetWindowHeight, 423, 697 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] showKeyboard display transitionend [Keyboard Manager kbd] updateHeight: 236 [kbdTime] onResize, 1451, 1725 [kbdTime] updateTargetWindowHeight, 1483, 1757 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236 [kbdTime] glue.sendCandidates, 1741, 2015 [kbdTime] dimensionsObserver:callback, 1746, 2020 [kbdTime] updateTargetWindowHeight, 1747, 2021 [kbdTime] onResize, 1761, 2035 [kbdTime] updateTargetWindowHeight, 1800, 2074 [kbdTime] dimensionsObserver:callback, 1818, 2092 [kbdTime] updateTargetWindowHeight, 1825, 2099 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236 [kbdTime] IMERender.draw:callback, 2089, 2363 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236 [kbdTime] glue.sendCandidates, 2199, 2473 [kbdTime] BLOCKING IMERender.draw:callback, 2210, 2484, 105 [kbdTime] doShowKeyboard, 2230, 2504 [kbdTime] glue.sendCandidates, 2260, 2534 [kbdTime] renderKeyboard, 2266, 2540 [kbdTime] BLOCKING renderKeyboard, 2269, 2543, 3 [kbdTime] dimensionsObserver:callback, 2274, 2548 [kbdTime] updateTargetWindowHeight, 2275, 2549 [kbdTime] IMERender.draw:callback, 2386, 2660 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236 [kbdTime] BLOCKING IMERender.draw:callback, 2516, 2790, 124
Flags: needinfo?(rlu)
Whiteboard: [save=~250ms] → [save=~110ms][p=3]
Target Milestone: 2.0 S1 (9may) → 2.0 S2 (23may)
Assignee | ||
Comment 2•10 years ago
|
||
Update the second log: [kbdTime] keyboard.js, 0, 267 [kbdTime] initKeyboard, 2, 269 [kbdTime] initKeyboard->setKeyboardName->showKeyboard, 54, 321, 53 [kbdTime] setKeyboardName, 54, 321 [kbdTime] loadLayout, 55, 322 [kbdTime] setLayout, 160, 427 [kbdTime] loadIMEngine, 161, 428 [kbdTime] setInputMethod, 240, 507 [kbdTime] showKeyboard, 243, 510 [kbdTime] doShowKeyboard, 258, 525 [kbdTime] glue.sendCandidates, 273, 540 [kbdTime] renderKeyboard, 289, 556 [kbdTime] BLOCKING renderKeyboard, 404, 671, 115 [kbdTime] dimensionsObserver:callback, 405, 672 [kbdTime] updateTargetWindowHeight, 406, 673 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] showKeyboard display transitionend [Keyboard Manager kbd] updateHeight: 236 [kbdTime] onResize, 1450, 1717 [kbdTime] updateTargetWindowHeight, 1479, 1746 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236 [kbdTime] glue.sendCandidates, 1735, 2002 [kbdTime] dimensionsObserver:callback, 1747, 2014 [kbdTime] updateTargetWindowHeight, 1749, 2016 [kbdTime] onResize, 1771, 2038 [kbdTime] updateTargetWindowHeight, 1806, 2073 [kbdTime] dimensionsObserver:callback, 1825, 2092 [kbdTime] updateTargetWindowHeight, 1830, 2097 [kbdTime] IMERender.draw:callback, 1864, 2131 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236 [kbdTime] glue.sendCandidates, 1955, 2222 [kbdTime] BLOCKING IMERender.draw:callback, 1958, 2225, 80 [Keyboard Manager kbd] resizeKeyboard: 236 [Keyboard Manager kbd] updateHeight: 236
Assignee | ||
Comment 3•10 years ago
|
||
See bug 1007595 comment 5. This is a mozbrowser platform issue. I am going to workaround it in this bug.
Flags: needinfo?(rlu)
Assignee | ||
Comment 4•10 years ago
|
||
https://github.com/timdream/gaia/compare/mozilla-b2g:master...timdream:keyboard-startup-settings?expand=1 Here is what I have now. I will starting adding tests tomorrow. Rudy, what's your feedback? Let's move everything out of keyboard.js piece by piece.
Flags: needinfo?(rlu)
Assignee | ||
Comment 5•10 years ago
|
||
Compare to comment 1 the patch wins about 487-418 = 96ms when comparing when |updateTargetWindowHeight| is called. === I/GeckoDump( 6341): [kbdTime] keyboard.js, 0, 265 I/GeckoDump( 6341): [kbdTime] initKeyboard, 2, 267 I/GeckoDump( 6341): [kbdTime] initKeyboard->setKeyboardName->showKeyboard, 80, 345, 78 I/GeckoDump( 6341): [kbdTime] setKeyboardName, 81, 346 I/GeckoDump( 6341): [kbdTime] loadLayout, 81, 346 I/GeckoDump( 6341): [kbdTime] setLayout, 184, 449 I/GeckoDump( 6341): [kbdTime] loadIMEngine, 185, 450 I/GeckoDump( 6341): [kbdTime] setInputMethod, 238, 503 I/GeckoDump( 6341): [kbdTime] showKeyboard, 239, 504 I/GeckoDump( 6341): [kbdTime] doShowKeyboard, 257, 522 I/GeckoDump( 6341): [kbdTime] glue.sendCandidates, 281, 546 I/GeckoDump( 6341): [kbdTime] renderKeyboard, 282, 547 I/GeckoDump( 6341): [kbdTime] BLOCKING renderKeyboard, 416, 681, 133 I/GeckoDump( 6341): [kbdTime] dimensionsObserver:callback, 417, 682 I/GeckoDump( 6341): [kbdTime] updateTargetWindowHeight, 418, 683 I/GeckoDump( 6341): [kbdTime] IMERender.draw:callback, 1777, 2042 I/GeckoDump( 6341): [kbdTime] glue.sendCandidates, 1868, 2133 I/GeckoDump( 6341): [kbdTime] BLOCKING IMERender.draw:callback, 1907, 2172, 111 I/GeckoDump( 6341): [kbdTime] attachResizeListener, 1908, 2173
Comment 7•10 years ago
|
||
bug 1007595 looks like the same issue that hit me when I was testing the launch time of the new keyboard, i.e. demo-keyboard. I agree that we could workaround this first. BTW, can we add the eventListener for resize after the keyboard is shown? Thanks for looking into this.
Updated•10 years ago
|
Flags: needinfo?(rlu)
Assignee | ||
Updated•10 years ago
|
Attachment #8419960 -
Flags: review?(rlu)
Assignee | ||
Comment 9•10 years ago
|
||
Numbers: With Part 1 only: I/GeckoDump( 6783): [kbdTime] keyboard.js, 0, 257 I/GeckoDump( 6783): [kbdTime] getSettings, 1, 258 I/GeckoDump( 6783): [kbdTime] gotSettings, 209, 466 I/GeckoDump( 6783): [kbdTime] initKeyboard, 209, 466 I/GeckoDump( 6783): [kbdTime] initKeyboard->setKeyboardName->showKeyboard, 218, 475, 9 I/GeckoDump( 6783): [kbdTime] setKeyboardName, 218, 475 I/GeckoDump( 6783): [kbdTime] loadLayout, 219, 476 I/GeckoDump( 6783): [kbdTime] setLayout, 242, 499 I/GeckoDump( 6783): [kbdTime] loadIMEngine, 243, 500 I/GeckoDump( 6783): [kbdTime] setInputMethod, 276, 533 I/GeckoDump( 6783): [kbdTime] showKeyboard, 280, 537 I/GeckoDump( 6783): [kbdTime] showKeyboard:inputContext.getText, 311, 568 I/GeckoDump( 6783): [kbdTime] doShowKeyboard, 320, 577 I/GeckoDump( 6783): [kbdTime] glue.sendCandidates, 325, 582 I/GeckoDump( 6783): [kbdTime] renderKeyboard, 326, 583 I/GeckoDump( 6783): [kbdTime] drawKeyboard, 340, 597 I/GeckoDump( 6783): [kbdTime] BLOCKING renderKeyboard, 429, 686, 103 I/GeckoDump( 6783): [kbdTime] dimensionsObserver:callback, 430, 687 I/GeckoDump( 6783): [kbdTime] updateTargetWindowHeight, 431, 688 I/GeckoDump( 6783): [kbdTime] IMERender.draw:callback, 1482, 1739 I/GeckoDump( 6783): [kbdTime] glue.sendCandidates, 1553, 1810 I/GeckoDump( 6783): [kbdTime] BLOCKING IMERender.draw:callback, 1571, 1828, 84 With everything: I/GeckoDump( 6847): [kbdTime] keyboard.js, 0, 264 I/GeckoDump( 6847): [kbdTime] initKeyboard, 2, 266 I/GeckoDump( 6847): [kbdTime] initKeyboard->setKeyboardName->showKeyboard, 69, 333, 67 I/GeckoDump( 6847): [kbdTime] setKeyboardName, 70, 334 I/GeckoDump( 6847): [kbdTime] loadLayout, 70, 334 I/GeckoDump( 6847): [kbdTime] setLayout, 208, 472 I/GeckoDump( 6847): [kbdTime] loadIMEngine, 209, 473 I/GeckoDump( 6847): [kbdTime] setInputMethod, 244, 508 I/GeckoDump( 6847): [kbdTime] showKeyboard, 244, 508 I/GeckoDump( 6847): [kbdTime] doShowKeyboard, 309, 573 I/GeckoDump( 6847): [kbdTime] glue.sendCandidates, 317, 581 I/GeckoDump( 6847): [kbdTime] renderKeyboard, 320, 584 I/GeckoDump( 6847): [kbdTime] BLOCKING renderKeyboard, 417, 681, 96 I/GeckoDump( 6847): [kbdTime] dimensionsObserver:callback, 418, 682 I/GeckoDump( 6847): [kbdTime] updateTargetWindowHeight, 419, 683 I/GeckoDump( 6847): [kbdTime] IMERender.draw:callback, 1475, 1739 I/GeckoDump( 6847): [kbdTime] glue.sendCandidates, 1558, 1822 I/GeckoDump( 6847): [kbdTime] BLOCKING IMERender.draw:callback, 1591, 1855, 99 I/GeckoDump( 6847): [kbdTime] attachResizeListener, 1591, 1855
Comment 10•10 years ago
|
||
Comment on attachment 8419960 [details] [review] mozilla-b2g:master PR#19096 Looks good, so r=me. Thank you.
Attachment #8419960 -
Flags: review?(rlu) → review+
Assignee | ||
Comment 11•10 years ago
|
||
master: https://github.com/mozilla-b2g/gaia/commit/2f89c43e798ccba631025bedc47a1fb24e830cf2
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•