Closed Bug 1462257 Opened Last year Closed Last year

Microsoft Pinyin Chinese IME - can't delete the last letter with backspace

Categories

(Core :: User events and focus handling, defect, P2)

61 Branch
All
Windows
defect

Tracking

()

VERIFIED FIXED
mozilla63
Tracking Status
firefox-esr52 --- unaffected
firefox-esr60 --- unaffected
firefox61 --- wontfix
firefox62 + verified
firefox63 --- verified

People

(Reporter: ershiwo, Assigned: masayuki)

References

Details

(Keywords: inputmethod, regression)

Attachments

(2 files)

Attached image 123.gif
User Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:61.0) Gecko/20100101 Firefox/61.0
Build ID: 20180514150347

Steps to reproduce:

Input some Chinese words in text area(or any other place) with Microsoft Pinyin in Windows 10 1803, backspace the incorrect letters.


Actual results:

The last letter won't be deleted and it was in selected state.


Expected results:

There is nothing after delete all incorrect pinyin letters.
OS: Unspecified → Windows
Hardware: Unspecified → All
Has STR: --- → yes
Component: Untriaged → Widget: Win32
Keywords: inputmethod
Product: Firefox → Core
Summary: Chinese IME compatibility issue → Microsoft Pinyin Chinese IME - can't delete the last letter with backspace
Status: UNCONFIRMED → NEW
Ever confirmed: true
Odd, I cannot reproduce this bug.
This seems to be regression by bug 1456381.  And I can reproduce this on both x86 (VM) and x64 using Microsoft Pinyin.  Last backspace selects that character instead of deleting character.
Could you take a look or attach a log of "MOZ_LOG=nsTextStoreWidgets:5,sync"?
Flags: needinfo?(m_kato)
Ah, after I restart my computer, I reproduce this bug.
Flags: needinfo?(m_kato)
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   Locking (TS_LF_READWRITE) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::OnEndComposition(pComposition=0x0000029476172930), mComposition={ mView=0x0000029476172930, mString="n" }
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::RecordCompositionEndAction(), mComposition={ mView=0x0000029476172930, mString="n" }
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::MaybeDispatchKeyboardEventAsProcessedByIME(), does nothing because not necessary to dispatch keyboard event
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=1, acpEnd=1 (length=0), reverted=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::ContentForTSFRef(): mContentForTSF={ mText="n" (Length()=1), mLastCompositionString="n" (Length()=1), mMinTextModifiedOffset=4294967295 }
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::RecordCompositionEndAction(), succeeded
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::OnEndComposition(), succeeded
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::OnStartComposition(pComposition=0x000002940F02EF30, pfOk=0x000000A0D03FCA10), mComposition.mView=0x0000000000000000
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::RecordCompositionStartAction(aComposition=0x000002940F02EF30, aRange=0x000002940F02EDB8, aPreserveSelection=false), mComposition.mView=0x0000000000000000
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::RecordCompositionStartAction(aComposition=0x000002940F02EF30, aStart=0, aLength=1, aPreserveSelection=false), mComposition.mView=0x0000000000000000
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=1, acpEnd=1 (length=0), reverted=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::ContentForTSFRef(): mContentForTSF={ mText="n" (Length()=1), mLastCompositionString="n" (Length()=1), mMinTextModifiedOffset=4294967295 }
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::MaybeDispatchKeyboardEventAsProcessedByIME(), does nothing because not necessary to dispatch keyboard event
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=1, acpEnd=1 (length=0), reverted=false
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::RecordCompositionStartAction() succeeded: mComposition={ mStart=0, mString.Length()=1, mSelectionForTSF={ acpStart=0, acpEnd=1, style.ase=TS_AE_END, style.fInterimChar=false } }
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::OnStartComposition() succeeded
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::SetText(dwFlags=not-specified, acpStart=0, acpEnd=1, pchText=0x00007FF872DEDD1C "", cch=0, pChange=0x000000A0D03FCA48), mComposition.IsComposing()=true
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SetSelectionInternal(pSelection={ acpStart=0, acpEnd=1, style={ ase=TS_AE_END, fInterimChar=false} }, aDispatchCompositionChangeEvent=false), mComposition.IsComposing()=true
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=0, acpEnd=1 (length=1), reverted=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::MaybeDispatchKeyboardEventAsProcessedByIME(), does nothing because not necessary to dispatch keyboard event
> [Parent 29116: Main Thread]: W/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SetSelectionInternal() Succeeded but did nothing because the selection range isn't changing
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::InsertTextAtSelectionInternal(aInsertStr="", aTextChange=0x000000A0D03FCA48), IsComposing=true
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=0, acpEnd=1 (length=1), reverted=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::ContentForTSFRef(): mContentForTSF={ mText="n" (Length()=1), mLastCompositionString="n" (Length()=1), mMinTextModifiedOffset=4294967295 }
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::MaybeDispatchKeyboardEventAsProcessedByIME(), does nothing because not necessary to dispatch keyboard event
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D270   TSFTextStore::Content::ReplaceTextWith(aStart=0, aLength=1, aReplaceString=""), mComposition={ mStart=0, mString="" }, mLastCompositionString="n", mMinTextModifiedOffset=4294967295, firstDifferentOffset=0
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::InsertTextAtSelectionInternal() succeeded: mWidget=0x000002947639C000, mWidget->Destroyed()=false, aTextChange={ acpStart=0, acpOldEnd=1, acpNewEnd=0 }
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SetText() succeeded: pChange={ acpStart=0, acpOldEnd=1, acpNewEnd=0 }
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::OnUpdateComposition(pComposition=0x000002940F02EF30, pRangeNew=0x0000000000000000), mComposition.mView=0x000002940F02EF30
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::MaybeDispatchKeyboardEventAsProcessedByIME(), does nothing because not necessary to dispatch keyboard event
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::OnUpdateComposition() succeeded but not complete
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::OnEndComposition(pComposition=0x000002940F02EF30), mComposition={ mView=0x000002940F02EF30, mString="" }
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::RecordCompositionEndAction(), mComposition={ mView=0x000002940F02EF30, mString="" }
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::MaybeDispatchKeyboardEventAsProcessedByIME(), does nothing because not necessary to dispatch keyboard event
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=0, acpEnd=0 (length=0), reverted=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::ContentForTSFRef(): mContentForTSF={ mText="" (Length()=0), mLastCompositionString="n" (Length()=1), mMinTextModifiedOffset=0 }
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::RecordCompositionEndAction(), succeeded
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::OnEndComposition(), succeeded
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::SetSelection(ulCount=1, pSelection=000000A0D03FCA30 { acpStart=0, acpEnd=0, style={ ase=TS_AE_END, fInterimChar=false } }), mComposition.IsComposing()=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SetSelectionInternal(pSelection={ acpStart=0, acpEnd=0, style={ ase=TS_AE_END, fInterimChar=false} }, aDispatchCompositionChangeEvent=true), mComposition.IsComposing()=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=0, acpEnd=0 (length=0), reverted=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::MaybeDispatchKeyboardEventAsProcessedByIME(), does nothing because not necessary to dispatch keyboard event
> [Parent 29116: Main Thread]: W/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SetSelectionInternal() Succeeded but did nothing because the selection range isn't changing
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SetSelection() succeeded
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::GetSelection(ulIndex=4294967295, ulCount=1, pSelection=0x000000A0D03FD760, pcFetched=0x000000A0D03FD8D8)
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=0, acpEnd=0 (length=0), reverted=false
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetSelection() succeeded, acpStart=0, acpEnd=0 (length=0), reverted=false
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::GetSelection(ulIndex=4294967295, ulCount=1, pSelection=0x000000A0D03FD730, pcFetched=0x000000A0D03FD884)
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=0, acpEnd=0 (length=0), reverted=false
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetSelection() succeeded, acpStart=0, acpEnd=0 (length=0), reverted=false
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::GetActiveView(pvcView=0x000000A0D03FD778)
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetActiveView() succeeded: *pvcView=1
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::GetScreenExt(vcView=1, prc=0x000000A0D03FD7E0)
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetScreenExtInternal()
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetScreenExtInternal() succeeded: aScreenExt={ left=990, top=482, right=1496, bottom=503 }
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetScreenExt() succeeded: *prc={ left=990, top=482, right=1496, bottom=503}
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::GetTextExt(vcView=1, acpStart=0, acpEnd=0, prc=0x000000A0D03FD7F0, pfClipped=0x000000A0D03FD7B0), IsHandlingComposition()=true, mContentForTSF={ MinOffsetOfLayoutChanged()=0, LatestCompositionStartOffset()=0, LatestCompositionEndOffset()=0 }, mComposition= { IsComposing()=false, mStart=0, EndOffset()=0 }, mDeferNotifyingTSF=false, mWaitingQueryLayout=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=0, acpEnd=0 (length=0), reverted=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetTextExt() hacked the queried range for not returning TS_E_NOLAYOUT, newvalues are: acpStart=0, acpEnd=0
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetScreenExtInternal()
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetScreenExtInternal() succeeded: aScreenExt={ left=990, top=482, right=1496, bottom=503 }
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetTextExt() succeeded: *prc={ left=992, top=484, right=1000, bottom=501 }, *pfClipped=false
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   Unlocked (TS_LF_READWRITE) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::FlushPendingActions() flushing Type::eCompositionEnd={ mData="n" }
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::FlushPendingActions(), dispatching compositioncommit event...
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::FlushPendingActions() flushing Type::eCompositionStart={ mSelectionStart=0, mSelectionLength=1 }, mDestroyed=false
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::FlushPendingActions() dispatching compositionstart event...
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::FlushPendingActions() flushing Type::eCompositionEnd={ mData="" }
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::FlushPendingActions(), dispatching compositioncommit event...
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::MaybeFlushPendingNotifications(), putting off flushing pending notifications due to being dispatching events...
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::RequestLock() succeeded: *phrSession=S_OK
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::RequestLock(dwLockFlags=TS_LF_READ | TS_LF_SYNC, phrSession=0x000000A0D03FE788), mLock=not-specified, mDestroyed=false
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   Locking (TS_LF_READ) >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::GetSelection(ulIndex=4294967295, ulCount=1, pSelection=0x000000A0D03FE250, pcFetched=0x000000A0D03FE408)
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::SelectionForTSFRef(): acpStart=0, acpEnd=0 (length=0), reverted=false
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::GetSelection() succeeded, acpStart=0, acpEnd=0 (length=0), reverted=false
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   Unlocked (TS_LF_READ) <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
> [Parent 29116: Main Thread]: D/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::MaybeFlushPendingNotifications(), putting off flushing pending notifications due to being dispatching events...
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190   TSFTextStore::RequestLock() succeeded: *phrSession=S_OK
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::GetStatus(pdcs=0x000000A0D03FD280)
> [Parent 29116: Main Thread]: I/nsTextStoreWidgets 0x000002940B80D190 TSFTextStore::RequestLock(dwLockFlags=TS_LF_READWRITE, phrSession=0x000000A0D03FD2C0), mLock=not-specified, mDestroyed=false

Tricky behavior... When I remove last 1 character of composition string, MS Pinyin commits composition with the last character. Then, new composition is started and it tries to replace the last character with empty string. We must fail handling the last odd composition.
Oh... This is a bug of TextComposition::DispatchCompositionEvent(). It does not dispatch eCompositionChange event from eCompositionCommit event when commit string is empty and it's fired immediately after eCompositionStart.
Assignee: nobody → masayuki
Status: NEW → ASSIGNED
Component: Widget: Win32 → Event Handling
Priority: -- → P2
MS Wubi, MS ChangJie and MS Quick behave same as MS Pinyin.

According to Nightly's telemetry, 55% of Simplified Chinese language users use MS Pinyin or MS Wubi, and 20% of Traditional Chinese language users use MS ChangJie or MS Quick.
Comment on attachment 8991557 [details]
Bug 1462257 - TextComposition should dispatch eCompositionChange event when eCompositionCommit is being fired immediately after eCompositionStart

https://reviewboard.mozilla.org/r/256476/#review263610
Attachment #8991557 - Flags: review?(m_kato) → review+
Pushed by masayuki@d-toybox.com:
https://hg.mozilla.org/integration/autoland/rev/37e818a03a1b
TextComposition should dispatch eCompositionChange event when eCompositionCommit is being fired immediately after eCompositionStart r=m_kato
Comment on attachment 8991557 [details]
Bug 1462257 - TextComposition should dispatch eCompositionChange event when eCompositionCommit is being fired immediately after eCompositionStart

Approval Request Comment
[Feature/Bug causing the regression]:
Regression of bug 1456381.

[User impact if declined]:
Chinese language (both Simplified and Traditional) users see odd character when they remove all composition string to cancel current inputting word.

[Is this code covered by automated tests?]:
No.

[Has the fix been verified in Nightly?]:
Not yet, but I confirmed on local build.

[Needs manual test from QE? If yes, steps to reproduce]: 
Yes.
1. Select Microsoft's Chinese IME such as Microsoft Pinyin.
2. Change input mode to Chinese character (perhaps, pressing ShiftLeft key toggles the input mode).
3. Type "ni" into an editor (e.g., <https://w3c.github.io/uievents/tools/key-event-viewer.html>)
4. Type Backspace twice to remove all characters.

Without this fix, you'll see selected "n" in the editor.  If fixed correctly, correctly both "ni" are removed. Note that you may see selected "n" temporarily immediately after press second Backspace. This will be fixed by bug 1475153, but it's not regression. So, it should be ride the train.

[List of other uplifts needed for the feature/fix]:
No.

[Is the change risky?]:
No.

[Why is the change risky/not risky?]:
This starts eCompositionChange event only when "compositionend" follows "compositionstart" without any "compositionupdate". This is really rare case.  And also eCompositionChange event is exposed as DOM "text" event, but this is non-standard and I think that most web apps do not listen to this event. So, most web apps won't realize this behavior change.

If web apps realize this difference, it must be in the case of canceling composition when it receives "compositionupdate" event. However, it won't work well with Chrome (see the comment in testcase). So, most web apps must not do this.

[String changes made/needed]:
No.
Attachment #8991557 - Flags: approval-mozilla-beta?
https://hg.mozilla.org/mozilla-central/rev/37e818a03a1b
Status: ASSIGNED → RESOLVED
Closed: Last year
Resolution: --- → FIXED
Target Milestone: --- → mozilla63
Brindusa, can you or someone on your team verify the fix in nightly? Thanks!
Flags: qe-verify+
Flags: needinfo?(brindusa.tot)
(In reply to Liz Henry (:lizzard) (needinfo? me) from comment #16)
> Brindusa, can you or someone on your team verify the fix in nightly? Thanks!

I have test it on this nightly build: http://ftp.mozilla.org/pub/firefox/nightly/2018/07/2018-07-16-11-05-59-oak/
It looks fine.
I tested this on Windows 10 x64 following the steps from comment 14 and I was able to reproduce the issue on a Nightly build without the fix. I also tested on Nightly 63.0a1(2018-07-18) and the issue is no longer reproducible. 
Based on the above information, I will mark this as verified as fixed on Nightly.
Based on the previous comment, remove the NI.
Flags: needinfo?(brindusa.tot)
Comment on attachment 8991557 [details]
Bug 1462257 - TextComposition should dispatch eCompositionChange event when eCompositionCommit is being fired immediately after eCompositionStart

Fix for recent regression, verified in Nightly. 
Thanks for adding tests!
Let's uplift for beta 11.
Attachment #8991557 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
I tested with FF Beta 62.0b11 on Windows 10 and I can confirm that this issue is fixed.
Status: RESOLVED → VERIFIED
Flags: qe-verify+
Component: Event Handling → User events and focus handling
You need to log in before you can comment on or make changes to this bug.