Commit graph

1418 commits

Author SHA1 Message Date
Jon Leighton
02883a6f54 Fix selection{Start,End} when selectionDirection is "backward"
Per the spec, selectionStart and selectionEnd should return the same
values regardless of the selectionDirection. (That is, selectionStart is
always less than or equal to selectionEnd; the direction then implies
which of selectionStart or selectionEnd is the cursor position.)

There was no explicit WPT test for this, so I added one.

This bug was initially quite hard to wrap my head around, and I think
part of the problem is the code in TextInput. Therefore, in the process
of fixing it I have refactored the implementation of TextInput:

* Rename selection_begin to selection_origin. This value doesn't
  necessarily correspond directly to the selectionStart DOM value - in
  the case of a backward selection, it corresponds to selectionEnd.
  I feel that "origin" doesn't imply a specific ordering as strongly as
  "begin" (or "start" for that matter) does.

* In various other cases where "begin" is used as a synonym for "start",
  just use "start" for consistency.

* Implement selection_start() and selection_end() methods (and their
  _offset() variants) which directly correspond to their DOM
  equivalents.

* Rename other related methods to make them less wordy and more
  consistent / intention-revealing.

* Add assertions to assert_ok_selection() to ensure that our assumptions
  about the ordering of selection_origin and edit_point are met. This
  then revealed a bug in adjust_selection_for_horizontal_change() where
  the value of selection_direction was not maintained correctly (causing
  a unit test failure when the new assertion failed).
2018-01-26 19:50:50 +01:00
CYBAI
9c7ff219d7 Use specific assertion for unit tests style viewport 2018-01-26 01:30:30 +08:00
CYBAI
9755e3b606 Use specific assertion for unit tests logical geometry 2018-01-26 01:19:01 +08:00
Anthony Ramine
cd8f96cc9e Change ToCss to take a CssWriter<W>
This more concrete wrapper type can write a prefix the very first time something
is written to it. This allows removing plenty of useless monomorphisations caused
by the former W/SequenceWriter<W> pair of types.
2018-01-23 10:41:42 +01:00
Bobby Holley
5526947500 Avoid the generic writer parameter for PropertyDeclaration serialization.
MozReview-Commit-ID: JR3IcL1NRHO
2018-01-22 14:58:05 -08:00
Anthony Ramine
2ec3ed97db Merge servo_remutex to servo_remutex_tests 2018-01-20 15:37:04 +01:00
Anthony Ramine
14d0cf595f Merge servo_config and servo_config_tests 2018-01-20 15:36:41 +01:00
Anthony Ramine
ea924e398f Merge net_traits and net_traits_tests 2018-01-20 15:36:24 +01:00
Anthony Ramine
697b9e2b87 Merge net and net_tests 2018-01-20 15:36:09 +01:00
Anthony Ramine
a311e0f569 Merge layout and layout_tests 2018-01-20 15:33:39 +01:00
Anthony Ramine
c2ed7c9632 Merge gfx and gfx_tests 2018-01-20 15:33:15 +01:00
Anthony Ramine
a17a1fd06e Merge msg and msg_tests 2018-01-20 15:33:02 +01:00
Pyfisch
8c7c5f6e79 Use more WebRender types in gfx/display_list
This uses floating-point (Layout) coordinates in where possible.
Replace NormalBorder struct with WebRender equivalent.
Remove ToPointF and ToRectF traits.
Convert border RepeatKeyword with ToLayout.
Add some definitions to malloc_size_of for WebRender types.
2018-01-17 23:29:57 +01:00
Georg Streich
4b7cb2080e Decoupled gfx and metrics 2018-01-15 16:25:51 +01:00
Emilio Cobos Álvarez
6eb0143541
tests/net: Update testing cert. 2017-12-24 15:47:16 +01:00
tigercosmos
7d8be25030 remove unused Auto in test of serialization 2017-12-18 01:22:02 +08:00
CYBAI
b9b91b33be style: Move outline-style outside of mako 2017-12-13 11:41:59 +08:00
bors-servo
db41cc00be Auto merge of #19461 - jonleighton:issue-19171-4, r=KiChjang
Handle cases where selection API doesn't apply

The selection API only applies to certain <input> types:

https://html.spec.whatwg.org/multipage/#do-not-apply

This commit ensures that we handle that correctly.

Some notes:

1. TextControl::set_dom_selection_direction now calls
   set_selection_range(), which means that setting selectionDirection will
   now fire a selection event, as it should per the spec.

2. There is a test for the firing of the select event in
   tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/select-event.html,
   however the test did not run due to this syntax error:

   (pid:26017) "ERROR:script::dom::bindings::error: Error at http://web-platform.test:8000/html/semantics/forms/textfieldselection/select-event.html:50:11 missing = in const declaration"

   This happens due to the us of the "for (const foo of ...)" construct.
   Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
   this should actually work, so it's somewhat unsatisfying to have to
   change the test.

3. I removed tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/selection-not-application-textarea.html
   because it doesn't seem to add any extra value - the selection API
   always applies to textarea elements, and the API is tested elsewhere.

4. If an `<input>`'s type is unset, it defaults to a text, and the
   selection API applies. Also, if an `<input>`'s type is set to an
   invalid value, it defaults to a text too. This second case doesn't
   currently work, and I'll need to do more restructuring of the code in
   a future commit. See discussion with nox in IRC:
   https://mozilla.logbot.info/servo/20171201#c13946454-c13946594

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19461)
<!-- Reviewable:end -->
2017-12-10 18:37:58 -06:00
Jon Leighton
71a013dd50 Handle cases where selection API doesn't apply
The selection API only applies to certain <input> types:

https://html.spec.whatwg.org/multipage/#do-not-apply

This commit ensures that we handle that correctly.

Some notes:

1. TextControl::set_dom_selection_direction now calls
   set_selection_range(), which means that setting selectionDirection will
   now fire a selection event, as it should per the spec.

2. There is a test for the firing of the select event in
   tests/wpt/web-platform-tests/html/semantics/forms/textfieldselection/select-event.html,
   however the test did not run due to this syntax error:

   (pid:26017) "ERROR:script::dom::bindings::error: Error at http://web-platform.test:8000/html/semantics/forms/textfieldselection/select-event.html:50:11 missing = in const declaration"

   This happens due to the us of the "for (const foo of ...)" construct.
   Per https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...of
   this should actually work, so it's somewhat unsatisfying to have to
   change the test.

4. If an <input>'s type is unset, it defaults to a text, and the
   selection API applies. Also, if an <input>'s type is set to an
   invalid value, it defaults to a text too. I've expanded the tests
   to account for this second case.
2017-12-08 21:07:05 +01:00
Simon Sapin
5034d1d777 Fix running cargo test at the repository root 2017-12-08 19:21:45 +01:00
Simon Sapin
e17697fb0e Update euclid, azure, skia, offscreen_gl_context, plane-split, webrender 2017-12-08 14:32:28 +01:00
Simon Sapin
76270ad6c1 Update app_units and webrender 2017-12-08 01:09:38 +01:00
bors-servo
0c13f14aaa Auto merge of #19512 - mbrubeck:uluru, r=emilio
Improve LRU cache behavior in SelectorFlagsMap

This code used to insert duplicate entries to avoid expensive shuffling of the LRU cache.  With uluru this is no longer necessary, because reordering the cache is cheap.

Now it uses the `LRUCache::find` method from uluru 0.2 to update entries in-place.  This should increase cache hits by eliminating unnecessary evictions.

This PR also updates `arrayvec` because `uluru` depends on it, and `immeta` because it depends on `arrayvec`.

---
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [x] These changes do not require tests because they don't change behavior

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19512)
<!-- Reviewable:end -->
2017-12-07 16:02:44 -06:00
bors-servo
c4482ebe77 Auto merge of #19516 - ferjm:pwm.url, r=jdm
Print url of recorded PWM

This makes it a bit easier to compare results with other browsers.

- [X] `./mach build -d` does not report any errors
- [X] `./mach test-tidy` does not report any errors

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19516)
<!-- Reviewable:end -->
2017-12-07 14:54:03 -06:00
Fernando Jiménez Moreno
983084470f Print url of recorded PWM 2017-12-07 20:58:31 +01:00
Bastien Orivel
4b16ff7236 Bump string_cache, html5ever and xml5ever 2017-12-07 20:37:38 +01:00
Matt Brubeck
99c2db0549 Update to uluru 0.2 and arrayvec 0.4 2017-12-07 10:05:38 -08:00
Simon Sapin
2a5c4133f9 Make tests/units/* compile without warnings in non-test mode
(if not usefully)
2017-12-07 13:50:10 +01:00
Simon Sapin
9d898cd460 Include test crates as workspace members rather that dev-dependencies 2017-12-07 13:50:09 +01:00
Simon Sapin
05a364c7b8 Move Stylo unit tests out of tests/unit
This will allow writing `tests/unit/*` in the root `Cargo.toml` file
to designate Servo unit tests.
2017-12-07 13:50:09 +01:00
Emilio Cobos Álvarez
af879523ea
style: Make all keywords CamelCase for consistency.
This prevents confusion and paves the ground for derive(Parse) of them.
2017-12-06 02:35:10 +01:00
Bastien Orivel
6f8ba39dce Update smallvec to 0.6 2017-12-05 12:03:20 +01:00
Emilio Cobos Álvarez
ea5efd9e2f
style: Update cssparser to 0.23. 2017-12-05 10:01:37 +01:00
bors-servo
af8d53372f Auto merge of #19446 - emilio:bye-moz-border-colors, r=xidorn
style: Make -moz-border-colors chrome only.

This also makes the `border` shorthand not reset them.

Bug: 1417200
Reviewed-by: xidorn
MozReview-Commit-ID: KNais1e5FnE

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19446)
<!-- Reviewable:end -->
2017-12-01 10:41:33 -06:00
Emilio Cobos Álvarez
0f12380db3
style: Make -moz-border-colors chrome only.
This also makes the `border` shorthand not reset them.

Bug: 1417200
Reviewed-by: xidorn
MozReview-Commit-ID: KNais1e5FnE
2017-12-01 16:49:55 +01:00
Simon Sapin
0739b5d57a
Remove 5 second pause in ./mach test-unit
The pause is likely due to a Servo bug that I’m about to file, this does not fix the underlying bug.
2017-11-30 17:25:49 +01:00
Emilio Cobos Álvarez
5887e1e55c
style: Move get_writing_mode outside of mako, and add a pointer to it. 2017-11-27 21:14:53 +01:00
Anthony Ramine
ae20da6a80 Update cookie to 0.10
Except in webdriver, which source is in m-c.
2017-11-24 10:49:14 +01:00
bors-servo
7029e07ab9 Auto merge of #19185 - KiChjang:cookie-prefixes, r=avadacatavra
Implement secure and host cookie prefixes

Part of #8700.

I modified the algorithm so that it accurately checks for the presence of the `Path` attribute of the cookie, before checking whether it has a value of `/`.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19185)
<!-- Reviewable:end -->
2017-11-23 08:26:03 -06:00
Simon Sapin
b1ce298d4b Replace compiletest suite by doc-tests with compile_fail
compiletest-rs use internal rustc APIs and is broken in today’s Nightly.
rustdoc however is maintained with rustc and so much less fragile.
2017-11-22 16:25:17 +01:00
Keith Yeung
17ca56aa79 Implement secure and host cookie prefixes 2017-11-21 19:15:58 -08:00
bors-servo
17e97b9320 Auto merge of #19316 - servo:stylo-size-of, r=emilio
Fix Stylo tests to pass on both Stable and Nightly Rust

This is on top of https://github.com/servo/servo/pull/19285.

Rust Nightly has new enum memory layout optimizations: https://github.com/rust-lang/rust/pull/45225

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19316)
<!-- Reviewable:end -->
2017-11-21 05:41:12 -06:00
Simon Sapin
aaba33e56b Fix Stylo tests to pass on both Stable and Nightly Rust.
This is on top of https://github.com/servo/servo/pull/19285.

Rust Nightly has new enum memory layout optimizations:
https://github.com/rust-lang/rust/pull/45225
2017-11-21 12:24:08 +01:00
Manish Goregaokar
6dd7af2bda Fetch cancellation: Add CancellationListener 2017-11-20 16:54:24 -08:00
Eduard-Mihai Burtescu
6031de9a39 Update expected stylo sizes for rust-lang/rust#45225. 2017-11-19 11:35:28 +02:00
Manish Goregaokar
1dfb125cc9 Fetch cancellation: Add cancel_chan to FetchContext 2017-11-17 15:59:59 -08:00
bors-servo
bf29f64bf6 Auto merge of #19237 - upsuper:error-nested-rule, r=emilio
Use InvalidRule for nested rule list

This fixes [bug 1417548](https://bugzilla.mozilla.org/show_bug.cgi?id=1417548).

Apparently it makes no sense to have different error between top level rules and nested rules.

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/19237)
<!-- Reviewable:end -->
2017-11-16 03:03:48 -06:00
bors-servo
2977a4e26e Auto merge of #18710 - mhaessig:remove-rustc-serialize, r=jdm
Replace rustc_serialize with serde_json in style_tests

#12410 Stop using rustc_serialize

Replaced rustc_serialize with serde_json in
- [ ] ~~components/config/Cargo.toml~~
- [ ] ~~components/config/lib.rs~~
- [ ] ~~components/config/prefs.rs~~
- [ ] ~~components/script_traits/Cargo.toml~~
- [ ] ~~components/script_traits/lib.rs~~
- [ ] ~~components/script_traits/webdriver_msg.rs~~
- [ ] ~~components/webdriver_server/Cargo.toml~~
- [ ] ~~components/webdriver_server/lib.rs~~
- [X] tests/unit/style/Cargo.toml
- [X] test/unit/style/lib.rs
- [X] test/unit/style/properties/scaffolding.rs

PR checks:
- [x] `./mach build -d` does not report any errors
- [x] `./mach test-tidy` does not report any errors
- [X] These changes fix (partially) #12410.
- [X] These changes do not require tests because functionality was not changed or a test itself was edited

<!-- Reviewable:start -->
---
This change is [<img src="https://reviewable.io/review_button.svg" height="34" align="absmiddle" alt="Reviewable"/>](https://reviewable.io/reviews/servo/servo/18710)
<!-- Reviewable:end -->
2017-11-15 17:09:21 -06:00
Xidorn Quan
faa6898237 Use InvalidRule for nested rule list. 2017-11-15 13:23:52 -08:00
Manish Goregaokar
6415294fd5
Fix unit tests 2017-11-02 14:30:15 -07:00