Commit Graph

772 Commits

Author SHA1 Message Date
pbz
9ca53ea171 Bug 1432856 - Extended focus methods in Window.webidl, Client.webidl and Element.webidl to pass CallerType. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D55811
2020-01-16 14:38:40 +00:00
Boris Zbarsky
b07e17a5ff Bug 1607918. Fix case handling for webkit-prefixed transition/animation event handlers. r=smaug.
The WPTs were cherrypicked from e05bdb8e0d

The issue in dom/events/test/test_bug1332699.html was discussed in
https://bugzilla.mozilla.org/show_bug.cgi?id=1332699#c8 and
https://bugzilla.mozilla.org/show_bug.cgi?id=1332699#c10 but Xidorn never quite
made it clear enough what the issue was, so it ended up making it into the tree.

Differential Revision: https://phabricator.services.mozilla.com/D59592
2020-01-13 20:04:59 +00:00
Mirko Brodesser
863fa8ca6e Bug 1608071: part 3) Rename nsSlots::mCommonAncestorRanges to nsSlots::mClosestCommonInclusiveAncestorRanges. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D59329
2020-01-13 10:29:56 +00:00
Mirko Brodesser
ae70537c80 Bug 1608071: part 1) Rename common ancestor to closest common inclusive ancestor around nsRange. r=smaug
It's more precise and enables one to reason more clearly about related
code.

Differential Revision: https://phabricator.services.mozilla.com/D59318
2020-01-13 10:29:31 +00:00
Chris Peterson
0a9155f83b Bug 1570499 - Part 1: Replace MOZ_FALLTHROUGH macro with C++17's [[fallthrough]] attribute. r=froydnj
This changeset is a simple find and replace of `MOZ_FALLTHROUGH` and `[[fallthrough]]`.

Unfortunately, the MOZ_FALLTHROUGH_ASSERT macro (to assert on case fallthrough in debug builds) is still necessary after switching from [[clang::fallthrough]] to [[fallthrough]] because:

* MOZ_ASSERT(false) followed by [[fallthrough]] triggers a -Wunreachable-code warning in DEBUG builds
* but MOZ_ASSERT(false) without [[fallthrough]] triggers a -Wimplicit-fallthrough warning in NDEBUG builds.

Differential Revision: https://phabricator.services.mozilla.com/D56440
2019-12-20 07:16:43 +00:00
Oana Pop Rus
2fa2ebf69d Backed out 7 changesets (bug 1432856) for build bustages failures in nsWindow.h on a CLOSED TREE
Backed out changeset 3d08c3cce533 (bug 1432856)
Backed out changeset 49d03dd89b17 (bug 1432856)
Backed out changeset 62fc84c8ce99 (bug 1432856)
Backed out changeset a8a4fa63f5b2 (bug 1432856)
Backed out changeset c81f3d5b9bf3 (bug 1432856)
Backed out changeset 8351a8b1d96a (bug 1432856)
Backed out changeset a303b775a51b (bug 1432856)
2019-12-16 23:53:35 +02:00
pbz
29a2e0c4e4 Bug 1432856 - Extended focus methods in Window.webidl, Client.webidl and Element.webidl to pass CallerType. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D55811
2019-12-16 21:06:11 +00:00
Emilio Cobos Álvarez
1fccbabe09 Bug 1602317 - Switch style system to associated constants-in-body. r=heycam
This is closer to the equivalent Rust code.

Differential Revision: https://phabricator.services.mozilla.com/D56306
2019-12-09 03:32:28 +00:00
Gabriele Svelto
eb403b8785 Bug 1600545 - Remove useless inclusions of header files generated from IDL files in dom/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55442
2019-12-06 09:24:56 +00:00
Dorel Luca
67889e1013 Backed out changeset f6e53d1c6518 (bug 1600545) for Android build bustage. CLOSED TREE 2019-12-04 17:32:27 +02:00
Gabriele Svelto
dc6fa2e86c Bug 1600545 - Remove useless inclusions of header files generated from IDL files in dom/ r=Ehsan
The inclusions were removed with the following very crude script and the
resulting breakage was fixed up by hand. The manual fixups did either
revert the changes done by the script, replace a generic header with a more
specific one or replace a header with a forward declaration.

find . -name "*.idl" | grep -v web-platform | grep -v third_party | while read path; do
    interfaces=$(grep "^\(class\|interface\).*:.*" "$path" | cut -d' ' -f2)
    if [ -n "$interfaces" ]; then
        if [[ "$interfaces" == *$'\n'* ]]; then
          regexp="\("
          for i in $interfaces; do regexp="$regexp$i\|"; done
          regexp="${regexp%%\\\|}\)"
        else
          regexp="$interfaces"
        fi
        interface=$(basename "$path")
        rg -l "#include.*${interface%%.idl}.h" . | while read path2; do
            hits=$(grep -v "#include.*${interface%%.idl}.h" "$path2" | grep -c "$regexp" )
            if [ $hits -eq 0 ]; then
                echo "Removing ${interface} from ${path2}"
                grep -v "#include.*${interface%%.idl}.h" "$path2" > "$path2".tmp
                mv -f "$path2".tmp "$path2"
            fi
        done
    fi
done

Differential Revision: https://phabricator.services.mozilla.com/D55442
2019-12-04 15:01:19 +00:00
Emilio Cobos Álvarez
a69bfe9982 Bug 1599843 - Element::SetEventHandler is infallible. r=bzbarsky
Depends on D54996

Differential Revision: https://phabricator.services.mozilla.com/D54997
2019-11-27 20:01:38 +00:00
Emilio Cobos Álvarez
67646b3f82 Bug 1599843 - Element::SetSMILOverrideStyleDeclaration is infallible. r=boris
Differential Revision: https://phabricator.services.mozilla.com/D54996
2019-11-27 20:12:43 +00:00
Masayuki Nakano
16fa2f8998 Bug 1597679 - part 2: Make nsITextControlElement inherit nsGenericHTMLFormElementWithState r=smaug
Sub classes of `nsITextControlElement` are only `HTMLInputElement` and
`HTMLTextAreaElement`. And both base class is
`nsGenericHTMLFormElementWithState`.  Therefore, we can make
`nsITextControlElement` inherit `nsGenericHTMLFormElementWithState` and
make `HTMLInputElement` and `HTMLTextAreaElement` inherit
`nsITextControlElement`.  Then, we can get rid of a lot of QI between
`nsINode`/`nsIContent`/`Element` and `nsITextControlElement` (and note that
some of them in a hot path).

Additionally, this patch renames `nsITextControlElement` to
`mozilla::TextControlElement`.

Differential Revision: https://phabricator.services.mozilla.com/D54330
2019-11-25 06:35:15 +00:00
Coroiu Cristina
46945eade0 Backed out 3 changesets (bug 1597679) for Android debug build bustage at build/src/dom/base/nsContentAreaDragDrop.cpp
Backed out changeset 6a73b58e0db4 (bug 1597679)
Backed out changeset 90a172eff2de (bug 1597679)
Backed out changeset d4a156cf28ff (bug 1597679)
2019-11-24 09:02:53 +02:00
Masayuki Nakano
018bf53100 Bug 1597679 - part 2: Make nsITextControlElement inherit nsGenericHTMLFormElementWithState r=smaug
Sub classes of `nsITextControlElement` are only `HTMLInputElement` and
`HTMLTextAreaElement`. And both base class is
`nsGenericHTMLFormElementWithState`.  Therefore, we can make
`nsITextControlElement` inherit `nsGenericHTMLFormElementWithState` and
make `HTMLInputElement` and `HTMLTextAreaElement` inherit
`nsITextControlElement`.  Then, we can get rid of a lot of QI between
`nsINode`/`nsIContent`/`Element` and `nsITextControlElement` (and note that
some of them in a hot path).

Additionally, this patch renames `nsITextControlElement` to
`mozilla::TextControlElement`.

Differential Revision: https://phabricator.services.mozilla.com/D54330
2019-11-24 05:38:02 +00:00
Emilio Cobos Álvarez
daa2657756 Bug 1551716 - Factor out some intersection observer code, and add spec quotes. r=mstange
This would've made my life a lot easier. There's a couple things that don't
match the spec that I've left as comments.

Differential Revision: https://phabricator.services.mozilla.com/D31151
2019-11-22 22:36:27 +00:00
Brad Werth
7be774fad6 Bug 1391994 Part 1: Add new methods to Element to set attributes via devtools. r=bzbarsky
This expands Element with chrome-only setAttribute methods that give devtools
callers an ExtendedPrincipal with a CSP with a flag set to allow changes to
inline styles. This gives devtools the ability to modify documents with a
Content-Security-Policy.

Differential Revision: https://phabricator.services.mozilla.com/D41313
2019-11-21 01:45:51 +00:00
Emilio Cobos Álvarez
7816f654e9 Bug 1597123 - Remove NODE_IS_ANONYMOUS_ROOT. r=smaug
We no longer have multiple kinds of anonymous subtrees, so we can get back one
node bit.

Differential Revision: https://phabricator.services.mozilla.com/D53344
2019-11-18 08:49:27 +00:00
Emilio Cobos Álvarez
87b1e5bf4d Bug 1596209 - Remove nsIContent::GetBindingParent. r=smaug
It's unused after all the previous patches.

Differential Revision: https://phabricator.services.mozilla.com/D53217
2019-11-15 18:19:37 +00:00
Sebastian Hengst
3f8b7d41c8 Backed out changeset 0478d1bf6e32 (bug 1596209) on request from emilio. CLOSED TREE 2019-11-15 19:11:06 +01:00
Emilio Cobos Álvarez
a97037f571 Bug 1596209 - Remove nsIContent::GetBindingParent. r=smaug
It's unused after all the previous patches.

Differential Revision: https://phabricator.services.mozilla.com/D53217
2019-11-15 16:46:29 +00:00
Sean Feng
f929567a39 Bug 1589742 - Collect telemetry on the types of user clicks r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D51508
2019-11-13 18:12:02 +00:00
Emilio Cobos Álvarez
b72cf7baf8 Bug 1596199 - Devirtualize GetBindingParent. r=bzbarsky
The amount of XUL elements with non-null binding-parent pointer should be
equivalent to HTML now that XBL is gone.

Shadow DOM already has the extended slots for both the binding parent and
containing shadow root.

Differential Revision: https://phabricator.services.mozilla.com/D52901
2019-11-13 20:35:15 +00:00
John Dai
43393674ad Bug 1552313 - Implement disableShadow; r=smaug,edgar
Differential Revision: https://phabricator.services.mozilla.com/D52157
2019-11-12 11:27:52 +00:00
Dorel Luca
d437fccc6c Backed out 3 changesets (bug 1552313) for WPT failures in custom-elements/CustomElementRegistry.html. CLOSED TREE
Backed out changeset 27a01989152a (bug 1552313)
Backed out changeset 5f8c6c9f2d36 (bug 1552313)
Backed out changeset f26d61e06a9d (bug 1552313)
2019-11-11 20:55:58 +02:00
John Dai
c503c5951d Bug 1552313 - Implement disableShadow; r=smaug,edgar
Differential Revision: https://phabricator.services.mozilla.com/D52157
2019-11-11 15:42:58 +00:00
Brian Grinstead
134cdfd948 Bug 1593119 - clang-format the files affected by the MOZ_XBL unifdef r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D52057
2019-11-07 00:35:25 +00:00
Brian Grinstead
5c162e767e Bug 1593119 - unifdef MOZ_XBL r=bzbarsky
This was generated with:

```
rg -l -g '*.{cpp,h}' MOZ_XBL . | while read FILE ; do
   echo $FILE
   unifdef -m -UMOZ_XBL $FILE
done
```

After this, I manually removed the directive in nsContentUtils.cpp due to:

  unifdef: ./dom/base/nsContentUtils.cpp: 4630: Unterminated string literal
  unifdef: Output may be truncated

Differential Revision: https://phabricator.services.mozilla.com/D51337
2019-11-07 00:35:13 +00:00
Emilio Cobos Álvarez
c1c8fdcb10 Bug 1594275 - Parse the exportparts attribute. r=bzbarsky
But don't hook it into style yet, that'll be a follow-up patch.

I had this patch in my local queue for a bit and there was no point in not
landing it I guess.

The value of this attribute could be stored only in the shadow root (as this
only applies to shadow hosts), but that would make invalidation harder, I think,
so do the obvious thing for now.

Differential Revision: https://phabricator.services.mozilla.com/D51963
2019-11-06 18:03:51 +00:00
Mirko Brodesser
8462bc2a30 Bug 1593222: part 12) Rename "nsNodeUtils.*" to "MutationObservers.*". r=smaug
Depends on D51827

Differential Revision: https://phabricator.services.mozilla.com/D51828
2019-11-06 09:08:06 +00:00
Mirko Brodesser
0ce85ec381 Bug 1593222: part 9) Move non-animation notification methods from nsNodeUtils to MutationObservers. r=smaug
The remaining notification methods are moved in a separate commit. The
files are renamed to `MutationObservers.*` in a follow-up commit.

Depends on D51824

Differential Revision: https://phabricator.services.mozilla.com/D51825
2019-11-05 21:32:53 +00:00
Brian Birtles
744d4fe0cf Bug 1590971 - Move getAnimations from Document to DocumentOrShadowRoot; r=emilio,baku
This updates the Gecko implementation to match the following change to
the Web Animations spec:

  792453b952 (diff-4c9f5c055fb219a7fcad23a9a7a80b64)

Differential Revision: https://phabricator.services.mozilla.com/D50768
2019-10-29 07:13:22 +00:00
Olli Pettay
5cfa5849de Bug 1591087 - Add some more HTML*Element sizeof assertions, r=Ehsan
Differential Revision: https://phabricator.services.mozilla.com/D50475
2019-10-24 23:41:49 +00:00
Emilio Cobos Álvarez
8497cbfc10 Bug 1588743 - Remove old scroll-snap implementation, and scroll snapping prefs. r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D49267
2019-10-15 12:40:14 +00:00
Coroiu Cristina
184ecf8f59 Backed out changeset 1a951477dca5 (bug 1588743) for xpcshell failures at devtools/shared/tests/unit/test_css-properties-db.js on a CLOSED TREE 2019-10-15 15:35:50 +03:00
Emilio Cobos Álvarez
66cf00147c Bug 1588743 - Remove old scroll-snap implementation, and scroll snapping prefs. r=hiro
Differential Revision: https://phabricator.services.mozilla.com/D49267
2019-10-15 11:39:30 +00:00
Emilio Cobos Álvarez
6794a0ca7e Bug 1559077 - Implement Element.part. r=bzbarsky
Differential Revision: https://phabricator.services.mozilla.com/D48707
2019-10-13 09:40:08 +00:00
Emilio Cobos Álvarez
b560263d99 Bug 1581467 - Fix checks for display: inline{,-block} which don't account for inline list items. r=mats
Differential Revision: https://phabricator.services.mozilla.com/D48346
2019-10-12 21:05:16 +00:00
Emilio Cobos Álvarez
014488dcf8 Bug 1587457 - Remove Element::GetTokenList. r=bzbarsky
Looks like this used to be more generic, looking at:

https://hg.mozilla.org/mozilla-central/rev/263812990c503f6e238b33b2fd3314284ac1be3e

But now only specific element subclasses use it, and the token lists can just be
members in the relevant subclasses.

Differential Revision: https://phabricator.services.mozilla.com/D48710
2019-10-11 04:09:40 +00:00
Emilio Cobos Álvarez
7aaa2ea4c1 Bug 1587767 - Assert that link flag handling is correct, and that NodeInfoChanged is only called on disconnected nodes. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D48830
2019-10-10 15:39:20 +00:00
Emilio Cobos Álvarez
83e8f78690 Bug 1585823 - Remove MayNeedToLoadXBLBinding and related code. r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D48538
2019-10-09 11:53:20 +00:00
Tim Nguyen
da27ed5d34 Bug 1513325 - Remove textbox binding. r=emilio,dao
Differential Revision: https://phabricator.services.mozilla.com/D38955
2019-10-09 09:27:28 +00:00
Brendan Dahl
bf272a3bca Bug 1510785 - Only build XBL related code when MOZ_XBL is defined. r=bzbarsky
When XBL is disabled, no code in dom/xbl will be built. Also, adds ifdefs
to remove any of the XBL related code elsewhere. There's definitely more
that can be done here, but I think it's better to wait to do the rest of
the cleanup when we actually remove the code.

Depends on D45612

Differential Revision: https://phabricator.services.mozilla.com/D45613
2019-10-08 23:52:14 +00:00
Emilio Cobos Álvarez
a596b8db59 Bug 1397876 - Don't invalidate style / layout of the host if it has no children. r=smaug
In that case, the flat tree cannot possibly be changing, so we don't really need
to invalidate anything.  This, in theory, is just a really minor optimization.

In practice however, the browser chrome needs it, at least for now, because XUL
elements get frames really early (because we don't have lazy frame construction
for XUL, bug 1584935), and because destroying some kinds of frames (like panels)
does have side effects (they're popups), even though ideally they shouldn't.

Differential Revision: https://phabricator.services.mozilla.com/D48428
2019-10-08 13:13:35 +00:00
Alexander Surkov
19eabb6750 Bug 1397876 - Replace panel and arrowpanel bindings with a custom element r=bgrins
Differential Revision: https://phabricator.services.mozilla.com/D35040
2019-10-07 21:57:04 +00:00
Edgar Chen
dceb498e05 Bug 1129227 - Part 2: Switch Fullscreen to use transient-user-activation API; r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D47151
2019-09-30 13:42:40 +00:00
Edgar Chen
1f18faff86 Bug 1129227 - Part 1: Merge nsContentUtils::CheckRequestFullscreenAllowed into GetFullscreenError; r=smaug
Differential Revision: https://phabricator.services.mozilla.com/D47018
2019-09-27 20:07:37 +00:00
Tim Nguyen
342d60821a Bug 1514926 - Followup: remove now unused arrowscrollbox check from MayNeedToLoadXBLBinding. r=emilio
Differential Revision: https://phabricator.services.mozilla.com/D48023
2019-10-03 04:49:15 +00:00
Emilio Cobos Álvarez
d6fa5ebd6b Bug 1585819 - Somewhat dubiously appease the hazard analysis. r=bustage
It was complaining about

  "unrooted '<returnvalue>' of type 'JSObject*' live across GC call at dom/base/Element.cpp:588"

Where the GC call is:

Function '_ZN7mozilla3dom7Element10WrapObjectEP9JSContextN2JS6HandleIP8JSObjectEE$JSObject* mozilla::dom::Element::WrapObject(JSContext*, JS::Handle<JSObject*>)' has unrooted '<returnvalue>' of type 'JSObject*' live across GC call '_ZN6RefPtrI12nsXBLBindingED1Ev$RefPtr<T>::~RefPtr() [with T = nsXBLBinding]' at dom/base/Element.cpp:588
    Element.cpp:588: Assign(64,65, return := __temp_29**)
    Element.cpp:588: Call(65,66, binding.~__dt_comp ()) [[GC call]]
    Element.cpp:588: Call(66,67, principal.~__dt_comp ())
    Element.cpp:588: Call(67,68, uri.~__dt_comp ())
    Element.cpp:588: Call(68,69, style.~__dt_comp ())
    Element.cpp:588: Call(69,70, obj.~__dt_comp ())
    Element.cpp:589:  [[end of function]]
GC Function: _ZN6RefPtrI12nsXBLBindingED1Ev$RefPtr<T>::~RefPtr() [with T = nsXBLBinding]
    RefPtr<T>::~RefPtr() [with T = nsXBLBinding] [[base_dtor]]
    static void RefPtr<T>::ConstRemovingRefPtrTraits<U>::Release(U*) [with U = nsXBLBinding; T = nsXBLBinding]
    static void mozilla::RefPtrTraits<U>::Release(U*) [with U = nsXBLBinding]
    uint32 nsXBLBinding::Release()
    uint64 nsCycleCollectingAutoRefCnt::decr(void*, nsCycleCollectionParticipant*, uint8*) [with void (* suspect)(void*, nsCycleCollectionParticipant*, nsCycleCollectingAutoRefCnt*, bool*) = NS_CycleCollectorSuspect3; uintptr_t = long unsigned int]
    NS_CycleCollectorSuspect3
    nsCycleCollector.cpp:void SuspectAfterShutdown(void*, nsCycleCollectionParticipant*, nsCycleCollectingAutoRefCnt*, uint8*)
    nsCycleCollectionParticipant.DeleteCycleCollectable
    void nsIContent::cycleCollection::DeleteCycleCollectable(void*)
    nsIContent.DeleteCycleCollectable
    unresolved nsIContent.DeleteCycleCollectable

I don't think the analysis is right since the Rooted<> thing will go out of the
scope after the RefPtr.

MANUAL PUSH: Bustage fix for broken (I think) analysis
2019-10-03 06:38:22 +02:00