Commit Graph

222 Commits

Author SHA1 Message Date
Makoto Kato
dd46e10efb Bug 1639087 - Add dragcaret event by accessible caret. r=TYLin,smaug
To support magnifying glass on GeckoView, I would like to add `dragcaret`
event and, clientX and clientX in CaretStateChangedEvent chrome event.

Actually, accessible caret fires `presscaret` and `releasecaret` when
accessbile caret is pressed or released. But when dragging this caret, no
chrome event is fired. Since magnifying glass listens to moving this caret,
I would like `dargcaret` for GeckoView.

Also, Users' dragging point is necessary to set better position of magnifying
glass windows. So I also want client point of dragging point on `presscaret`
and `dragcaret` event.

This event and properties are on layout.accessiblecaret.magnifier.enabled=true,
So this can be only for GeckoView.

Differential Revision: https://phabricator.services.mozilla.com/D137965
2022-04-08 05:11:48 +00:00
Masayuki Nakano
f0a61e93ec Bug 1740853 - part 3: Redesign nsContentUtils::ComparePoints_Fix*() as taking int64_t for the offset r=smaug
For reducing the legacy behavior emulator of `nsContentUtils::ComparePoints`
and make it simpler, this patch makes it take `int64_t` as the offset.
Additionally, it's named "ComparePoints_AllowNegativeOffsets`.

Differential Revision: https://phabricator.services.mozilla.com/D132549
2021-12-09 17:06:18 +00:00
Masayuki Nakano
3af58be69c Bug 1740853 - part 1: Make nsContentUtils::ComparePoints take uint32_t for offset in DOM nodes r=smaug
They are defined as "unsigned long" by the standards.  So we should use
`uint32_t` rather than `int32_t` with the methods.  However, layout code
uses `int32_t` a lot for representing the offset.  Therefore, this patch
adds `*_FixOffset1` etc for the cases which cannot fix easily in this patch.

Differential Revision: https://phabricator.services.mozilla.com/D131110
2021-12-09 07:51:45 +00:00
Masayuki Nakano
daf79ccd1e Bug 1735446 - part 4: Make Selection::GetRangeAt() take uint32_t instead of int32_t r=smaug
It's an internal API corresponding to `Selection.getRangeAt` DOM API.
I think that it should use `uint32_t` rather than `size_t` because of the
consistency with the DOM API and `Selection::RangeCount()`.

This patch fixes all callers of `GetRangeAt()`, and rewrites it with ranged-
loops unless original ones do not refer `RangeCount()` every time and may run
script in the loop.

Differential Revision: https://phabricator.services.mozilla.com/D128848
2021-12-09 07:35:09 +00:00
Sylvestre Ledru
0a33533196 Bug 1519636 - Reformat recent changes to the Google coding style r=andi,necko-reviewers
Updated with clang-format version 11.0.1 (taskcluster-B6bdwSKDRF-luRQWXBuzpA)

# ignore-this-changeset

Differential Revision: https://phabricator.services.mozilla.com/D105158
2021-02-15 08:49:20 +00:00
Mirko Brodesser
030c0e73bc Bug 1688832: part 7) Declare AccessibleCaretManager::GetAllChildFrameRectsUnion static. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D103471
2021-01-29 18:57:30 +00:00
Mirko Brodesser
50d6479aba Bug 1688832: part 6) Hide AccessibleCaretManager::Carets::mFirst, mSecond. r=smaug
Helps to see that they're never replaced with new instances.

Differential Revision: https://phabricator.services.mozilla.com/D103313
2021-01-29 09:46:09 +00:00
Mirko Brodesser
e3b51e2ea0 Bug 1688832: part 5) Add AccessibleCaretManager::Carets::GetSecond. r=smaug
Depends on D103311

Differential Revision: https://phabricator.services.mozilla.com/D103312
2021-01-28 17:28:19 +00:00
Mirko Brodesser
b46c9e44c3 Bug 1688832: part 4) Add AccessibleCaretManager::Carets::GetFirst. r=smaug
Will help to hide the `UniquePtr`s.

Depends on D103310

Differential Revision: https://phabricator.services.mozilla.com/D103311
2021-01-29 09:26:47 +00:00
Mirko Brodesser
65a590debb Bug 1688832: part 3) Add AccessibleCaretManager::Carets::HasVisuallyVisibleCaret. r=smaug
Depends on D103309

Differential Revision: https://phabricator.services.mozilla.com/D103310
2021-01-28 17:20:35 +00:00
Mirko Brodesser
5951935c5f Bug 1688832: part 2) Add AccessibleCaretManager::Carets::HasLogicallyVisibleCaret. r=smaug
Depends on D103308

Differential Revision: https://phabricator.services.mozilla.com/D103309
2021-01-28 17:02:40 +00:00
Mirko Brodesser
ab03dfcb0d Bug 1688832: part 1) Encapsulate AccessibleCaretManager::mFirstCaret, mSecondCaret in mCarets. r=smaug
They belong together.

Depends on D103307

Differential Revision: https://phabricator.services.mozilla.com/D103308
2021-01-28 17:01:46 +00:00
Dorel Luca
48b366e3d5 Backed out 10 changesets (bug 1688832) for causing failures in builds/worker/checkouts/gecko/layout/base/PresShell.cpp. CLOSED TREE
Backed out changeset 595e1c877517 (bug 1688832)
Backed out changeset 5b09f705ef8d (bug 1688832)
Backed out changeset d836c47aef1c (bug 1688832)
Backed out changeset a52ca43f4156 (bug 1688832)
Backed out changeset 7183b7f948a6 (bug 1688832)
Backed out changeset 766c328fa158 (bug 1688832)
Backed out changeset dcc61c66c659 (bug 1688832)
Backed out changeset bd1ad0a8f943 (bug 1688832)
Backed out changeset c190058d85b8 (bug 1688832)
Backed out changeset 0848f7977679 (bug 1688832)
2021-01-27 12:37:54 +02:00
Mirko Brodesser
92ae0d1a00 Bug 1688832: part 10) Hide UniquePtrs in AccessibleCaretManager::Carets. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D102927
2021-01-27 09:43:14 +00:00
Mirko Brodesser
340c4d378e Bug 1688832: part 9) Add non-default constructor to AccessibleCaretManager::Carets. r=TYLin
Preparation to hide the `UniquePtr`s of `Carets`.

Differential Revision: https://phabricator.services.mozilla.com/D102925
2021-01-27 09:43:08 +00:00
Mirko Brodesser
7c9f27d96b Bug 1688832: part 8) Add AccessibleCaretManager::Carets::GetSecond. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D102924
2021-01-27 09:43:00 +00:00
Mirko Brodesser
4393d7549d Bug 1688832: part 7) Add AccessibleCaretManager::Carets::GetFirst. r=TYLin
Will help to hide the `UniquePtr`s.

Differential Revision: https://phabricator.services.mozilla.com/D102923
2021-01-27 09:43:42 +00:00
Mirko Brodesser
e56d9c19f0 Bug 1688832: part 6) Prepare AccessibleCaretManager::DispatchCaretStateChangedEvent for splitting. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D102922
2021-01-27 09:43:40 +00:00
Mirko Brodesser
fe6bb65661 Bug 1688832: part 5) Add static AccessibleCaretManager::GetSelection, ::GetFrameSelection. r=TYLin
Preparation to simplify `AccessibleCaretManager::Dispatch...`.

Differential Revision: https://phabricator.services.mozilla.com/D102921
2021-01-27 09:43:37 +00:00
Mirko Brodesser
5a417ad501 Bug 1688832: part 4) Add AccessibleCaretManager::SelectionStringifyer. r=TYLin
Will help to simplify `AccessibleCaretManager::Dispatch...`.

Differential Revision: https://phabricator.services.mozilla.com/D102920
2021-01-27 09:43:35 +00:00
Mirko Brodesser
abb756ad7b Bug 1688832: part 3) Add AccessibleCaretManager::Carets::AreVisuallyVisible r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D102919
2021-01-27 09:43:32 +00:00
Mirko Brodesser
6058123e65 Bug 1688832: part 2) Add AccessibleCaretManager::Carets::AreLogicallyVisible. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D102918
2021-01-27 09:43:30 +00:00
Mirko Brodesser
e73c5f3bc5 Bug 1688832: part 1) Encapsulate AccessibleCaretManager::mFirstCaret, mSecondCaret in mCarets. r=TYLin
They belong together.

Differential Revision: https://phabricator.services.mozilla.com/D102917
2021-01-27 09:42:22 +00:00
Mirko Brodesser
55d45fce13 Bug 1685303: part 28) Add virtual AccessibleCaretManager::MaybeFlushLayout. r=TYLin,smaug
In the unit-tests, flushing is not done. This was prevented implicitly
by nulling `mPresShell`. This change makes that explicit by stubbing
`MaybeFlushLayout`.

Note that `IsTerminated`, which is called in the same context is already
virtual, so I expect this to not have a noticeable performance-impact.

Depends on D102607

Differential Revision: https://phabricator.services.mozilla.com/D102608
2021-01-22 12:18:05 +00:00
Mirko Brodesser
1d6264e630 Bug 1685303: part 26) Correct typo in AccessibleCaretManager::mAyncPanZoomState. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D102606
2021-01-21 23:37:21 +00:00
Mirko Brodesser
96832f7806 Bug 1685303: part 25) Hide AccessibleCaretManager::LayoutFlusher::mFlushing. r=TYLin
Depends on D102414

Differential Revision: https://phabricator.services.mozilla.com/D102415
2021-01-20 23:31:44 +00:00
Mirko Brodesser
ace78c2f88 Bug 1685303: part 24) Encapsulate LayoutFlusher from AccessibleCaretManager. r=TYLin
Encapsulates flushing-related functionality.

Please see part 25) for further simplifcation of `LayoutFlusher`.

Depends on D102413

Differential Revision: https://phabricator.services.mozilla.com/D102414
2021-01-20 23:31:42 +00:00
Mirko Brodesser
912c97043e Bug 1685303: part 23) Declare AccessibleCaretManager::GetEditingHostForFrame static. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D102413
2021-01-20 23:30:06 +00:00
Mirko Brodesser
e3752ea6df Bug 1685303: part 22) Qualify arguments of AccessibleCaretManager::UpdateCaretsForAlwaysTilt const. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D102311
2021-01-20 10:15:08 +00:00
Mirko Brodesser
761d8429d4 Bug 1685303: part 21) Rename HideCarets to HideCaretsAndDispatchCaretStateChangedEvent. r=TYLin
It reflects clearer what the method does.

Differential Revision: https://phabricator.services.mozilla.com/D102303
2021-01-20 10:15:08 +00:00
Mirko Brodesser
bdcd7de220 Bug 1685303: part 20) const-correct internals of `AccessibleCaretManager::DispatchCaretStateChangedEvent. r=TYLin
Differential Revision: https://phabricator.services.mozilla.com/D102302
2021-01-20 10:11:20 +00:00
Mirko Brodesser
63894abb34 Bug 1685303: part 19) Encapsulate DesiredAsyncPanZoomState from AccessibleCaretManager. r=TYLin
The wording is less ambigous and more `const`-access is allowed.

Differential Revision: https://phabricator.services.mozilla.com/D102301
2021-01-20 10:13:37 +00:00
Mirko Brodesser
8c0d4f7c69 Bug 1685303: part 17) Slightly refactor AccessibleCaretManager::FlushLayout. r=TYLin
Now the method states clearer what it does.

Differential Revision: https://phabricator.services.mozilla.com/D102192
2021-01-20 10:13:07 +00:00
Mirko Brodesser
f5df414f54 Bug 1685303: part 18) Add some const-correctness to AccessibleCaretManager::GetCaretMode. r=smaug
Might later help to clean up the dependencies to `Selection`.

Differential Revision: https://phabricator.services.mozilla.com/D102199
2021-01-18 16:23:12 +00:00
Mirko Brodesser
63c445bb78 Bug 1685303: part 14) Annotate SelectByTypeAtPoint with MOZ_CAN_RUN_SCRIPT. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D101762
2021-01-15 09:28:07 +00:00
Mirko Brodesser
3cef08a463 Bug 1685303: part 10) Annotate nsFrameSelection::HandleClick with MOZ_CAN_RUN_SCRIPT. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D101598
2021-01-14 13:24:36 +00:00
Masayuki Nakano
1a6ee46590 Bug 1357365 - part 5: Make TypeInState::OnSelectionChange stop keeping link style for new inserting content when selection is changed by JS r=m_kato,edgar
This is the most important situation.  If selection is collapsed to a edge of a
link, the other browsers does not insert new content into the link.  So, from
the point of view of web developers, this cause should work exactly same as
the other browsers.

Note that the new failures in `editing/run/inserttext.html` are passed only
on Gecko.  So, the test should be updated after fixing this bug.

Differential Revision: https://phabricator.services.mozilla.com/D101004
2021-01-13 01:55:40 +00:00
Mirko Brodesser
b7aceb6038 Bug 1685303: part 6) Add verbose logging to AccessibleCaretManager::SelectWord. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D101356
2021-01-11 15:09:52 +00:00
Emilio Cobos Álvarez
6f77a5fb7c Bug 1351248 - Simplify nsIFrame::IsFocusable API. r=layout-reviewers,mats
We always compute the tabindex value, so just return it to the caller
all the time. This allows us to use early-returns which makes the code a
bit easier to follow.

This patch shouldn't change behavior.

Differential Revision: https://phabricator.services.mozilla.com/D100423
2021-01-03 23:30:51 +00:00
Ting-Yu Lin
99c9d5eaf4 Bug 1649191 - Remove the guarding statement about mismatching carets mode from AccessibleCaretManager APIs. r=botond
Steps to reproduce:
1. Open https://bugzilla.mozilla.org/home
   (Note the cursor is already blinking in the <input>
   "Enter a bug number or some search terms")
2. Pinch-zoom in.
3. Tap on the <input> "Enter a bug number or some search terms."
4. Pan/scroll the page, and the scrolling is very laggy.

Without this patch, AccessibleCaret disables APZ incorrectly via the
above operations. Here's an analysis.

In step 2, `OnScrollEnd()` called at the end of the pinch-zoom operation
is supposed to reset `mIsScrollStarted` to `false`, but `GetCaretMode()`
returns `CaretMode::Cursor` because the page already has a focus on
<input>. We are early-returned from `OnScrollEnd()` because
`mLastUpdateCaretMode` is still the default value `CaretMode::None`.

In step 3, tapping the <input> will call `UpdateCaretsForCursorMode()`,
setting `mIsCaretPositionChanged` to `true`. Then
`UpdateShouldDisableApz()` incorrectly sets `mShouldDisableApz` to
`true` because we still have `mIsScrollStarted=true`.

In step 4, the operation is laggy because APZ is disabled.

This patch fixed this bug by removing the guarding statement
`mLastUpdateCaretMode != GetCaretMode()` from three callback methods.

The statements were added in the very first patch introducing
`AccessibleCaretManager`. I don't recall why we needed them. (Perhaps to
avoid unnecessary updates notified from other PresShell?). Anyway, since
then, these callbacks have evolved to update carets only if any caret is
logically visible, so I don't see why we need these guards nowadays. By
doing so, `mIsScrollStarted` can be reset to `false` in `OnScrollEnd()`
in step 2.

Differential Revision: https://phabricator.services.mozilla.com/D99284
2020-12-09 23:02:34 +00:00
Kagami Sascha Rosylight
6edefafd86 Bug 1680167 - Part 7: MOZ_CAN_RUN_SCRIPT_BOUNDARY in layout r=masayuki
Depends on D98629

Differential Revision: https://phabricator.services.mozilla.com/D98630
2020-12-03 21:36:41 +00:00
Simon Giesecke
46908cfb51 Bug 1660470 - Add missing include directives/forward declarations. r=nika
Differential Revision: https://phabricator.services.mozilla.com/D87865
2020-11-23 16:21:38 +00:00
lonocvb
cbb8aa4f18 Bug 1669158 - Fix the offset of nested iframe by considering the border and padding size. r=mats,geckoview-reviewers,TYLin,agi
Differential Revision: https://phabricator.services.mozilla.com/D92375
2020-10-13 05:02:26 +00:00
Ting-Yu Lin
ede6f9503a Bug 1637130 - Rename visual overflow to ink overflow. r=dbaron
This patch is generated by:

```
# Rename the nsOverflowType enum.
rg -l "eVisualOverflow" layout/ gfx/ | xargs sed -i "s/eVisualOverflow/eInkOverflow/g"

# Rename and drop the "Get" prefix from various functions.
rg -l "GetVisualOverflowRect" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowRect/InkOverflowRect/g"
rg -l "GetPreEffectsVisualOverflowRect" layout/ gfx/ | xargs sed -i "s/GetPreEffectsVisualOverflowRect/PreEffectsInkOverflowRect/g"
rg -l "GetVisualOverflowFromDeltas" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowFromDeltas/InkOverflowFromDeltas/g"
rg -l "GetScrollableOverflowRect" layout/ gfx/ | xargs sed -i "s/GetScrollableOverflowRect/ScrollableOverflowRect/g"

# Rename, drop the "Get" prefix, and change the suffix "Area" to "Rect"
# (because they return nsRect) for the two methods in nsLineBox.
rg -l "GetVisualOverflowArea" layout/ gfx/ | xargs sed -i "s/GetVisualOverflowArea/InkOverflowRect/g"
rg -l "GetScrollableOverflowArea" layout/ gfx/ | xargs sed -i "s/GetScrollableOverflowArea/ScrollableOverflowRect/g"

# Rename rest of the functions and variables.
rg -l "VisualOverflow" layout/ gfx/ | xargs sed -i "s/VisualOverflow/InkOverflow/g"
rg -l "visual overflow" layout/ gfx/ | xargs sed -i "s/visual overflow/ink overflow/g"
rg -l "visualOverflow" layout/ gfx/ | xargs sed -i "s/visualOverflow/inkOverflow/g"
rg -l "visOverflow" layout/ gfx/ | xargs sed -i "s/visOverflow/inkOverflow/g"
rg -l "vis-overflow" layout/ gfx/ python/ | xargs sed -i "s/vis-overflow/ink-overflow/g"

./mach clang-format
```

Differential Revision: https://phabricator.services.mozilla.com/D84231
2020-07-20 20:17:36 +00:00
Kagami Sascha Rosylight
5f988b0085 Bug 1630704 - Part 28: Remove nsFrame r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D81865
2020-07-06 22:38:11 +00:00
Kagami Sascha Rosylight
93741338a8 Bug 1630704 - Part 27: Remove nsFrame from inheritance chain r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D81864
2020-07-06 22:29:42 +00:00
Simon Giesecke
a69d79b6db Bug 1648010 - Replace uses of NS_LITERAL_STRING/NS_LITERAL_CSTRING macros by _ns literals. r=geckoview-reviewers,jgilbert,agi,hsivonen,froydnj
Differential Revision: https://phabricator.services.mozilla.com/D80860
2020-07-01 08:29:29 +00:00
Kagami Sascha Rosylight
fbef1cfbce Bug 1644868 - Return pointer from GetPrimaryFrameFor* r=jfkthame
Those methods have two sources to check after call: the return value and the pointer. This can be confusing as a caller may think they should check both when they don't need to. Since the two always behaves together (a valid pointer + NS_OK, or nullptr + NS_ERROR_FAILURE), this replaces the return value with the pointer.

Differential Revision: https://phabricator.services.mozilla.com/D79196
2020-06-11 10:56:11 +00:00
Ting-Yu Lin
1bcc656a6a Bug 1638928 Part 2 - Rename nsIFrame's GetChildLists() to ChildLists(). r=mats
This patch is generated by using my editor's rename functionality.

In the next patch, `nsIFrame::` prefix is going to be removed manually
from all the ChildLists() calls.

Differential Revision: https://phabricator.services.mozilla.com/D75893
2020-05-19 12:37:37 +00:00
Ting-Yu Lin
59cb4b8a77 Bug 1635319 Part 2 - Use range-based for loops and array iterators instead of ChildListIterator in layout/generic/. r=mats
Differential Revision: https://phabricator.services.mozilla.com/D75653
2020-05-18 01:17:15 +00:00