New issue
Advanced search Search tips

Issue 714507 link

Starred by 1 user

Issue metadata

Status: Available
Owner: ----
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: ----
Pri: 3
Type: Task

Blocked on:
issue 711396
issue 712761



Sign in to add a comment

We should get rid of VisibleSelection::RootEditableElement()

Project Member Reported by yosin@chromium.org, Apr 24 2017

Issue description

To reduce update layout, we should replace usage of VS::RootEditableElement() 
by RootEditableElementOf(SelectionInDOMTree::Base()).

Basically, visible position canonicalization doesn't return a position
crossing editing boundary of specified position. However, some circumstance
CanonicalPosition() returns a position crossing editing boundary.

Example:
<html><head></head><body contenteditable>...</body></html>

CanonicalPosition(HTML@1) = BODY@0

 

Comment 1 by yosin@chromium.org, Apr 24 2017

Blockedon: 711396 712761
Components: Blink>Editing>Selection
Project Member

Comment 2 by bugdroid1@chromium.org, Apr 24 2017

The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/f0600844152acd9e12e486ecfd49ae492f67517c

commit f0600844152acd9e12e486ecfd49ae492f67517c
Author: yosin <yosin@chromium.org>
Date: Mon Apr 24 09:38:45 2017

Make InputMethodController::TextInputType() to use canonicalized position

Make InputMethodController::TextInputType() to use canonicalized position

This patch changes |RootEditableElementOfSelection()| to use canonicalized
position as workaround for applications depend buggy behavior of Blink.

Before patch[1], |InputMethodController| to check editability of selection by
using |VisibleSelection::Start()|. After patch[1], |InputMethodController| to
use |SelectionInDOMTree::Base()|.

The buggy behavior of Blink caused by using |VisibleSelection::Start()| which
returns inside of editable even if scripts specified before editable.

For example, simpler version of Google Docs/Presentations:
<html>
  <head>...</head>
  <body contenteditable>...</body>
</html>

Google Docs/Presentations set selection to a position HTML@1 where before
BODY element. In this case, |VisibleSelection::Start()| == BODY@0 due by
visible position canonicalization.

[1] http://crrev.com/2782413002 Get rid of computeVisibleSelectionInDOMTreeDeprecated() in InputMethodController

BUG=711396,  712761 , 714507
TEST=run_webkit_unit_tests --gtest_filter=InputMethodControllerTest.TextInputTypeAtBeforeEditable

Review-Url: https://codereview.chromium.org/2834343002
Cr-Commit-Position: refs/heads/master@{#466612}

[modify] https://crrev.com/f0600844152acd9e12e486ecfd49ae492f67517c/third_party/WebKit/Source/core/editing/InputMethodController.cpp
[modify] https://crrev.com/f0600844152acd9e12e486ecfd49ae492f67517c/third_party/WebKit/Source/core/editing/InputMethodControllerTest.cpp

Project Member

Comment 3 by bugdroid1@chromium.org, Apr 24 2017

Labels: merge-merged-3071
The following revision refers to this bug:
  https://chromium.googlesource.com/chromium/src.git/+/60cfc544d6a46df2a54cb222f12fdf12a48d73f0

commit 60cfc544d6a46df2a54cb222f12fdf12a48d73f0
Author: Alex Mineer <amineer@chromium.org>
Date: Mon Apr 24 17:48:28 2017

Make InputMethodController::TextInputType() to use canonicalized position

Make InputMethodController::TextInputType() to use canonicalized position

This patch changes |RootEditableElementOfSelection()| to use canonicalized
position as workaround for applications depend buggy behavior of Blink.

Before patch[1], |InputMethodController| to check editability of selection by
using |VisibleSelection::Start()|. After patch[1], |InputMethodController| to
use |SelectionInDOMTree::Base()|.

The buggy behavior of Blink caused by using |VisibleSelection::Start()| which
returns inside of editable even if scripts specified before editable.

For example, simpler version of Google Docs/Presentations:
<html>
  <head>...</head>
  <body contenteditable>...</body>
</html>

Google Docs/Presentations set selection to a position HTML@1 where before
BODY element. In this case, |VisibleSelection::Start()| == BODY@0 due by
visible position canonicalization.

[1] http://crrev.com/2782413002 Get rid of computeVisibleSelectionInDOMTreeDeprecated() in InputMethodController

BUG=711396,  712761 , 714507
TEST=run_webkit_unit_tests --gtest_filter=InputMethodControllerTest.TextInputTypeAtBeforeEditable

(cherry picked from commit f0600844152acd9e12e486ecfd49ae492f67517c)

Review-Url: https://codereview.chromium.org/2834343002
Cr-Original-Commit-Position: refs/heads/master@{#466612}
Cr-Commit-Position: refs/branch-heads/3071@{#169}
Cr-Branched-From: a106f0abbf69dad349d4aaf4bcc4f5d376dd2377-refs/heads/master@{#464641}

[modify] https://crrev.com/60cfc544d6a46df2a54cb222f12fdf12a48d73f0/third_party/WebKit/Source/core/editing/InputMethodController.cpp
[modify] https://crrev.com/60cfc544d6a46df2a54cb222f12fdf12a48d73f0/third_party/WebKit/Source/core/editing/InputMethodControllerTest.cpp

Labels: Type-Task
Project Member

Comment 5 by sheriffbot@chromium.org, Nov 14

Labels: Hotlist-Recharge-Cold
Status: Untriaged (was: Available)
This issue has been Available for over a year. If it's no longer important or seems unlikely to be fixed, please consider closing it out. If it is important, please re-triage the issue.

Sorry for the inconvenience if the bug really should have been left as Available.

For more details visit https://www.chromium.org/issue-tracking/autotriage - Your friendly Sheriffbot
Status: Available (was: Untriaged)

Sign in to add a comment