Commit Graph

1748 Commits

Author SHA1 Message Date
Masayuki Nakano
7bacea600f Bug 1295354 part.2 ContentEventHandler::GetLastFrameInRangeForTextRect() shouldn't use empty text node as far as possible r=smaug
JS can create empty text nodes. Therefore, ContentEventHandler::GetLastFrameInRangeForTextRect() shouldn't use it for computing retrieving a text frame (Although, such text nodes shouldn't have primary frames).

MozReview-Commit-ID: EJAthEpNZNU

--HG--
extra : rebase_source : ccd05b46911077daa855a5c085839fd14aadc2ee
2016-08-17 14:50:19 +09:00
Masayuki Nakano
0283c8daef Bug 1295354 part.1 ContentEventHandler::GetLastFrameInRangeForTextRect() shouldn't set nextNodeOfRangeEnd to the start node of aRange because the start node should always be in the range r=smaug
nextNodeOfRangeEnd is used for excluding unnecessary node for computing text rect.  When aRange ends at start of a text node, the frames which are created for the text node shouldn't be used.  However, if the end node of aRange is same as the start node of aRange, the node is not outside of aRange.

This could occur when it's called with empty range or there are some empty text nodes.

MozReview-Commit-ID: C1yCN5WrULe

--HG--
extra : rebase_source : 35d5b8feecd351bef29fe4af79a0f6f5bdad8bec
2016-08-16 14:37:40 +09:00
Wes Kocher
2253eb9510 Merge m-c to inbound, a=merge 2016-08-15 14:53:49 -07:00
Wes Kocher
d602abb016 Merge inbound to central, a=merge 2016-08-15 14:20:38 -07:00
Igor
175543fda8 Bug 1293384 - Part 2: Rename Snprintf.h header to Sprintf.h. r=froydnj 2016-08-14 23:43:21 -07:00
Igor
a57972337d Bug 1293384 - Part 1: Rename snprintf_literal to SprintfLiteral. r=froydnj 2016-08-14 23:44:00 -07:00
Wes Kocher
4aec37ca6e Merge m-c to autoland, a=merge 2016-08-12 16:30:03 -07:00
Wes Kocher
e9097643d5 Merge inbound to central, a=merge 2016-08-12 13:44:29 -07:00
Jan de Mooij
0ad12515f4 Bug 1292892 part 1 - Stop using JSRuntime outside SpiderMonkey. r=bz,terrence,fitzgen,kanru 2016-08-11 14:39:22 +02:00
Stone Shih
02e9d4e17a Bug 1180188 - Some pointer events mochitests fails on Linux platform. r=smaug 2016-08-04 11:02:50 +08:00
Masayuki Nakano
a000f807cb Bug 1286464 part.19 ContentEventHandler::OnQueryTextRect() should handle the case when queried range starts from the end of mRootContent r=smaug
First, when the first node causing text is invisible, OnQueryTextRect() still fails even with this patch. We shouldn't fix it in this bug because it's unusual case but this bug is very important especially for some web service using HTML editor like Gmail.

This patch fixes all cases when the start offset of queried range reaches the end of mRootContent.

1. When the last node causing text is a <br> element (either content <br> element or moz-<br> element), its frame is a placeholder for empty line.  Therefore, this patch sets the rect to the frame rect.

2. When the last node causing text is a text node, the last frame generated for it represents its line (including empty line).  Therefore, this patch sets the rect to the result of GetLineBreakerRectAfter().

3. When the last node causes a line breaker before it, the frame may be a placeholder for it (this is not usual case, when user types Enter key at the end of <p> element, <p><br></p> is generated by Gecko).  In this case, this patch sets a possible caret rect which is guessed from the content box of the frame and its font height.

4. When there are no nodes causing text in mRootContent, this patch sets a possible caret rect like case #3.

MozReview-Commit-ID: FS9cWJQ39DK

--HG--
extra : rebase_source : cb2ea4cfb4c8d5c85a4dd7498aa11bd86b61c2ef
2016-08-12 14:57:33 +09:00
Masayuki Nakano
95ad200286 Bug 1286464 part.18 ContentEventHandler::OnQueryTextRectArray() should compute line breaker's rect with the last character's node when the start of queried range is a line breaker and it's caused by a block frame r=smaug
Similar to OnQueryTextRect(), OnQueryTextRectArray() should compute a line breaker's rect with the last character when it's the first character in queried range and not caused by <br> frame.

MozReview-Commit-ID: CGDHbcrc6zB

--HG--
extra : rebase_source : 7e7cad1aebc4b1c675360a1a1ff6e704d17c4e5c
2016-08-08 19:05:35 +09:00
Masayuki Nakano
2408130832 Bug 1286464 part.17 ContentEventHandler::OnQueryTextRect() should compute a line breaker's rect from the last text frame if the queried range starts with a block frame r=smaug
When queried range starts with a block frame, we cannot compute proper line breaker's rect at its open tag only with the frame's rect because the proper rect should be at the end of previous text frame.

Therefore, this patch makes SetRangeFromFlatTextOffset() return the last text node found at scanning the range. Then, OnQueryTextRect() can compute the first line breaker's rect with it (if there is at least one text node).

However, if the last text node is hidden by CSS or something, this patch won't work. We need to do something in another bug for hidden frame's issue, though. But note that IME typically doesn't request hidden text's rect because neither selection nor composition string is in such range.

MozReview-Commit-ID: 2FFzNoubJ1y

--HG--
extra : rebase_source : b9c4af40b8747f19da8e55434d580e29322c9601
2016-08-08 18:11:11 +09:00
Masayuki Nakano
7b45431d6c Bug 1286464 part.16 Rename ContentEventHandler::Get*FrameHavingFlatTextInRange() to ContentEventHandler::Get*FrameInRangeForTextRect() and make them treat a moz-<br> element as a normal <br> element because it doesn't cause text but needs to compute text rect in the last empty line r=smaug
In plain text editor, moz-<br> element is appended for a placeholder of empty line when the text ends with a line breaker. Therefore, when we compute text rects, we need to handle it same as a normal <br> element even though it doesn't cause any text.

MozReview-Commit-ID: 4IXLafU6o0W

--HG--
extra : rebase_source : 5db9c70e3acd40e4f47f35fcf293702ce0fb0295
2016-08-02 14:00:32 +09:00
Masayuki Nakano
b933e7c9bb Bug 1286464 part.15 Rewrite ContentEventHandler::OnQueryTextRect() with new utilities like ContentEventHandler::OnQueryTextRectArray() r=smaug
Although, this patch is pretty big and complicated, but I have no idea to separate this since this rewrites all over the OnQueryTextRect() with new utility methods which are implemented for OnQueryTextRectArray().

Currently, OnQueryTextRect() doesn't support line breaks before block level elements. Therefore, in HTML editors, eQueryTextRect may not work fine if the range includes open tags of block level elements. This causes odd positioning of IME's candidate window in non-e10s mode.

This implements ContentEventHandler::GetLastFrameHavingFlatTextInRange() which scans the given range from last to first. However, this hits wrong NS_ASSERTION() in nsContentIterator::Last().  mLast can be nullptr if there is no content but Init() returns NS_OK even in such case.  I think that returning NS_OK is fine because it's not illegal case.  Therefore this patch fixes the wrong assertion.

MozReview-Commit-ID: E6OnIA1eMou

--HG--
extra : rebase_source : e44114b6fb0024c2ab7f9101b12335de4b5cc4aa
2016-08-12 14:11:33 +09:00
Masayuki Nakano
3734289fe2 Bug 1286464 part.14 When ContentEventHandler::OnQueryTextRectArray() reaches the end of query range, it should append caret rect at the end of the content r=smaug
When the loop in ContentEventHandler::OnQueryTextRectArray() reaches at the end of contents, it should append a caret rect at the end of the contents. That helps deciding popup position of IME when caret is at the end of the contents.

This patch guesses the caret rect with eQueryTextRect event (for avoiding the dependency of native caret position of eQueryCaretRect event handler).

MozReview-Commit-ID: 8cGeHpkzX9g

--HG--
extra : rebase_source : c7adc65ccf0fefa7cb1c3bd0b056dc04f8a85b3e
2016-08-05 16:51:49 +09:00
Masayuki Nakano
65203b7481 Bug 1286464 part.13 ContentEventHandler::OnQueryTextRectArray() should guess a line breaker's rect with previous character's rect if it's available r=smaug
This is hack for returning better rect for a line breaker caused by non-<br> element. E.g., if a block frame causes a line break, after the last visible character is the best position, i.e., there is |<p>ABC</p><p>DEF</p>| and the caret is after "C", querying next character's rect should be computed with "C"'s rect, rather than computed with next <p> element's border rect.

MozReview-Commit-ID: 7nXt74GGpNf

--HG--
extra : rebase_source : 14807e98cc9a6be22e6168570a299abf0ecaf267
2016-08-05 14:31:37 +09:00
Masayuki Nakano
0ee732da0b Bug 1286464 part.12 ContentEventHandler::GetFirstFrameHavingFlatTextInRange() should return only frames whose content causes text r=smaug
If it returns frames which don't cause text, the caller needs complicated loop. So, it should return only frames which causes some text.

MozReview-Commit-ID: 9gny0w1PUMa

--HG--
extra : rebase_source : 423c7b57355d659e1a5bd96dac35060cae38801c
2016-07-21 17:45:17 +09:00
Masayuki Nakano
dd3468f808 Bug 1286464 part.10 ContentEventHandler::OnQueryTextRectArray() should append same rects for following characters of a line breaker in nsTextFrame r=smaug
If line breakers in a text node works as is, e.g., |white-space: pre;| is specified, we need to handle line breakers in text frames too.

This patch handles "\n" in text nodes same as line breakers caused by some elements.

MozReview-Commit-ID: JmXesusFxzR

--HG--
extra : rebase_source : dca28a6e4661eef3c8a102916c451e0f021bf6d5
2016-08-05 14:06:30 +09:00
Masayuki Nakano
2a4ac3b7fa Bug 1286464 part.9 ContentEventHandler::OnQueryTextRectArray() shouldn't append same rect for following character of a lien breaker when the query range starts from middle of the line breaker r=smaug
If the query range starts middle of a line breaker, i.e., "\r[\n", ContentEventHandler::OnQueryTextRectArray() does not need to (in other words, should not) append same rect anymore.

This patch checks if the range starts middle of a line breaker and in such case, skip to append same rect.

MozReview-Commit-ID: H5gdtAakGcP

--HG--
extra : rebase_source : 3afaca4d6e9f09e2054c4a6bd876635cfef6c58c
2016-08-05 13:53:08 +09:00
Masayuki Nakano
7826a090ce Bug 1286464 part.8 ContentEventHandler::OnQueryTextRectArray() should handle line break before a node r=smaug
Some elements causes a line break before itself. In such case, OnQueryTextRectArray() should append one or two rects for such line breakers.

This patch also implements GetLineBreakerRectBefore(). It computes line breaker rect for the given frame. Even if it's a <br> frame, we cannot use its rect because <br> frame height is computed with line height but we need text's height (i.e., font height) and both height and width are 0 if it's in quirks mode and in non-empty line.  Therefore, this patch computes it with frame's baseline, font's max-ascent and max-descent.

Although, this patch computes a line breaker rect caused by a open tag of a block level element with block frame's rect. However, it shouldn't be used actually as far as possible.  Following patches will kill the path to the hack.

MozReview-Commit-ID: 9cym04j9NH9

--HG--
extra : rebase_source : 3117d68f056dc69550a16f52adade82049ba8277
2016-08-05 13:36:22 +09:00
Masayuki Nakano
85f2cccc4f Bug 1286464 part.7 ContentEventHandler::OnQueryTextRect() should redirect the query event to OnQueryCaretRect() if its query range is empty r=smaug
When eQueryTextRect's query range length is 0 (this may be caused by native IME's bug), it should return caret rect. Therefore, it should redirect such query events to OnQueryCaretRect(). Such IME must want caret rect in such case.

MozReview-Commit-ID: JaUwhw1Cn5G

--HG--
extra : rebase_source : aef43e028fdf19b1e4977ce0d73e3fd700793ba9
2016-07-25 23:19:53 +09:00
Masayuki Nakano
d170e03f6c Bug 1286464 part.6 ContentEventHandler::OnQueryCaretRect() should use eQueryTextRect event when it needs to guess the caret rect r=smaug
ContentEventHandler::OnQueryTextRect() is now too complicated. So, we shouldn't duplicate similar code in OnQueryCaretRect(). When it needs to guess a caret rect from a character rect, we shouldn't compute character rect by itself.

MozReview-Commit-ID: 5G4MzQJzmoV

--HG--
extra : rebase_source : 31f2ec578eeb2af82b8af2d938448eb42afd50ea
2016-07-29 00:37:09 +09:00
Masayuki Nakano
20e4c11caf Bug 1286464 part.5 Create ContentEventHandler::EnsureNonEmptyRect() for query various rect event handlers r=smaug
This can kill the duplicated code in a lot of places in ContentEventHandler.

MozReview-Commit-ID: BRpBkbXyeBs

--HG--
extra : rebase_source : 98021e68cd0150149e6417c5a8f91979f5baad76
2016-08-05 13:01:17 +09:00
Masayuki Nakano
d8cc4e966b Bug 1286464 part.4 ContentEventHandler::SetRangeFromFlatTextOffset() should set end of the range to after a line break when the range is end between a set of native line breakers r=smaug
Currently, ContentEventHandler::SetRangeFromFlatTextOffset() sets end point to before a line breaker when the end of queried range is between a set of native line breakers (i.e., "\r]\n" on Windows). This causes unexpected empty range (e.g., "[]\n") when it queries a text rect at [\r]\n.

Therefore, it should select an XP line breaker in such case (i.e., the range should be "[\n]" when it queries "[\r]\n" or "\r[\n]").

Note that we don't need to do anything at setting selection start because it's always aligned to before the line breaker.

MozReview-Commit-ID: 6ht8QNAhibY

--HG--
extra : rebase_source : b7933554c2a5bf51b8faabe3a96d006971510e0a
2016-07-28 17:23:47 +09:00
Masayuki Nakano
92692b4cb4 Bug 1286464 part.3 Make static methods, AdjustTextRectNode() and GetFirstFrameInRange(), members of ContentEventHandler r=smaug
This patch makes the static methods members of ContentEventHandler because ContentEventHandler::NodePosition is useful for them.

* nsINode* AdjustTextRectNode(nsINode*, int32_t&) -> NodePosition GetNodeHavingFlatText(nsINode* int32_t)
* nsIFrame* GetFirstFrameInRange(nsRange*, int32_t&) -> FrameAndNodeOffset GetFirstFrameHavingFlatTextInRange(nsRange*)

So, this patch avoids unclear in/out arguments of them.

MozReview-Commit-ID: 7yWeIkRdGj

--HG--
extra : rebase_source : 635cec95ee9f3d73f619186925464ae17010e929
2016-08-05 12:43:40 +09:00
Masayuki Nakano
24e9e4a700 Bug 1286464 part.2 GetFirstFrameInRange() should return node offset since it may return different node's frame r=m_kato
GetFirstFrameInRange() uses AdjustTextRectNode() which may return different node before retrieving the result frame. Therefore, the caller may need offset in the new node.

MozReview-Commit-ID: 2AQU5WfahT9

--HG--
extra : rebase_source : c753d34dc2691da2ec25c9f5a6fe17d67af24a70
2016-07-14 22:57:00 +09:00
Masayuki Nakano
bc5856516b Bug 1286464 part.1 Cleaning up ContentEventHandler::OnQueryTextRectArray() r=m_kato
MozReview-Commit-ID: BDLkQLrzoUI

--HG--
extra : rebase_source : c1b0074bde0580be466259f82d0756ff18e29f53
2016-07-14 22:46:37 +09:00
Masayuki Nakano
8a489e63dd Bug 1257446 part.2 ContentEventHandler::OnQueryTextRectArray() shouldn't set empty rect to the result r=m_kato
Returning empty rects for eQueryTextRectArray causes each dispatcher needing to check every rect. It doesn't make sense especially compared with eQueryTextRect.

So, it should ensure that empty rect won't be returned to dispatchers.

MozReview-Commit-ID: CpMqqihzSDf

--HG--
extra : rebase_source : 0343e2eecf5e25043d260157cf4d8b0874e0ceb6
2016-07-12 20:28:06 +09:00
Stone Shih
0936be8e70 Bug 1293175 - [Pointer Event] Add Element.hasPointerCapture API. r=smaug
--HG--
extra : rebase_source : 25dcafa70e5260259fd7703134b376c3351595c0
2016-08-10 15:31:43 +08:00
Wes Kocher
e386a2bc9e Backed out 2 changesets (bug 1264769) for invalid-src.html wpt failures a=backout
Backed out changeset 7b9d3d0c09f5 (bug 1264769)
Backed out changeset 780f7036c084 (bug 1264769)
2016-08-15 13:35:46 -07:00
Stone Shih
728f58c68b Bug 1258804 - Part 3: Update related test case for PE spec changes. r=smaug
--HG--
extra : rebase_source : 920401957f69e334323ef7ab4548b9f98437b59f
2016-08-01 15:41:42 +08:00
Ben Tian
5c79574178 Bug 1264769 - Part 1: Dispatch loadend event for image loading. r=hsivonen
--HG--
extra : rebase_source : efa121de9a8b3b8bcd9639b59780d7b2340bdfef
2016-07-20 11:01:46 +08:00
Michael Layzell
bf6425d33d Bug 1290688 - Part 3: Add the application/x-moz-file to the DataTransfer.types list even though the spec says not to for back-compat, r=baku
MozReview-Commit-ID: 1pUfBJyt22P
2016-08-15 13:16:15 -04:00
Michael Layzell
aa4b32c8ac Bug 1290688 - Part 2: Don't include the types of files in DataTransfer.types, as per the spec, r=baku 2016-08-15 13:16:13 -04:00
Michael Layzell
02881e51c3 Bug 1290688 - Part 1: Don't provide more than one type from the clipboard when pasting images, r=baku 2016-08-15 13:16:10 -04:00
Mantaroh Yoshinaga
ae2e808431 Bug 911987 part 4 - Add onwebkitanimation** and onwebkittransitionend event handlers. r=smaug
Add the onwebkit prefixed event handler attributes of CSS-Animation
and CSS-Transition.

We need to support both content attributes and IDL attributes like
onanimation** attributes.

We should support attribute of lower-case and mixed-case. But currently
Gecko defined as mixed-case only. [1][2]

[1] https://dxr.mozilla.org/mozilla-central/rev/6608e5864780589b25d5421c3d3673ab30c4c318/dom/base/nsContentUtils.cpp#747
[2] https://dxr.mozilla.org/mozilla-central/rev/6608e5864780589b25d5421c3d3673ab30c4c318/dom/events/EventNameList.h#977

So we can't find the related Atom when we set content attributes as lower-case. [3]

[3] https://dxr.mozilla.org/mozilla-central/rev/6608e5864780589b25d5421c3d3673ab30c4c318/dom/base/nsGlobalWindow.h#818

In this patch, I add two Atoms in order to support mixed and lower case.

MozReview-Commit-ID: 8nOfVGQ8h7R

--HG--
extra : rebase_source : fe954eb5c79d305660bdc3ef95b14e55cdb34534
2016-08-05 14:12:38 +09:00
Mantaroh Yoshinaga
bd81fb18be Bug 911987 part 1 - Add onanimation** and ontransitionend event handlers. r=masayuki,smaug
This event handler is defined CSS-Animation and CSS-Transition.
https://drafts.csswg.org/css-animations-1/#event-animationevent
https://github.com/w3c/csswg-drafts/pull/344

MozReview-Commit-ID: ARgsibd7wST

--HG--
extra : rebase_source : 7b4f366a8661508185d60ead9ce68fb234959577
2016-08-05 08:12:14 +09:00
Wes Kocher
b1e2d2ad52 Merge m-c to inbound, a=merge 2016-08-12 16:29:24 -07:00
kearwood
905f496ed5 Bug 1250244 - Part 8: Implement WebVR DOM Events,r=bz
MozReview-Commit-ID: 4Fk0WszVTBR
2016-07-04 15:46:49 -07:00
Carsten "Tomcat" Book
6b13b3cde6 Merge mozilla-central to autoland 2016-08-03 17:08:48 +02:00
Neil Deakin
2d46e97dbd Bug 1284914, add support in html for the ondragexit attribute, r=smaug 2016-08-03 07:45:46 -04:00
Masayuki Nakano
78b4a701e3 Bug 1259665 part.3 Rename WidgetPointerEvent::isPrimary to mIsPrimary r=smaug
MozReview-Commit-ID: LfKzpwCjMcz

--HG--
extra : rebase_source : d4fd41db8ff4dc39a7156f2f509aae89d1c126a1
2016-08-03 17:34:53 +09:00
Masayuki Nakano
b38025c056 Bug 1259665 part.2 Rename WidgetPointerEvent::height to mHeight r=smaug
MozReview-Commit-ID: Ji4X53dByiH

--HG--
extra : rebase_source : 0e79a45d34142453e79f2412eddb7abc132e11d7
2016-08-03 17:23:56 +09:00
Masayuki Nakano
924e7f39e5 Bug 1259665 part.1 Rename WidgetPointerEvent::width to mWidth r=smaug
MozReview-Commit-ID: 3V5gyOvPuQi

--HG--
extra : rebase_source : 6adf7908e8a84bc2cfb86d8f7823662f1b72170f
2016-08-03 17:18:04 +09:00
Stone Shih
f8f5ef1c1a Bug 1285128 - Should not generate pointer events for those synthesized events that are not dispatched to DOM. r=smaug 2016-07-07 15:28:11 +08:00
Kartikaya Gupta
b968f0d733 Bug 1288799 - Add a test_touch_action.html which runs all of the W3C touch-action tests as mochitests. rs=smaug
MozReview-Commit-ID: CA0XMnQepVD
2016-07-29 14:27:39 -04:00
Kartikaya Gupta
a74193fa22 Bug 1288799 - Delete the old mochitest wrappers for the touch-action mochitests, and copy over the unmodified W3C files. rs=smaug
MozReview-Commit-ID: 1Z2VYSqjPSL
2016-07-29 14:27:38 -04:00
Olli Pettay
7cbc9752a1 Bug 1288898 - Document::createEvent sometimes creates events with the initialized flag set, r=masayuki 2016-07-29 19:45:52 +03:00
Olli Pettay
47a98b8ad1 Bug 1289255 - Implement DataTransferItem.webkitGetAsEntry, r=baku
--HG--
extra : rebase_source : 10517eeb5b5a68204514527c8a904ab216df6534
2016-07-29 14:42:33 +03:00