Граф коммитов

7409 Коммитов

Автор SHA1 Сообщение Дата
Emilio Cobos Álvarez 9ed36d7ba6 Bug 1506547 - Align user-select behavior more with other UAs. r=mats
There's a few subtle behavior changes here, which I'll try to break down in the
commit message.

The biggest one is the EditableDescendantCount stuff going away. This
was added in bug 1181130, to prevent clicking on the non-editable div from
selecting the editable div inside. This is problematic for multiple reasons:

 * First, I don't think non-editable regions of an editable element should
   be user-select: all.

 * Second, it just doesn't work in Shadow DOM (the editable descendant count is
   not kept up-to-date when not in the uncomposed doc), so nested
   contenteditables behave differently inside vs. outside a Shadow Tree.

 * Third, I think it's user hostile to just entirely disable selection if you
   have a contenteditable descendant as a child of a user-select: all thing.

   WebKit behaves like this patch in the following test-case (though not Blink):

     https://crisal.io/tmp/user-select-all-contenteditable-descendant.html

   Edge doesn't seem to support user-select: all at all (no pun intended).

   But we don't allow to select anything at all which looks wrong.

 * Fourth, it's not tested at all (which explains how we broke it in Shadow DOM
   and not even notice...).

In any case I've verified that this doesn't regress the editor from that bug. If
this regresses anything we can fix it as outlined in the first bullet point
above, which should also make us more compatible with other UAs in that
test-case.

The other change is `all` not overriding everything else. So, something like:

  <div style="-webkit-user-select: all">All <div style="-webkit-user-select: none">None</div></div>

Totally ignores the -webkit-user-select: none declaration in Firefox before this
change. This doesn't match any other UA nor the spec, and this patch aligns us
with WebKit / Blink.

This in turn makes us not need -moz-text anymore, whose only purpose was to
avoid this.

This also fixes a variety of bugs uncovered by the previous changes, like the
SetIgnoreUserModify(false) call in editor being completely useless, since
presShell->SetCaretEnabled ended in nsCaret::SetVisible, which overrode it.

This in turn uncovered even more bugs, from bugs in the caret painting code,
like not checking -moz-user-modify on the right frame if you're the last frame
of a line, to even funnier bits where before this patch you show the caret but
can't write at all...

In any case, the new setup I came up with is that when you're editing (the
selection is focused on an editable node) moving the caret forces it to end up
in an editable node, thus jumping over non-editable ones.

This has the nice effect of not completely disabling selection of
-moz-user-select: all elements that have editable descendants (which was a very
ad-hoc hack for bug 1181130, and somewhat broken per the above), and also
not needing the -moz-user-select: all for non-editable bits in contenteditable.css
at all.

This also fixes issues with br-skipping like not being able to insert content in
the following test-case:

  <div contenteditable="true"><span contenteditable="false">xyz </span><br>editable</div>

If you start moving to the left from the second line, for example.

I think this yields way better behavior in all the relevant test-cases from bug
1181130 / bug 1109968 / bug 1132768, shouldn't cause any regression, and the
complexity is significantly reduced in some places.

There's still some other broken bits that this patch doesn't fix, but I'll file
follow-ups for those.

Differential Revision: https://phabricator.services.mozilla.com/D12687

--HG--
extra : moz-landing-system : lando
2018-11-26 09:21:37 +00:00
Marco Zehe 4ae01a5d49 Bug 1380451 - create HTML table caption accessible unconditionally, r=Jamie
Creates the HTML Caption accessible from the markup map, but only if it's the first caption. Other caption elements are ignored as before.

This also creates caption accessibles for those captions that have been collapsed to zero height and width via CSS.

Differential Revision: https://phabricator.services.mozilla.com/D12756

--HG--
extra : moz-landing-system : lando
2018-11-25 23:39:52 +00:00
Brindusan Cristian 31f0c21cca Backed out changeset 1575904619b5 (bug 1506547) for mochitest failures on test_reftests_with_caret.html. 2018-11-26 03:03:14 +02:00
Emilio Cobos Álvarez b74c31e4d9 Bug 1506547 - Align user-select behavior more with other UAs. r=mats
There's a few subtle behavior changes here, which I'll try to break down in the
commit message.

The biggest one is the EditableDescendantCount stuff going away. This
was added in bug 1181130, to prevent clicking on the non-editable div from
selecting the editable div inside. This is problematic for multiple reasons:

 * First, I don't think non-editable regions of an editable element should
   be user-select: all.

 * Second, it just doesn't work in Shadow DOM (the editable descendant count is
   not kept up-to-date when not in the uncomposed doc), so nested
   contenteditables behave differently inside vs. outside a Shadow Tree.

 * Third, I think it's user hostile to just entirely disable selection if you
   have a contenteditable descendant as a child of a user-select: all thing.

   WebKit behaves like this patch in the following test-case (though not Blink):

     https://crisal.io/tmp/user-select-all-contenteditable-descendant.html

   Edge doesn't seem to support user-select: all at all (no pun intended).

   But we don't allow to select anything at all which looks wrong.

 * Fourth, it's not tested at all (which explains how we broke it in Shadow DOM
   and not even notice...).

In any case I've verified that this doesn't regress the editor from that bug. If
this regresses anything we can fix it as outlined in the first bullet point
above, which should also make us more compatible with other UAs in that
test-case.

The other change is `all` not overriding everything else. So, something like:

  <div style="-webkit-user-select: all">All <div style="-webkit-user-select: none">None</div></div>

Totally ignores the -webkit-user-select: none declaration in Firefox before this
change. This doesn't match any other UA nor the spec, and this patch aligns us
with WebKit / Blink.

This in turn makes us not need -moz-text anymore, whose only purpose was to
avoid this.

This also fixes a variety of bugs uncovered by the previous changes, like the
SetIgnoreUserModify(false) call in editor being completely useless, since
presShell->SetCaretEnabled ended in nsCaret::SetVisible, which overrode it.

This in turn uncovered even more bugs, from bugs in the caret painting code,
like not checking -moz-user-modify on the right frame if you're the last frame
of a line, to even funnier bits where before this patch you show the caret but
can't write at all...

In any case, the new setup I came up with is that when you're editing (the
selection is focused on an editable node) moving the caret forces it to end up
in an editable node, thus jumping over non-editable ones.

This has the nice effect of not completely disabling selection of
-moz-user-select: all elements that have editable descendants (which was a very
ad-hoc hack for bug 1181130, and somewhat broken per the above), and also
not needing the -moz-user-select: all for non-editable bits in contenteditable.css
at all.

This also fixes issues with br-skipping like not being able to insert content in
the following test-case:

  <div contenteditable="true"><span contenteditable="false">xyz </span><br>editable</div>

If you start moving to the left from the second line, for example.

I think this yields way better behavior in all the relevant test-cases from bug
1181130 / bug 1109968 / bug 1132768, shouldn't cause any regression, and the
complexity is significantly reduced in some places.

There's still some other broken bits that this patch doesn't fix, but I'll file
follow-ups for those.

Differential Revision: https://phabricator.services.mozilla.com/D12687

--HG--
extra : moz-landing-system : lando
2018-11-25 20:01:07 +00:00
Marco Zehe 36b5ca6aa6 Bug 1509222 - XUL toolbarbutton with checked="true' but not type="checkbox" doesn't get the pressed state, r=Jamie
Simply decouple the check for the checked attribute from the one for the type attribute.

Differential Revision: https://phabricator.services.mozilla.com/D12632

--HG--
extra : moz-landing-system : lando
2018-11-22 22:39:51 +00:00
Marco Zehe f86d40d773 Bug 1508935 - Create more accessibles from the HTML markup map rather than layout frame types, r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D12639

--HG--
extra : moz-landing-system : lando
2018-11-23 06:49:00 +00:00
Tim Nguyen 044d8ca731 Bug 1508142 - Remove remains of tree cell-based selection code. r=bzbarsky,bgrins
Differential Revision: https://phabricator.services.mozilla.com/D12225

--HG--
extra : moz-landing-system : lando
2018-11-22 09:59:02 +00:00
Marco Zehe ccd63db4b3 Bug 1508870 - Make a distinction between an empty returned string versus a null pointer, r=Jamie
When determining if an author provided an empty alt attribute versus no alt attribute at all, our image accessible name is either an empty string or a null string. Screen readers can then choose to guess the name from the source if the author did not explicitly provide an empty alt text and thus marked the image as decorative.

The accessible handler for the Windows remote processes did not account for this distinction, always returning what appeared to be an empty string. This was found while determining why NVDA wasn't guessing the SRC from a non-labelled graphical link. NVDA checks to see if the name returned by the link accessible is null, and then decides to look for the graphical children if that is the case.

Differential Revision: https://phabricator.services.mozilla.com/D12532

--HG--
extra : moz-landing-system : lando
2018-11-22 06:09:31 +00:00
Marco Zehe 2d841c76b1 Bug 1507365 - Allow labels inside toolbarbuttons to participate in accessible name calculation, r=Jamie
Toolbar buttons in XUL can now have labels inside them to provide the actual caption for the button. Adjust the accessibility module to allow label elements as acceptable children for the toolbarbutton element so the algorithm can pick up their text for the button's name.

Differential Revision: https://phabricator.services.mozilla.com/D12527

--HG--
extra : moz-landing-system : lando
2018-11-22 05:57:48 +00:00
Eitan Isaacson 30fe7d0849 Bug 1509111 - Populate viewIdResourceName correctly. r=yzen
Differential Revision: https://phabricator.services.mozilla.com/D12583

--HG--
extra : moz-landing-system : lando
2018-11-21 21:07:20 +00:00
Paolo Amadini 37ad34fc88 Bug 1429940 - Null-check the GetContent call on the parent. r=Jamie
--HG--
extra : rebase_source : 1f2692152b608d9283990a6051091410ad0f6fea
2018-11-21 15:24:13 +00:00
Gerald Squelart 1bd6a1fd4e Bug 1435091 - p4. Use profiler_thread_is_being_profiled() instead of profiler_is_active() around profiler_add_marker()s - r=mstange
(Unless there were other profiler actions, as I'm not sure yet whether it would
be safe to skip them when the profiler is paused; another bug should
investigate that.)

Differential Revision: https://phabricator.services.mozilla.com/D11308

--HG--
extra : moz-landing-system : lando
2018-11-19 06:29:15 +00:00
shindli 95b9b72836 Merge mozilla-central to inbound. a=merge CLOSED TREE 2018-11-20 23:50:05 +02:00
Tom Schuster 5a9d2a428c Bug 1493292 - Remove aDataLen parameters from nsITransferable.getTransferData. r=smaug
Depends on D11200

Differential Revision: https://phabricator.services.mozilla.com/D11201

--HG--
extra : moz-landing-system : lando
2018-11-20 16:59:56 +00:00
Csoregi Natalia df7483024d Backed out 6 changesets (bug 1493292) for bustage on /nsTransferable.cpp. CLOSED TREE
Backed out changeset f198bf91320b (bug 1493292)
Backed out changeset 6487aa307123 (bug 1493292)
Backed out changeset f2cabd69c568 (bug 1493292)
Backed out changeset 71430fceb4a3 (bug 1493292)
Backed out changeset 3a9b6d65d8c7 (bug 1493292)
Backed out changeset 55769869037c (bug 1493292)
2018-11-20 17:13:18 +02:00
Tom Schuster b292ec7c2c Bug 1493292 - Remove aDataLen parameters from nsITransferable.getTransferData. r=smaug
Depends on D11200

Differential Revision: https://phabricator.services.mozilla.com/D11201

--HG--
extra : moz-landing-system : lando
2018-11-20 14:47:02 +00:00
Paolo Amadini 4d52da3cb2 Bug 1429940 - Part 1 - Use the first "label" element instead of the one inside "caption" to describe the "groupbox" element. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D11793

--HG--
extra : rebase_source : eec887ae45eb1a2b1356cef2f6cbbf24a5427f39
2018-11-15 12:05:09 +00:00
Paolo Amadini b2a83ffc85 Bug 1499947 - Part 1 - Remove XULProgressMeterAccessible and its base template class. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D12144

--HG--
extra : rebase_source : 81275b233770a7e9716a2b811a08060fc5006e1b
2018-11-20 14:10:38 +00:00
Boris Zbarsky 47f81c215b Bug 1507540 part 7. Use notxpcom more in dom/. r=mccr8 2018-11-19 20:20:17 -05:00
Lina Cambridge 994f3a458c Bug 1494713 - Add `nsWindow::From`. r=jchen
Differential Revision: https://phabricator.services.mozilla.com/D11289

--HG--
extra : moz-landing-system : lando
2018-11-16 17:31:58 +00:00
Timothy Guan-tin Chien 2b5881e46b Bug 1503019 - Part I, Remove dom.webcomponents.shadowdom.enabled r=smaug
This patch removes the dom.webcomponents.shadowdom.enabled pref and all its
references, including the following functions:

* nsContentUtils::IsShadowDOMEnabled()
* nsIDocument::IsShadowDOMEnabled()
* nsDocument::IsShadowDOMEnabled(JSContext* aCx, JSObject* aGlobal)
* nsDocument::IsShadowDOMEnabled(const nsINode* aNode)
* nsTextNode::IsShadowDOMEnabled(JSContext* aCx, JSObject* aObject)

This function is renamed and updated to nsDocument::IsCallerChromeOrAddon():

* nsDocument::IsShadowDOMEnabledAndCallerIsChromeOrAddon(JSContext* aCx, JSObject* aObject)

I didn't change the tests that load Shadow DOM tests in an iframe, in the interest of keeping hg annotation history.

Differential Revision: https://phabricator.services.mozilla.com/D11183

--HG--
extra : moz-landing-system : lando
2018-11-15 06:51:07 +00:00
Andreea Pavel d51566f085 Backed out 2 changesets (bug 1503019) for failing crashtests at dom/base/crashtests/1505811.html on a CLOSED TREE
Backed out changeset 06b12fd41ff1 (bug 1503019)
Backed out changeset 7b845eac9dd7 (bug 1503019)
2018-11-15 01:52:30 +02:00
Andreea Pavel 9cabbb0b47 Merge mozilla-central to autoland. a=merge on a CLOSED TREE 2018-11-15 00:35:07 +02:00
Cristina Coroiu 60654b0cda Bug 1503084 - disable browser_caching_name.js for frequent failures r=gbrown
--HG--
extra : histedit_source : 71daa8098bf1d42a05c479f9bb708925b1bbfced
2018-11-14 07:21:00 +02:00
Timothy Guan-tin Chien c0cc4f74e7 Bug 1503019 - Part I, Remove dom.webcomponents.shadowdom.enabled r=smaug
This patch removes the dom.webcomponents.shadowdom.enabled pref and all its
references, including the following functions:

* nsContentUtils::IsShadowDOMEnabled()
* nsIDocument::IsShadowDOMEnabled()
* nsDocument::IsShadowDOMEnabled(JSContext* aCx, JSObject* aGlobal)
* nsDocument::IsShadowDOMEnabled(const nsINode* aNode)
* nsTextNode::IsShadowDOMEnabled(JSContext* aCx, JSObject* aObject)

This function is renamed and updated to nsDocument::IsCallerChromeOrAddon():

* nsDocument::IsShadowDOMEnabledAndCallerIsChromeOrAddon(JSContext* aCx, JSObject* aObject)

I didn't change the tests that load Shadow DOM tests in an iframe, in the interest of keeping hg annotation history.

Differential Revision: https://phabricator.services.mozilla.com/D11183

--HG--
extra : moz-landing-system : lando
2018-11-14 19:34:52 +00:00
rosston 8f54bcb47f Bug 1501904 - Fire accessibility focus events when using readline nav in url bar r=dao,Jamie
Differential Revision: https://phabricator.services.mozilla.com/D10058

--HG--
extra : moz-landing-system : lando
2018-11-08 14:14:57 +00:00
Eitan Isaacson 413fe38c65 Bug 1479039 - Update SessionAccessibility cache and state from events. r=snorp,yzen
Differential Revision: https://phabricator.services.mozilla.com/D11217

--HG--
extra : moz-landing-system : lando
2018-11-12 16:42:37 +00:00
Eitan Isaacson f312bc912b Bug 1479039 - Update cached focus path bounds on scroll. r=snorp,yzen
Differential Revision: https://phabricator.services.mozilla.com/D11216

--HG--
extra : moz-landing-system : lando
2018-11-12 16:42:03 +00:00
Eitan Isaacson 956b93179f Bug 1479039 - Implement java portion of focus path cache. r=snorp,yzen
Differential Revision: https://phabricator.services.mozilla.com/D11215

--HG--
extra : moz-landing-system : lando
2018-11-12 16:41:40 +00:00
Eitan Isaacson 970933ad81 Bug 1479039 - Extend BatchData struct and added focus path cache. r=yzen
Differential Revision: https://phabricator.services.mozilla.com/D11214

--HG--
extra : moz-landing-system : lando
2018-11-12 16:41:38 +00:00
Eitan Isaacson 5b5349d41f Bug 1479039 - Refactor ToBundle to have a multiple argument version. r=Jamie
Differential Revision: https://phabricator.services.mozilla.com/D11213

--HG--
extra : moz-landing-system : lando
2018-11-12 16:41:33 +00:00
Eitan Isaacson 3e98aa79f5 Bug 1479039 - Move PersistentPropertiesToArray to nsAccUtils. r=Jamie
In order to send send attributes in BatchData we will need to convert
them to an array. Here we factor out the private function that does that
and put it in nsAccUtils.

Differential Revision: https://phabricator.services.mozilla.com/D11211

--HG--
extra : moz-landing-system : lando
2018-11-12 16:41:31 +00:00
Marco Zehe ab92f98230 Bug 1506041 - Code cleanup: Convert more static functions to lambdas in the markup map, r=Jamie
All static functions from nsAccessibilityService that were either only called once from the markup map, or are simple one-liners that were only called up to three times, were converted to lambdas in the markup map.

the static function that creates HyperTextAccessibleWrap has remained untouched because it is called a lot from the markup map, even though its implementation is actually just a one-liner.

The other untouched static function is the templated one for html:dt or html:dd.

Differential Revision: https://phabricator.services.mozilla.com/D11458

--HG--
extra : moz-landing-system : lando
2018-11-11 23:13:35 +00:00
Emilio Cobos Álvarez ea43a5393a Bug 1196668 - Make images without alt generate a replaced box regardless of src. r=bz
Behavior-wise this only removes the HasAttr(src) check, and adds the IsEmpty()
check to the alt attribute value, since this function is only called for <img>
and <input>.

But it also cleans up a bit.

Differential Revision: https://phabricator.services.mozilla.com/D11194
2018-11-09 18:10:14 +01:00
Gurzau Raul 139c9b897f Backed out 2 changesets (bug 1196668) for assertion count failures at child-constraints/available-size-for-percentages-vrl-htb.https.html
Backed out changeset ff03b0b8ed81 (bug 1196668)
Backed out changeset 8e423aa1c94e (bug 1196668)
2018-11-09 06:33:16 +02:00
Emilio Cobos Álvarez 54599e6187 Bug 1196668 - Make images without alt generate a replaced box regardless of src. r=bz
Behavior-wise this only removes the HasAttr(src) check, and adds the IsEmpty()
check to the alt attribute value, since this function is only called for <img>
and <input>.

But it also cleans up a bit.

Differential Revision: https://phabricator.services.mozilla.com/D11194

--HG--
extra : source : 803b224d52a0940b4fb4b3b9cffc6a1fa6e5d4ee
2018-11-07 18:26:17 +01:00
Gurzau Raul ecadb55316 Backed out changeset 803b224d52a0 (bug 1196668) for failures at dom/html/reftests/468263-2.html on a CLOSED TREE 2018-11-09 05:00:56 +02:00
Emilio Cobos Álvarez b0577a5771 Bug 1196668 - Make images without alt generate a replaced box regardless of src. r=bz
Behavior-wise this only removes the HasAttr(src) check, and adds the IsEmpty()
check to the alt attribute value, since this function is only called for <img>
and <input>.

But it also cleans up a bit.

Differential Revision: https://phabricator.services.mozilla.com/D11194
2018-11-09 02:56:56 +01:00
Bogdan Tara 388d7c8b5a Merge inbound to mozilla-central. a=merge 2018-11-08 20:48:31 +02:00
Marco Zehe b96e455eb6 Bug 1503964 - Prevent crashes when dealing with crazy table row and column role constructs, r=Jamie
Made IsTableCell() only check the generic type, not the ARIA map entry that gets checked in HasGenericType. This prevents the crash and also fixes IsTableCell() and AsTableCell() not being in sync.

Differential Revision: https://phabricator.services.mozilla.com/D10713

--HG--
extra : moz-landing-system : lando
2018-11-08 10:54:09 +00:00
Mike Hommey 229e466656 Bug 1504906 - Add another -Werror exception for G_DEFINE_TYPE_EXTENDED. r=gps
Versions of glib newer than the one we currently use adds a function we
don't use.

Differential Revision: https://phabricator.services.mozilla.com/D11136
2018-11-08 19:49:38 +09:00
Mike Hommey ad2fed0601 Backed out 6 changesets (bug 1504906 and bug 1505652) to give time to toolchains and docker images to build without blocking other landings.
Backed out changeset 2fe1e2b7d9c6 (bug 1504906)
Backed out changeset 27b4002951a4 (bug 1504906)
Backed out changeset f7a685b16579 (bug 1504906)
Backed out changeset f8064dbb8009 (bug 1504906)
Backed out changeset f899fbb4a5d7 (bug 1504906)
Backed out changeset 3f71db4aef73 (bug 1505652)
2018-11-08 17:18:05 +09:00
Mike Hommey 53f7817573 Bug 1504906 - Add another -Werror exception for G_DEFINE_TYPE_EXTENDED. r=gps
Versions of glib newer than the one we currently use adds a function we
don't use.

Differential Revision: https://phabricator.services.mozilla.com/D11136
2018-11-08 17:13:20 +09:00
Eitan Isaacson 7befdbc6f7 Bug 1502187 - Implement native part of viewport caching. r=Jamie
Depends on D9865

Differential Revision: https://phabricator.services.mozilla.com/D9866

--HG--
extra : moz-landing-system : lando
2018-11-06 04:35:51 +00:00
Eitan Isaacson 82efc98977 Bug 1502187 - Add Batch protocol to PDocAccessible. r=Jamie
This protocol is meant to be used by platform wrappers to push bulk data
to the chrome process.

Depends on D9689

Differential Revision: https://phabricator.services.mozilla.com/D9864

--HG--
extra : moz-landing-system : lando
2018-11-06 04:22:08 +00:00
Narcis Beleuzu 9b3f73e696 Merge mozilla-central to inbound. CLOSED TREE 2018-11-05 23:54:03 +02:00
Jonathan Kingston 4248b4c554 Bug 1490257 - Pass triggeringPrincipal to test code. r=ckerschb
Differential Revision: https://phabricator.services.mozilla.com/D10882

--HG--
extra : moz-landing-system : lando
2018-11-05 14:05:47 +00:00
Eitan Isaacson 485bf4e802 Bug 1503728 - Get proxy's SessionAccessible from its chrome doc. r=Jamie 2018-11-02 13:12:00 -04:00
Marco Zehe a7b776042d Bug 1501273 - Expose an html:form element as a landmark role if it has an accessible name, r=Jamie
If html:form has a name given via ARIA, expose it as a landmark to platform APIS that require it. At the time of this submission, this is the case for ATK.

Differential Revision: https://phabricator.services.mozilla.com/D9552

--HG--
extra : moz-landing-system : lando
2018-11-02 01:06:56 +00:00
Marco Zehe 50ba1dd30c Bug 1104947 - Complete the accessibility mapping for aria-current, r=Jamie
We already mapped aria-current to the correct attribute, but we did so unconditionally unless the value was false or undefined. However, if the value was an invalid token, it would not be mapped to "true" as per spec. Now, any bogus value for aria-current will be mapped as if the author had specified "true".

In addition, this patch adds aria-current to the known set of attributes with rules, which causes NSAccessibilityService::MustBeAccessible to make sure an accessible gets created if aria-current is set, even if that accessible is a html:span element. This fixes bug 1365904.

Differential Revision: https://phabricator.services.mozilla.com/D10331

--HG--
extra : moz-landing-system : lando
2018-11-02 06:40:47 +00:00