|
|
Created:
4 years ago by EhsanK Modified:
4 years ago Reviewers:
Charlie Reis CC:
chromium-reviews, mlamouri+watch-content_chromium.org, jam, darin-cc_chromium.org, site-isolation-reviews_chromium.org Target Ref:
refs/pending/heads/master Project:
chromium Visibility:
Public. |
DescriptionRemove an incorrect DCHECK.
The method RenderWidget::GetInputMethodController() can return nullptr in
the following cases:
1- RenderWidget is swapped out.
2- There is no focused frame in the local root which accepts IME.
2.1 There are no focused local frames.
2.2 The focused local frame does not belong to the same local root as RenderWidget.
2.3 The focused local frame cannot accept IME since WebWidget is not focused (e.g., switched tabs).
Therefore, to handle set composition IPC we should not assume controller can
never be nullptr. A valid repro case:
1- Create an OOPIF in a page.
2- Add input in OOPIF.
3- Write javascript code which would randomly take focus away from OOPIF.
4- Activate some IME and start typing.
Eventually, DCHECK fires because the IPC to set composition arrived after
the widget lost the focused frame.
BUG=578168
Committed: https://crrev.com/685eb79f0ce22cc6fcdd74a76f0dfc240e1eff34
Cr-Commit-Position: refs/heads/master@{#437904}
Patch Set 1 #
Messages
Total messages: 36 (23 generated)
The CQ bit was checked by ekaramad@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
Description was changed from ========== Remove an incorrect DCHECK. The method RenderWidget::GetInputMethodController() can return nullptr in the following cases: 1- RenderWidget is swapped out. 2- There is no focused frame on page which accepts IME. 2.1 There is no focused frame in the Widget. 2.2 There is a focused frame but the Widget does not have focus, i.e., switched tabs. Therefore, to handle set composition IPC we should not assume controller can never be nullptr. It actually can, e.g: 1- Create two OOPIFs in process B on a page in process A. 2- Add <input> and write some javascript code which would occasionally focus one <input> and its window. 3- Activate IME and start typing. 4- Eventually, DCHECK fires because the IPC to set composition arrived after the widget lost the focused frame. BUG=578168 ========== to ========== Remove an incorrect DCHECK. The method RenderWidget::GetInputMethodController() can return nullptr in the following cases: 1- RenderWidget is swapped out. 2- There is no focused frame in the local root which accepts IME. 2.1 There are no focused local frames. 2.2 The focused local frame does not belong to the same local root as RenderWidget. 2.3 The focused local frame cannot accept IME since WebWidget is not focused (e.g., switched tabs). Therefore, to handle set composition IPC we should not assume controller can never be nullptr. A valid repro case: 1- Create an OOPIF in a page. 2- Add input in OOPIF. 3- Write javascript code which would randomly take focus away from OOPIF. 4- Activate some IME and start typing. Eventually, DCHECK fires because the IPC to set composition arrived after the widget lost the focused frame. BUG=578168 ==========
ekaramad@chromium.org changed reviewers: + creis@chromium.org
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: Try jobs failed on following builders: cast_shell_android on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/cast_shell_a...) linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
The CQ bit was checked by ekaramad@chromium.org to run a CQ dry run
Dry run: CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Dry run: This issue passed the CQ dry run.
PTAL.
LGTM
The CQ bit was checked by ekaramad@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
The CQ bit was checked by ekaramad@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
The CQ bit was checked by ekaramad@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
The CQ bit was unchecked by ekaramad@chromium.org
The CQ bit was checked by ekaramad@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
The CQ bit was unchecked by commit-bot@chromium.org
Try jobs failed on following builders: linux_android_rel_ng on master.tryserver.chromium.android (JOB_FAILED, https://build.chromium.org/p/tryserver.chromium.android/builders/linux_androi...)
The CQ bit was checked by ekaramad@chromium.org
CQ is trying da patch. Follow status at https://chromium-cq-status.appspot.com/v2/patch-status/codereview.chromium.or...
CQ is committing da patch. Bot data: {"patchset_id": 1, "attempt_start_ts": 1481564992473440, "parent_rev": "cf382913656ae15c01c9342f81edffdb8f2aedae", "commit_rev": "291710d6f6243fd1abdc64f2a62323c3a11e3f97"}
Message was sent while issue was closed.
Description was changed from ========== Remove an incorrect DCHECK. The method RenderWidget::GetInputMethodController() can return nullptr in the following cases: 1- RenderWidget is swapped out. 2- There is no focused frame in the local root which accepts IME. 2.1 There are no focused local frames. 2.2 The focused local frame does not belong to the same local root as RenderWidget. 2.3 The focused local frame cannot accept IME since WebWidget is not focused (e.g., switched tabs). Therefore, to handle set composition IPC we should not assume controller can never be nullptr. A valid repro case: 1- Create an OOPIF in a page. 2- Add input in OOPIF. 3- Write javascript code which would randomly take focus away from OOPIF. 4- Activate some IME and start typing. Eventually, DCHECK fires because the IPC to set composition arrived after the widget lost the focused frame. BUG=578168 ========== to ========== Remove an incorrect DCHECK. The method RenderWidget::GetInputMethodController() can return nullptr in the following cases: 1- RenderWidget is swapped out. 2- There is no focused frame in the local root which accepts IME. 2.1 There are no focused local frames. 2.2 The focused local frame does not belong to the same local root as RenderWidget. 2.3 The focused local frame cannot accept IME since WebWidget is not focused (e.g., switched tabs). Therefore, to handle set composition IPC we should not assume controller can never be nullptr. A valid repro case: 1- Create an OOPIF in a page. 2- Add input in OOPIF. 3- Write javascript code which would randomly take focus away from OOPIF. 4- Activate some IME and start typing. Eventually, DCHECK fires because the IPC to set composition arrived after the widget lost the focused frame. BUG=578168 Review-Url: https://codereview.chromium.org/2558303003 ==========
Message was sent while issue was closed.
Committed patchset #1 (id:1)
Message was sent while issue was closed.
Description was changed from ========== Remove an incorrect DCHECK. The method RenderWidget::GetInputMethodController() can return nullptr in the following cases: 1- RenderWidget is swapped out. 2- There is no focused frame in the local root which accepts IME. 2.1 There are no focused local frames. 2.2 The focused local frame does not belong to the same local root as RenderWidget. 2.3 The focused local frame cannot accept IME since WebWidget is not focused (e.g., switched tabs). Therefore, to handle set composition IPC we should not assume controller can never be nullptr. A valid repro case: 1- Create an OOPIF in a page. 2- Add input in OOPIF. 3- Write javascript code which would randomly take focus away from OOPIF. 4- Activate some IME and start typing. Eventually, DCHECK fires because the IPC to set composition arrived after the widget lost the focused frame. BUG=578168 Review-Url: https://codereview.chromium.org/2558303003 ========== to ========== Remove an incorrect DCHECK. The method RenderWidget::GetInputMethodController() can return nullptr in the following cases: 1- RenderWidget is swapped out. 2- There is no focused frame in the local root which accepts IME. 2.1 There are no focused local frames. 2.2 The focused local frame does not belong to the same local root as RenderWidget. 2.3 The focused local frame cannot accept IME since WebWidget is not focused (e.g., switched tabs). Therefore, to handle set composition IPC we should not assume controller can never be nullptr. A valid repro case: 1- Create an OOPIF in a page. 2- Add input in OOPIF. 3- Write javascript code which would randomly take focus away from OOPIF. 4- Activate some IME and start typing. Eventually, DCHECK fires because the IPC to set composition arrived after the widget lost the focused frame. BUG=578168 Committed: https://crrev.com/685eb79f0ce22cc6fcdd74a76f0dfc240e1eff34 Cr-Commit-Position: refs/heads/master@{#437904} ==========
Message was sent while issue was closed.
Patchset 1 (id:??) landed as https://crrev.com/685eb79f0ce22cc6fcdd74a76f0dfc240e1eff34 Cr-Commit-Position: refs/heads/master@{#437904} |