Closed Bug 1074653 (keyboard-render-refactor) Opened 10 years ago Closed 6 years ago

[meta] Rearchitect IMERender, LayoutRenderingManager, AlternativesCharMenuView & Manager

Categories

(Firefox OS Graveyard :: Gaia::Keyboard, defect)

ARM
Gonk (Firefox OS)
defect
Not set
normal

Tracking

(feature-b2g:3.0?, tracking-b2g:+)

RESOLVED WONTFIX
feature-b2g 3.0?
tracking-b2g +

People

(Reporter: mnjul, Unassigned)

References

Details

As we were doing bug 1044525 it began to be apparent that we could re-architect IMERender, LayoutRenderingManager, AlternativesCharMenuView, and AlternativesCharMenuManager (and possibly some other modules if needed).

We're currently observing these issues or smelly codes, at least:

1. IMERender is globally referenceable and everyone is free to poke it around. It probably should be known to LayoutRenderingManager only, and anything talking to the view should explicitly go to LayoutRenderingManager (also, does this mean that moving the management of the AlternativesCharMenu instance to the rendering manager is reasonable and/or architecturally sound?)

2. Following 1., what is the best way we expose the forward DOMElem-to-KeyObj and reverse KeyObj-to-DOMElem maps? (and other views such as AltsCharMenuView?)

3. We have a few inner (yet long) functions in IMERender, and the IMERender itself is quite huge. We should dissect it. Also, CandidatePanelManager pokes into IMERender heavily -- we probably want a CandidatePanelView if extracting that from IMERender reasonably allows responsibility separation.

4. Following 3., we're also generating business logic objects directly in IMERender, such as [1]. Coincidentally, those objects are all related to CandidatePanel... so there could be some interplay with separating CandidatePanel logics out.

[1] https://github.com/mozilla-b2g/gaia/blob/master/apps/keyboard/js/render.js#L421
John, thanks for filing this bug.
I'd like to start keyboard rendering refactoring with this as a meta bug.
Summary: Rearchitect IMERender, LayoutRenderingManager, AlternativesCharMenuView & Manager → [meta] Rearchitect IMERender, LayoutRenderingManager, AlternativesCharMenuView & Manager
Alias: keyboard-render-refactor
This is the preparation work for Emoji bug 993888, 2.2+
feature-b2g: --- → 2.2+
Blocks: 993899
blocking-b2g: --- → backlog
IMERender expose a method, setInputMethodName(), which for the client code to add 'latin' as a className to the candidate panel. 
I think we should normalize this into a general case, e.g. define a candidatePanel section in each layout definition file, and specify the className there.
===
candidatePanel: {
  className: 'latin'
}
Mass-unassign feature-b2g: 2.2+ to re-scope 2.2 features.
feature-b2g: 2.2+ → ---
tracking-b2g: --- → +
Marking 2.2 features for 3.0 considerations.
feature-b2g: --- → 3.0?
blocking-b2g: backlog → ---
Firefox OS is not being worked on
Status: NEW → RESOLVED
Closed: 6 years ago
Resolution: --- → WONTFIX
You need to log in before you can comment on or make changes to this bug.