Commit Graph

210 Commits

Author SHA1 Message Date
Emilio Cobos Álvarez
4eb7125f65 Bug 1404897: Allow storing Servo selector lists in the document's selector cache. r=heycam
MozReview-Commit-ID: GtIWGN2zEGT
2017-10-02 15:32:07 +02:00
Sebastian Hengst
beaa0bcc04 Backed out changeset 9a8f77f3dfe7 (bug 1404897) 2017-10-04 12:55:16 +02:00
Sebastian Hengst
1ce9242750 Backed out changeset cfc393773f0d (bug 1404897) 2017-10-04 12:55:11 +02:00
Emilio Cobos Álvarez
ff70a3900c Bug 1404897: Implement Element.matches using stylo. r=heycam
MozReview-Commit-ID: 7nxYVcweu0W
2017-10-02 18:14:15 +02:00
Emilio Cobos Álvarez
d20cef0457 Bug 1404897: Allow storing Servo selector lists in the document's selector cache. r=heycam
MozReview-Commit-ID: GtIWGN2zEGT
2017-10-02 15:32:07 +02:00
Sebastian Hengst
9666d869f0 Backed out changeset 2a7dd15c8206 (bug 1404897) 2017-10-04 11:24:31 +02:00
Sebastian Hengst
b1b71f0687 Backed out changeset 3833f3700021 (bug 1404897) 2017-10-04 11:24:26 +02:00
Emilio Cobos Álvarez
7233693b2d Bug 1404897: Implement Element.matches using stylo. r=heycam
MozReview-Commit-ID: 7nxYVcweu0W
2017-10-04 11:01:42 +02:00
Emilio Cobos Álvarez
76cb832917 Bug 1404897: Allow storing Servo selector lists in the document's selector cache. r=heycam
MozReview-Commit-ID: GtIWGN2zEGT
2017-10-04 11:01:37 +02:00
Catalin Badea
fc6ab5f0ea Bug 651120 - Remove index argument from content removed/appended/inserted notifications. r=peterv 2017-10-03 11:09:08 +01:00
Nicholas Nethercote
9fda5528d2 Bug 1400459 (part 2) - Devirtualize nsIAtom. r=heycam.
This patch merges nsAtom into nsIAtom. For the moment, both names can be used
interchangeably due to a typedef. The patch also devirtualizes nsIAtom, by
making it not inherit from nsISupports, removing NS_DECL_NSIATOM, and dropping
the use of NS_IMETHOD_. It also removes nsIAtom's IIDs.

These changes trigger knock-on changes throughout the codebase, changing the
types of lots of things as follows.

- nsCOMPtr<nsIAtom> --> RefPtr<nsIAtom>

- nsCOMArray<nsIAtom> --> nsTArray<RefPtr<nsIAtom>>
  - Count() --> Length()
  - ObjectAt() --> ElementAt()
  - AppendObject() --> AppendElement()
  - RemoveObjectAt() --> RemoveElementAt()

- ns*Hashtable<nsISupportsHashKey, ...> -->
  ns*Hashtable<nsRefPtrHashKey<nsIAtom>, ...>

- nsInterfaceHashtable<T, nsIAtom> --> nsRefPtrHashtable<T, nsIAtom>
  - This requires adding a Get() method to nsRefPtrHashtable that it lacks but
    nsInterfaceHashtable has.

- nsCOMPtr<nsIMutableArray> --> nsTArray<RefPtr<nsIAtom>>
  - nsArrayBase::Create() --> nsTArray()
  - GetLength() --> Length()
  - do_QueryElementAt() --> operator[]

The patch also has some changes to Rust code that manipulates nsIAtom.

MozReview-Commit-ID: DykOl8aEnUJ
2017-09-26 08:33:21 +10:00
Jason Orendorff
6e13ccbfc0 Bug 1363200 - JSAPI for realms: Change a few XPConnect methods to take Realm arguments instead of JSCompartments. r=mrbkap
This also introduces JS::GetObjectRealmOrNull, which returns an object's realm,
or null if the object is a cross-compartment wrapper. In the new order,
wrappers can't have realms, since they must be shared across all realms in a
compartment. We're introducing this new function early (even though it's
*currently* possible to assign a realm to wrappers) in order to see in
advance if the possibility of returning null will cause problems.
(It looks like it won't.)
2017-06-28 12:31:53 -07:00
Boris Zbarsky
2fcd5047d7 Bug 1393806 part 3. Change dom::ReparentWrapper to take an ErrorResult. r=peterv
This makes it easier for its consumers to avoid leaving a dangling exception on
the JSContext.

MozReview-Commit-ID: Xep7IkYxSx
2017-09-13 13:34:55 -04:00
Boris Zbarsky
96a4710bc1 Bug 1393806 part 2. Remove the XPCOM version of Document.adoptNode/importNode. r=peterv
These don't play nice with ErrorResult error propagation, and don't really have a reason to exist anyway.

MozReview-Commit-ID: DlEs19LA4dT
2017-09-13 13:34:55 -04:00
Boris Zbarsky
945af2d388 Bug 1393806 part 1. Change nsNodeUtils cloning/adopting stuff to use an ErrorResult for errors. r=peterv
This will allow us to propagate out more informative errors in some cases.

MozReview-Commit-ID: 9FbzV5VRMqN
2017-09-13 13:34:55 -04:00
Nicholas Nethercote
39c39dd5f2 Bug 1393636 (part 3) - Pass nsWindowSizes to more AddSizeOf*() functions. r=heycam.
This is a purely non-functional plumbing change. Instead of passing a
SizeOfState and an nsStyleSizes a bunch of places, we pass an nsWindowSizes,
which contains both of them.

This is a necessary precursor for the next patch.

MozReview-Commit-ID: Ek03wDM50rB
2017-08-25 14:47:54 +10:00
btian
9a8866990b Bug 1384661 - Part 3: Invalidate cached child array when list of children changes. r=smaug 2017-08-18 11:56:38 +08:00
btian
9cc0f0a6a5 Bug 1384661 - Part 1: Rename class nsChildContentList to nsAttrChildContentList. r=smaug 2017-08-11 10:12:17 +08:00
Masayuki Nakano
2ae4c56b7f Bug 1388004 - part3: nsINode::GetSelectionRootContent() should use HTMLEditor r=smaug
nsINode::GetSelectionRootContent() uses nsIEditor since nsContentUtils::GetHTMLEditor() returned nsIEditor.  Therefore, it needed to use GetEditorRootContent() to retrieve the editor root element as nsIContent*.

Now, it can use HTMLEditor and HTMLEditor::GetRoot() returns the editor root element as nsIContent* directly.  So, it should use HTMLEditor instead.

MozReview-Commit-ID: I937a5TuxVD
2017-08-07 17:00:44 +09:00
Nicholas Nethercote
b0330270c1 Bug 1387956 - Overhaul ComputedValues measurement, and add style structs measurement. r=bholley.
This patch moves measurement of ComputedValues objects from Rust to C++.
Measurement now happens (a) via DOM elements and (b) remaining elements via
the frame tree. Likewise for the style structs hanging off ComputedValues
objects.

Here is an example of the output.

> ├──27,600,448 B (26.49%) -- active/window(https://en.wikipedia.org/wiki/Barack_Obama)
> │  ├──12,772,544 B (12.26%) -- layout
> │  │  ├───4,483,744 B (04.30%) -- frames
> │  │  │   ├──1,653,552 B (01.59%) ── nsInlineFrame
> │  │  │   ├──1,415,760 B (01.36%) ── nsTextFrame
> │  │  │   ├────431,376 B (00.41%) ── nsBlockFrame
> │  │  │   ├────340,560 B (00.33%) ── nsHTMLScrollFrame
> │  │  │   ├────302,544 B (00.29%) ── nsContinuingTextFrame
> │  │  │   ├────156,408 B (00.15%) ── nsBulletFrame
> │  │  │   ├─────73,024 B (00.07%) ── nsPlaceholderFrame
> │  │  │   ├─────27,656 B (00.03%) ── sundries
> │  │  │   ├─────23,520 B (00.02%) ── nsTableCellFrame
> │  │  │   ├─────16,704 B (00.02%) ── nsImageFrame
> │  │  │   ├─────15,488 B (00.01%) ── nsTableRowFrame
> │  │  │   ├─────13,776 B (00.01%) ── nsTableColFrame
> │  │  │   └─────13,376 B (00.01%) ── nsTableFrame
> │  │  ├───3,412,192 B (03.28%) -- servo-style-structs
> │  │  │   ├──1,288,224 B (01.24%) ── Display
> │  │  │   ├────742,400 B (00.71%) ── Position
> │  │  │   ├────308,736 B (00.30%) ── Font
> │  │  │   ├────226,512 B (00.22%) ── Background
> │  │  │   ├────218,304 B (00.21%) ── TextReset
> │  │  │   ├────214,896 B (00.21%) ── Text
> │  │  │   ├────130,560 B (00.13%) ── Border
> │  │  │   ├─────81,408 B (00.08%) ── UIReset
> │  │  │   ├─────61,440 B (00.06%) ── Padding
> │  │  │   ├─────38,176 B (00.04%) ── UserInterface
> │  │  │   ├─────29,232 B (00.03%) ── Margin
> │  │  │   ├─────21,824 B (00.02%) ── sundries
> │  │  │   ├─────20,080 B (00.02%) ── Color
> │  │  │   ├─────20,080 B (00.02%) ── Column
> │  │  │   └─────10,320 B (00.01%) ── Effects
> │  │  ├───2,227,680 B (02.14%) -- computed-values
> │  │  │   ├──1,182,928 B (01.14%) ── non-dom
> │  │  │   └──1,044,752 B (01.00%) ── dom
> │  │  ├───1,500,016 B (01.44%) ── text-runs
> │  │  ├─────492,640 B (00.47%) ── line-boxes
> │  │  ├─────326,688 B (00.31%) ── frame-properties
> │  │  ├─────301,760 B (00.29%) ── pres-shell
> │  │  ├──────27,648 B (00.03%) ── pres-contexts
> │  │  └─────────176 B (00.00%) ── style-sets

The 'servo-style-structs' and 'computed-values' sub-trees are new. (Prior to
this patch, ComputedValues under DOM elements were tallied under the the
'dom/element-nodes' sub-tree, and ComputedValues not under DOM element were
ignored.) 'servo-style-structs/sundries' aggregates all the style structs that
are smaller than 8 KiB.

Other notable things done by the patch are as follows.

- It significantly changes the signatures of the methods measuring nsINode and
  its subclasses, in order to handle the tallying of style structs separately
  from element-nodes. Likewise for nsIFrame.

- It renames the 'layout/style-structs' sub-tree as
  'layout/gecko-style-structs', to clearly distinguish it from the new
  'layout/servo-style-structs' sub-tree.

- It adds some FFI functions to access various Rust-side data structures from
  C++ code.

- There is a nasty hack used twice to measure Arcs, by stepping backwards from
  an interior pointer to a base pointer. It works, but I want to replace it
  with something better eventually. The "XXX WARNING" comments have details.

- It makes DMD print a line to the console if it sees a pointer it doesn't
  recognise. This is useful for detecting when we are measuring an interior
  pointer instead of a base pointer, which is bad but easy to do when Arcs are
  involved.

- It removes the Rust code for measuring CVs, because it's now all done on the
  C++ side.

MozReview-Commit-ID: BKebACLKtCi
2017-08-11 16:37:33 +10:00
Masatoshi Kimura
26299618f5 Bug 1389460 - Remove @deprecated nsIDOMEventTarget.DispatchDOMEvent. r=smaug
MozReview-Commit-ID: E88DZK5sfwx
2017-08-07 02:28:52 +09:00
Sebastian Hengst
80162c79f9 Backed out changeset 685802013f43 (bug 1389460) for OS X bustage at widget/cocoa/nsMenuX.mm:364: no member named 'DispatchDOMEvent' in 'nsIContent'. r=backout 2017-08-11 17:46:42 +02:00
Masatoshi Kimura
a0bcec8f88 Bug 1389460 - Remove @deprecated nsIDOMEventTarget.DispatchDOMEvent. r=smaug
MozReview-Commit-ID: E88DZK5sfwx
2017-08-07 02:28:52 +09:00
Ehsan Akhgari
14e077e650 Bug 1386485 - Part 3: Devirtualize EditorBase::AsTextEditor()/AsHTMLEditor(); r=masayuki 2017-08-04 03:47:14 -04:00
Nicholas Nethercote
59cb8e2717 Bug 1383982 (attempt 2) - Introduce a general mechanism for measuring memory usage of graph-like structures. r=erahm. 2017-07-28 20:10:04 +10:00
Sebastian Hengst
e2be9a629c Backed out changeset a57d8f30d1bf (bug 1383982) for build bustage at nsGlobalWindow.cpp:13826: 'class nsWindowSizes' has no member named 'mMallocSizeOf'. r=backout 2017-07-28 09:50:48 +02:00
Nicholas Nethercote
d50718f5d2 Bug 1383982 - Introduce a general mechanism for measuring memory usage of graph-like structures. r=erahm.
All the SizeOf{In,Ex}cludingThis() functions take a MallocSizeOf function
which measures memory blocks. This patch introduces a new type, SizeOfState,
which includes a MallocSizeOf function *and* a table of already-measured
pointers, called SeenPtrs. This gives us a general mechanism to measure
graph-like data structures, by recording which nodes have already been
measured. (This approach is used in a number of existing reporters, but not in
a uniform fashion.)

The patch also converts the window memory reporting to use SizeOfState in a lot
of places, all the way through to the measurement of Elements. This is a
precursor for bug 1383977 which will measure Stylo elements, which involve
Arcs.

The patch also converts the existing mAlreadyMeasuredOrphanTrees table in the
OrphanReporter to use the new mechanism.
2017-07-28 15:03:44 +10:00
Beekill95
13c6c16fca Bug 1362330 - Part 1: Move XPath generation to Node's interface and move all remaining XPathGenerator.jsm functions to FormData. r=mikedeboer, r=smaug
MozReview-Commit-ID: Ej45wPeddtQ
2017-06-15 08:49:17 +07:00
Carsten "Tomcat" Book
5459c60a72 Backed out changeset 9342f0d949f1 (bug 1362330) for failures like nsFocusManager.cpp:1166:31: error: member access into incomplete type 'mozilla::dom::nsIContentParent' 2017-07-04 09:53:36 +02:00
Beekill95
1e816124ce Bug 1362330 - Part 1: Move XPath generation to Node's interface and move all remaining XPathGenerator.jsm functions to FormData. r=mikedeboer, r=smaug
MozReview-Commit-ID: Ej45wPeddtQ
2017-06-15 08:49:17 +07:00
Masayuki Nakano
53a0be1b54 Bug 1374207 - part4: Element classes should use TextEditor class instead of nIEditor r=smaug
Unfortunately, nsGenericHTMLElement::GetAssociatedEditor() cannot use concrete classes because it may return nsIEditor which is set via nsIDocShell.editor.  The editor set to nsIDocShell may be implemented by JS since nsIEditor isn't marked as builtinclass.

MozReview-Commit-ID: 6GY9LOYp4hM
2017-06-22 15:21:31 +09:00
Boris Zbarsky
50c4dcff23 Bug 1361274. There's no need to update link :visited state when doing querySelectorAll, since querySelectorAll ignores that state anyway. r=smaug
In our current setup, in which links with an href attribute always match either
:link or :visited, no matter whether that attribute's value is a valid URI,
changes to the attribute always put the element into either the "match nothing"
state or the "match :link" state, via calls to Link::ResetLinkState.

The only thing FlushPendingLinkUpdates is needed for is (lazily, in case it
turns out to not be needed because the element got removed from the DOM anyway)
registering a history observer to switch the link state to :visited as needed.

This means that selector matching consumers that would never expose :visited
state to start with don't need to worry about calling FlushPendingLinkUpdates.
2017-05-03 16:54:25 -04:00
Daniel Holbert
90b2977b5a Bug 1361268: Clear nsIDocument::mCachedRootElement *before* removing from doc's child list, rather than *after* removing. r=bz
Internally, doRemoveChildAt does quite a bit of cleanup, and that includes some
calls to nsIDocument::GetRootElement().  Before this patch, those calls will
misleadingly return the still-present mCachedRootElement member-var.  We'd
really like those invocations to find an empty cached variable, and fall back
to checking the actual updated child list.

MozReview-Commit-ID: 8hhKcWyUVYQ
2017-05-02 16:08:02 -07:00
L. David Baron
cbc684a377 Bug 1355353 - Give nsINode::GetProperty a fast path for nodes that do not have properties. r=peterv
I wasn't able to measure any performance improvement on talos.  I
haven't tried to measure anything more specific.

However, it seems like avoiding a hashtable lookup should be worthwhile.

(At one point I thought I saw nsINode::GetProperty show up as
significant in a profile, but then I concluded I was mislead, I think
because I had focused on a very small slice of the profile and the
numbers weren't significant.  I don't entirely remember since this was a
while ago.)

MozReview-Commit-ID: A9OoL9qV02D
2017-04-25 16:15:37 +08:00
Ehsan Akhgari
ce96faee8c Bug 1354643 - Part 3: Stop calling Preferences::GetBool() from nsINode::HasBoxQuadsSupport(); r=mystor 2017-04-08 18:40:31 -04:00
Olli Pettay
e8edfcfb2b Bug 1345301 - elt.firstChild.remove() doesn't trigger a DOMSubtreeModified event, r=ms2ger 2017-03-08 20:05:34 +02:00
Xidorn Quan
c1cd490029 Bug 1340061 part 2 - Remove explicit base URI facility. r=bz
MozReview-Commit-ID: JaUzecbdT2F
2017-02-16 18:35:52 +11:00
Tom Tromey
48da5b7de4 Bug 1060419 - remove unneeded includes of prprf.h, r=froydnj
MozReview-Commit-ID: JifhpA3oOeH
2016-12-09 10:00:01 -10:00
Bobby Holley
a3a4332575 Bug 1331322 - Stop using a node bit for HasExplicitBaseURI. r=bholley
This is only called during URI resolution, and the proptable bit should make
this relatively fast.
2017-01-20 18:17:13 -08:00
Phil Ringnalda
a6b8226a11 Backed out 4 changesets (bug 1331322) for Android reftest failures in 1169331-1.html and forced-bg-color-outside-visible-region.html
Backed out changeset 96c6b5a11284 (bug 1331322)
Backed out changeset 15877d32de7d (bug 1331322)
Backed out changeset 841d608704d7 (bug 1331322)
Backed out changeset 02096c5eb029 (bug 1331322)
2017-02-15 21:24:00 -08:00
Bobby Holley
82d82ab9fb Bug 1331322 - Stop using a node bit for HasExplicitBaseURI. r=bholley
This is only called during URI resolution, and the proptable bit should make
this relatively fast.
2017-01-20 18:17:13 -08:00
Boris Zbarsky
ddd36677e5 Bug 1335368 part 22. Get rid of IsCallerChrome in geometry utils. r=dholbert 2017-02-01 15:43:59 -05:00
Boris Zbarsky
d066dd2644 Bug 1335368 part 5. Stop using IsCallerChrome in nsINode. r=bholley 2017-02-01 15:43:36 -05:00
Boris Zbarsky
33b60b6ff4 Bug 1332322 part 2. Rename nsWrapperCache::IsBlack to nsWrapperCache::HasKnownLiveWrapper. r=mccr8 2017-01-24 20:38:58 -05:00
Boris Zbarsky
24f13892a5 Bug 1330536 part 7. Change nsINode::GetTextContent to take an OOMReporter, not an ErrorResult. r=smaug 2017-01-17 23:52:29 -05:00
John Dai
fd22813d0d Bug 1269155 - Revise Node.rootNode to Node.getRootNode. r=smaug 2017-01-16 01:46:00 +08:00
Masayuki Nakano
e8e68353a3 Bug 564411 Move all methods/attributes of nsIEditorIMESupport to nsIEditor r=smaug
Doing QI from nsIEditor to nsIEditorIMESupport doesn't make sense because editor should always support all methods and attributes of nsIEditorIMESupport (it does NOT mean that all nsIEditor implementation need to support IME).

This patch moves all of them to nsIEditor for avoiding redundant QIs.

MozReview-Commit-ID: DzIKuGHG4iy
2016-12-20 21:47:31 +09:00
Bobby Holley
3775205e64 Bug 1317016 - Basic infrastructure for RestyleHint-driven traversal. r=emilio
MozReview-Commit-ID: 7wH5XcILVmX
2016-11-25 10:06:39 -08:00
Boris Zbarsky
3ffbb28d02 Bug 1318476. Remove various unused nsIDOMNode stuff. r=froydnj 2016-11-18 16:38:29 -05:00
Cameron McCormack
15e6c53c13 Bug 1318238 - Clear all ServoNodeData during style set shutdown. r=bholley
MozReview-Commit-ID: 9MvBTAWeawC
2016-11-18 16:54:10 +08:00