Commit Graph

163 Commits

Author SHA1 Message Date
Masayuki Nakano
f6ea24bc29 Bug 1377989 - part3: Rename nsRange::GetParentAndOffsetAfter() to nsRange::GetContainerAndOffsetAfter() r=smaug
MozReview-Commit-ID: LsRjvVmfJmC
2017-07-11 21:17:52 +09:00
Masayuki Nakano
f4a5a8a21e Bug 1377989 - part2: Rename nsRange::GetEndParent() to nsRange::GetEndContainer() r=smaug
MozReview-Commit-ID: K4qPjtZ62yO
2017-07-11 21:11:37 +09:00
Masayuki Nakano
7015ac1e62 Bug 1377989 - part1: Rename nsRange::GetStartParent() to nsRange::GetStartContainer() r=smaug
Web standards use "Container" instead of "Parent".  So, nsRange shouldn't use "Parent" for its members and methods.

MozReview-Commit-ID: Ho6N0diuWtE
2017-07-11 20:53:04 +09:00
Sylvestre Ledru
9d4a84d778 Bug 1378712 - Remove all trailing whitespaces r=Ehsan
MozReview-Commit-ID: Kdz2xtTF9EG
2017-07-06 14:00:35 +02:00
Mats Palmgren
5d000291aa Bug 1375097 - Remove nsRange::SetEnableGravitationOnElementRemoval() since it's now dead code. r=smaug
MozReview-Commit-ID: Er67fFQP5lF
2017-06-23 02:03:09 +02:00
Masayuki Nakano
61876e44c2 Bug 1367683 Optimize initializing nsRange r=smaug
nsRange::DoSetRange() adds/remove its root to/from mutation observer, initializes common ancestor, registers itself to the common ancestor, unregisters itself from old common ancestor, and notifies selection listeners of selection change.

However, those runtime cost is expensive but on the other hand, a lot of callers set both start and end of the range and that causes calling DoSetRange() twice.

This patch renames Set() to SetStartAndEnd() for easier to understand the meaning and make it call DoSetRange() only once.

MozReview-Commit-ID: FRV55tuBAgg
2017-05-30 13:18:25 +09:00
Emilio Cobos Álvarez
643f3f8618 Bug 1361051: rename mozilla::FrameType to mozilla::LayoutFrameType. r=xidorn
This avoids conflicts with mozilla::dom::FrameType.

MozReview-Commit-ID: 7aEMbHRaTFk
2017-05-01 19:32:52 +02:00
Emilio Cobos Álvarez
3731858edf Bug 1360241: Devirtualize nsIFrame::GetType. r=heycam
MozReview-Commit-ID: 5Nzhyta5Hle
2017-04-30 17:30:08 +02:00
John Dai
da403d8c5b Bug 1350972 - Avoid crash when AutoInvalidateSelection dtor doesn't have commonAncestor. r=smaug 2017-04-10 23:52:00 -04:00
Brian Birtles
4de61d72aa Bug 1315874 - Drop 'ForElement' from GetStyleContextForElementXXX methods; r=heycam
In the next patch we want to add a method called
GetUnanimatedStyleContextForElementNoFlush but that's much too long. Instead it
seems better to just drop 'ForElement' from all these methods since it should be
fairly obvious we are getting the style context for an element given that the
first argument is an element.

MozReview-Commit-ID: JQKaEuCKV2F
2017-04-05 14:39:23 +09:00
Mats Palmgren
1a55022c96 Bug 1347979 - Don't call methods that may flush in nsRange::GetInnerTextNoFlush. r=smaug
MozReview-Commit-ID: AsnRqTH4FkM
2017-03-18 18:44:27 +01:00
Masayuki Nakano
1f0790f228 Bug 1348195 nsRange should set mCalledByJS to false before calling Selection::NotifySelectionListners() because non-*JS() methods may be called during a call of it r=smaug
When nsRange::*JS() is called, mCalledByJS is set to true.  In such case, Selection::NotifySelectionListeners() may move focus or anyway, it calls selection listeners.  Then, they may cause calling non-*JS() methods of the nsRange instance. In this case, nsRange treats the call as called by JS since mCalledByJS is still true.

For preventing this issue, before calling Selection::NotifySelectionListeners(), nsRange should set mCalledByJS to false.

This patch renames AutoCalledByJSSetter to AutoCalledByJSRestore and make it stop setting mCalledByJS automatically.  So, AutoCalledByJSRestore works same as AutoRestore now.

MozReview-Commit-ID: IYsbQTGp3VA
2017-03-17 13:32:51 +09:00
Brad Werth
ba8f60f055 Bug 1343695 Part 1: Retrieve text content with GetRenderedText. r=mats
MozReview-Commit-ID: 4VLoaTlDELG
2017-03-01 16:15:22 -08:00
Masayuki Nakano
5265265979 Bug 1318312 part.3 Selection should move focus at every selection change when it's called by JS r=smaug
Selection may be changed by methods of Selection or methods of Range retrieved by Selection.getRangeAt().  Selection::NotifySelectionListeners() is called after every selection change of each of them, so, this method must be a good point to move focus.

If new common ancestor of all ranges is editable and in an editing host, we should move focus to it.  Otherwise, if an editing host has focus but new common ancestor is not editable, we should move focus from the editing host.

For consistency with the other browsers, this patch doesn't move focus to other focusable element.

MozReview-Commit-ID: 6sNsuzwqECX
2017-03-14 10:36:21 +09:00
Masayuki Nakano
7852899ec4 Bug 1318312 part.2 Mark Selection as "called by JS" when every Selection API which may cause changing selection is called by JS r=smaug
Selection needs to be able to distinguish if every selection change is caused by JS (i.e., via Selection API) or the others.

This patch maps some methods of Range and Selection to *JS().  Each of them marks its instance as "used by JS" and calls corresponding method.

With this change, Selection::NotifySelectionListeners() can move focus only when it's caused by Selection API.

MozReview-Commit-ID: 1GoLHiIJ10Y
2017-03-10 16:55:12 +09:00
Wes Kocher
29fc2f8612 Backed out 2 changesets (bug 1343695) for osx chrome mochitest assertions a=backout
Backed out changeset e5db40a036fe (bug 1343695)
Backed out changeset 687ffd715113 (bug 1343695)

MozReview-Commit-ID: 2CN1gipg3ia
2017-03-13 16:44:23 -07:00
Brad Werth
bef2cfe9ba Bug 1343695 Part 1: Retrieve text content with GetRenderedText. r=mats
MozReview-Commit-ID: 4VLoaTlDELG
2017-03-01 16:15:22 -08:00
Brad Werth
3c26028870 Bug 1343978 Part 1: Change ClientRectsAndTexts usage of DOMStringList to Sequence<DOMString>. r=smaug
MozReview-Commit-ID: 8mKxdPTq4Ej
2017-03-02 13:13:12 -08:00
Mats Palmgren
d0a36e94ea Bug 1327902 - Set the range boundary point outside (before) the node if it HasIndependentSelection(). r=smaug 2017-01-08 21:27:00 +01:00
Cameron McCormack
5f9911da79 Bug 1328832 - Part 2: Rename mozFlushType to mozilla::FlushType and make it an enum class. r=bzbarsky
MozReview-Commit-ID: D3fIngSHSsl
2017-01-05 15:31:56 +08:00
Olli Pettay
3898f7d882 Bug 1326507, remove NS_IMPL_CYCLE_COLLECTION_TRAVERSE_SCRIPT_OBJECTS, r=mccr8 2017-01-03 21:47:55 +02:00
Mats Palmgren
22cc1252db Bug 1321623 - Implement DOM Selection.setBaseAndExtent(). r=smaug 2016-12-19 16:48:37 +01:00
L. David Baron
6eb5c8ff40 Bug 1320815 - DeCOMtaminate nsIFrame::IsSelectable by returning boolean instead of nsresult. r=xidorn
MozReview-Commit-ID: EBxBcEgIvp7
2016-11-28 15:31:29 -08:00
Brad Werth
6da307ad58 Bug 1314080 Part 4: Implement the new text retrieval behavior. r=smaug
MozReview-Commit-ID: 7j5BjruBNb9
2016-11-02 16:39:43 -07:00
Brad Werth
f80cc1e610 Bug 1314080 Part 3: Add a new ChromeOnly DOM method and wire it to CollectClientRectsAndText. r=smaug
MozReview-Commit-ID: GRM87Pi3g4G
2016-11-02 13:31:06 -07:00
Brad Werth
f7f748ff78 Bug 1314080 Part 2: Expand GetPartialTextRect with a new text collecting parameter. r=smaug
MozReview-Commit-ID: 6eEDFFwKh0c
2016-11-02 12:07:49 -07:00
Brad Werth
6c6d0f3e72 Bug 1314080 Part 1: Rename CollectClientRects method and add a new parameter for collecting text. r=smaug
MozReview-Commit-ID: KQPky6Fh8sG
2016-11-02 13:49:43 -07:00
Emilio Cobos Álvarez
2efcfaad38 Bug 1299066: Make NS_STYLE_DISPLAY_* an enum class. Prefer indexing instead of linear search in the frame constructor r=heycam,bz
The main renaming was generated with the following python script:

```

import sys
import re

CAMEL_CASE_REGEX = re.compile(r"(^|_|-)([A-Z])([A-Z]+)")
DISPLAY_REGEX = re.compile(r"\bNS_STYLE_DISPLAY_([^M][A-Z_]+)\b")

def to_camel_case(ident):
  return re.sub(CAMEL_CASE_REGEX,
                lambda m: m.group(2) + m.group(3).lower(), ident)

def constant_to_enum(constant):
  return "StyleDisplay::" + to_camel_case(constant) + ("_" if constant == "NONE" else "")

def process_line(line):
  return re.sub(DISPLAY_REGEX,
                lambda m: constant_to_enum(m.group(1)), line)

lines = []
with open(sys.argv[1], "r") as f:
  for line in f:
    lines.append(process_line(line))

with open(sys.argv[1], "w") as f:
  for line in lines:
    f.write(line)
```

And the following shell commands:

```
find . -name '*.cpp' -exec python display.py {} \;
find . -name '*.h' -exec python display.py {} \;
```

MozReview-Commit-ID: 91xYCbLC2Vf
2016-09-01 20:41:17 -07:00
Aryeh Gregor
68e395dc9d Bug 1211894 - Throw on range.insertNode(range.startContainer); r=smaug 2016-08-16 15:52:06 +03:00
Jonathan Kew
97dfc68553 Bug 1290937 - Make innerText return text from <option> elements within a <select>, rather than ignoring them. r=smaug 2016-08-11 12:18:02 +01:00
Andrea Marchesini
4c5812291e Bug 1281793 - Remove some non-used telemetry IDs - part 4 - random things (2), r=chutten 2016-06-28 19:30:37 +02:00
Carsten "Tomcat" Book
e1f7bf8f9a Backed out changeset 27b1dd843116 (bug 1281793) 2016-06-28 17:04:49 +02:00
Andrea Marchesini
1be63233cb Bug 1281793 - Remove some non-used telemetry IDs - part 4 - random things (2), r=chutten 2016-06-28 16:44:42 +02:00
Olli Pettay
c839eaae68 Bug 1274806, got NS_ERROR_UNEXPECTED error when I call range.extractContents() for DOM element with iframe , r=mats 2016-06-27 01:16:27 +03:00
Jonathan Watt
d714197cfc Bug 1263782 - Kill off the deprecated nsINode::IsInDoc(). r=baku 2016-03-31 11:58:25 +01:00
Andrew McCreight
8a89aeb600 Bug 1249685 - Use more nsCOMPtrs for stack variables in DOM code. r=smaug 2016-02-23 16:23:43 -08:00
Mats Palmgren
8de18f626c Bug 1216001 part 2 - Optimize nsRange::ExcludeNonSelectableNodes by counting ignorable whitespace text nodes next to an unselectable node as unselectable too. r=bz 2016-02-13 18:40:23 +01:00
Mats Palmgren
c3b5a8b6a8 Bug 1216001 part 1 - Optimize nsRange::IsNodeSelected. r=bz 2016-02-13 18:40:23 +01:00
Phil Ringnalda
6cdb00759a Back out 3 changesets (bug 1216001) for Win8 reftest failures in 1193519-sideways-lr-3.html and 1193519-sideways-lr-4.html and intermittent OS X failures in font-display-2.html
CLOSED TREE

Backed out changeset dbadb8fe5803 (bug 1216001)
Backed out changeset a30593ebd58e (bug 1216001)
Backed out changeset c1646ffa71b4 (bug 1216001)
2016-02-11 20:43:41 -08:00
Mats Palmgren
3c0b201355 Bug 1216001 part 2 - Optimize nsRange::ExcludeNonSelectableNodes by counting ignorable whitespace text nodes next to an unselectable node as unselectable too. r=bz 2016-02-12 02:13:57 +01:00
Mats Palmgren
7bf04a9a8c Bug 1216001 part 1 - Optimize nsRange::IsNodeSelected. r=bz 2016-02-12 02:13:57 +01:00
Kyle Huey
e95edb30a9 Bug 1241764: Replace nsPIDOMWindow with nsPIDOMWindowInner/Outer. r=mrbkap,smaug 2016-01-30 09:05:36 -08:00
Ting-Yu Lin
122e5b9aeb Bug 1227927 Part 2 - Remove nsIFrame::GetFirstPrincipalChild(). r=mats 2016-01-29 22:42:14 +08:00
Robert O'Callahan
499603986f Bug 264412. Optimize GetRenderedText. r=mats
With these changes we're slightly faster than Chrome on the non-reflowing part of
Olli's testcase.
2015-10-30 19:22:33 +13:00
Robert O'Callahan
f3ad5341a8 Bug 264412. Implement HTMLElement.innerText. r=smaug,mats 2015-10-30 18:37:03 +13:00
Robert O'Callahan
0b818e072e Revert incorrectly committed changes ab657569f554 and a396f4262479 2015-10-24 22:38:22 +13:00
Robert O'Callahan
edcde63a3a Bug 264412. Implement HTMLElement.innerText. r=smaug,mats 2015-10-21 10:23:17 +13:00
Nathan Froyd
4e6d8f6705 Bug 1207245 - part 6 - rename nsRefPtr<T> to RefPtr<T>; r=ehsan; a=Tomcat
The bulk of this commit was generated with a script, executed at the top
level of a typical source code checkout.  The only non-machine-generated
part was modifying MFBT's moz.build to reflect the new naming.

CLOSED TREE makes big refactorings like this a piece of cake.

 # The main substitution.
find . -name '*.cpp' -o -name '*.cc' -o -name '*.h' -o -name '*.mm' -o -name '*.idl'| \
    xargs perl -p -i -e '
 s/nsRefPtr\.h/RefPtr\.h/g; # handle includes
 s/nsRefPtr ?</RefPtr</g;   # handle declarations and variables
'

 # Handle a special friend declaration in gfx/layers/AtomicRefCountedWithFinalize.h.
perl -p -i -e 's/::nsRefPtr;/::RefPtr;/' gfx/layers/AtomicRefCountedWithFinalize.h

 # Handle nsRefPtr.h itself, a couple places that define constructors
 # from nsRefPtr, and code generators specially.  We do this here, rather
 # than indiscriminantly s/nsRefPtr/RefPtr/, because that would rename
 # things like nsRefPtrHashtable.
perl -p -i -e 's/nsRefPtr/RefPtr/g' \
     mfbt/nsRefPtr.h \
     xpcom/glue/nsCOMPtr.h \
     xpcom/base/OwningNonNull.h \
     ipc/ipdl/ipdl/lower.py \
     ipc/ipdl/ipdl/builtin.py \
     dom/bindings/Codegen.py \
     python/lldbutils/lldbutils/utils.py

 # In our indiscriminate substitution above, we renamed
 # nsRefPtrGetterAddRefs, the class behind getter_AddRefs.  Fix that up.
find . -name '*.cpp' -o -name '*.h' -o -name '*.idl' | \
    xargs perl -p -i -e 's/nsRefPtrGetterAddRefs/RefPtrGetterAddRefs/g'

if [ -d .git ]; then
    git mv mfbt/nsRefPtr.h mfbt/RefPtr.h
else
    hg mv mfbt/nsRefPtr.h mfbt/RefPtr.h
fi
2015-10-18 01:24:48 -04:00
Aryeh Gregor
a7d58f5a71 Bug 1192855 - Check validity in advance for nsRange::InsertNode; r=hsivonen 2015-10-07 16:07:39 +03:00
Bobby Holley
53f8074964 Bug 1072150 - Use the opt-out for various sloppy consumers. r=bz 2015-09-24 14:02:41 -07:00