Commit graph

33262 commits

Author SHA1 Message Date
bors-servo
3c43fa6b1d
Auto merge of #21105 - Manishearth:dom-inheritance-assert, r=nox
Assert that DOM structs have the correct first field

Not having the right field can lead to fun bugs like https://github.com/ferjm/servo/pull/1 where the struct gets mis-reinterpreted as what should be its parent (but is not layout-wise)

<!-- 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/21105)
<!-- Reviewable:end -->
2018-07-03 12:52:12 -04:00
Manish Goregaokar
ad198993b1 Assert that DOM structs have the correct first field
DOM structs embed their parent type as their first field. This
introduces a `.parent()` method to the DOM struct that returns its first
field, and codegens a type assert that ensures that `.parent()` returns
the parent struct.

This generates:

On `#[dom_struct]`:

```rust
impl HasParent for Type {
    type Parent = ParentType;
    fn as_parent(&self) -> ParentType {
        &self.first_field
    }
}
```

In the codegen files:

```rust
impl Type {
    fn __assert_parent_type(&self) {
        let _: &ParentType = self.as_parent();
    }
}
````
2018-07-03 09:39:29 -07:00
bors-servo
1f9b07637e
Auto merge of #21094 - servo:bootstrap-android, r=paul
Add mach bootstrap-android and test-android-startup commands

This adds a `./mach boostrap-android` subcommand that downloads and installs the tools, SDK, NDK,  emulator, and system image for Android. In an environment that can build Servo at all, this should be enough to get all additional dependencies to cross-compile to Android, package an APK, and load it onto a device or an emulator.

At the moment it requires an interactive user to accept the license (and confirm no customization of the emulated virtual device hardware), and then prints environment variables to set for `mach` as well as the command to run to start the emulator (with an already-configured image). A possible next step could be to automate all this, and have `./mach build` run it automatically when needed. (I don’t know if auto-accepting the license is something we should do though.)

This also adds `--emulator` and `--usb` parameters to `./mach install --android` and `./mach run --android`, which tell `adb` what device to pick when both are present. And makes `./mach run --android` print the new process’s PID, for use with e.g. `adb -e logcat --pid 2263`.

Finally, adds the `./mach boostrap-android` subcommand which starts an emulator, installs the APK (it assumes that `mach build` and `mach package` were already executed), runs a single HTML test case, and checks for a message coming from JS through `console.log()` and `adb logcat`.

<!-- 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/21094)
<!-- Reviewable:end -->
2018-07-02 13:02:07 -04:00
Simon Sapin
c0d1b8e808 Android: increase emulator disk size, for debug builds
Avoid INSTALL_FAILED_INSUFFICIENT_STORAGE on install.
2018-07-02 19:00:48 +02:00
Simon Sapin
eecbe83750 Add ./mach test-android-startup 2018-07-02 19:00:48 +02:00
Simon Sapin
bee3fd09c2 mach android-emulator: avoid mach error messages for Python exceptions 2018-07-02 19:00:48 +02:00
Simon Sapin
8293b295be bootstrap-android: check SHA1 hashes of downloaded archives 2018-07-02 19:00:48 +02:00
Simon Sapin
9e544c2aae Remove the egl-configs diagnostic program
It has served its purpose. If we ever need it again it’s in git history.
2018-07-02 19:00:48 +02:00
Simon Sapin
b6b9fe07e2 Add "./mach android-emulator" 2018-07-02 13:25:44 +02:00
Simon Sapin
fc77db4b09 Use the bootstraped Android toolchains by default 2018-07-02 13:25:44 +02:00
Simon Sapin
65122b10d3 bootstrap-android: always run sdkmanager
It is quick when already up to date
2018-07-02 13:25:44 +02:00
Simon Sapin
aa1c3cea2f bootstrap-android: use predictable paths for SDK and NDK
… independent of the version number
2018-07-02 13:25:44 +02:00
Simon Sapin
0e2e9cb019 Create emulator images for both ARM and x86 2018-07-02 13:25:44 +02:00
Simon Sapin
e54ad77594 Do not prompt for Android emulator hardware profile 2018-07-02 13:25:44 +02:00
Simon Sapin
f4d740f086 Typo fixes 2018-07-02 13:25:44 +02:00
Simon Sapin
b7a8b81071 egl-configs: add i686 support 2018-07-02 13:25:44 +02:00
Simon Sapin
7d7f2025b7 Fix copy/paste mistake 2018-07-02 13:25:44 +02:00
Simon Sapin
3c992af8a1 Remove debugging println from a year ago 2018-07-02 13:25:44 +02:00
Simon Sapin
484eee8624 Tidy 2018-07-02 13:25:44 +02:00
Simon Sapin
6e6870516e cargo run into Android/adb: configurable target device 2018-07-02 13:25:44 +02:00
Simon Sapin
1f8d04b8e1 egl-configs: print hex too 2018-07-02 13:25:44 +02:00
Simon Sapin
7e7316e766 egl-configs: print all config attributes 2018-07-02 13:25:44 +02:00
Simon Sapin
89f6c6dbf0 egl-configs: get the number of configs 2018-07-02 13:25:44 +02:00
Simon Sapin
90ba22b8d2 egl-configs: link to EGL and generate bindings 2018-07-02 13:25:44 +02:00
Simon Sapin
eab971cba1 Android cross-compiled command line hello world
`cargo run` Just Works®
2018-07-02 13:25:44 +02:00
Simon Sapin
4cbf3dea05 mach {package,install} --android: add --emulator and --usb 2018-07-02 13:25:44 +02:00
Simon Sapin
fe24816d12 mach run --android: show PID 2018-07-02 13:25:44 +02:00
Simon Sapin
8889742407 mach bootstrap-android: configure and show how to start an emulator 2018-07-02 13:25:44 +02:00
Simon Sapin
1ee54ab5fb Create and Android virtual device 2018-07-02 13:25:44 +02:00
Simon Sapin
244a332976 Use more recent Android tools
The older version seems to insist on updating itself when asked to install other components.
2018-07-02 13:25:44 +02:00
Simon Sapin
56df7f4220 Install complete Android SDK (as much as on Buildbot CI) 2018-07-02 13:25:44 +02:00
Simon Sapin
510cf1a2ab boostrap: set executable bits when extracting zip files 2018-07-02 13:25:44 +02:00
Simon Sapin
b9d5f11b20 Add ./mach bootstrap-android 2018-07-02 13:25:44 +02:00
bors-servo
c71c55e542
Auto merge of #21109 - emilio:gecko-sync, r=SimonSapin
style: sync changes from mozilla-central.

See each individual commit for details..

<!-- 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/21109)
<!-- Reviewable:end -->
2018-07-01 05:14:21 -04:00
Emilio Cobos Álvarez
36495d677f
Remove unused code for parsing a sizes attribute.
We have `SourceSizeList` in
components/style/values/specified/source_size_list.rs which does the job and is
tested via WPT in Gecko.
2018-07-01 10:53:42 +02:00
Emilio Cobos Álvarez
8e5c853fca
style: Appease tidy. 2018-07-01 01:01:46 +02:00
Emilio Cobos Álvarez
719209316c
Fix servo build. 2018-07-01 00:54:30 +02:00
Emilio Cobos Álvarez
e149059608
style: Fix build / unit tests. 2018-07-01 00:54:30 +02:00
Emilio Cobos Álvarez
fc5dbc1bae
style: Remove stray newline. 2018-07-01 00:11:08 +02:00
Emilio Cobos Álvarez
c2d21a8497
style: Serialize content properties using Servo.
Bug: 1472443
Reviewed-by: xidorn
Differential Revision: https://phabricator.services.mozilla.com/D1901
2018-07-01 00:10:46 +02:00
Emilio Cobos Álvarez
856924f167
style: Make StyleContentType an enum class.
Most of it is automated by:

  %s/eStyleContentType_/StyleContentType::/g
  %s/nsStyleContentType/StyleContentType/g

But I removed some parentheses by hand.

Bug: 1472443
Reviewed-by: xidorn
Differential Revision: https://phabricator.services.mozilla.com/D1900
2018-07-01 00:10:31 +02:00
Emilio Cobos Álvarez
28c9820dd9
style: Expose logical props in computed style.
Bug: 1116638
Reviewed-by: xidorn
Differential Revision: https://phabricator.services.mozilla.com/D1862
2018-07-01 00:10:13 +02:00
Olli Pettay
6483a89848
if ExtendedDOMSlots are used before slots, use FatSlots to have fewer allocations.
Bug: 1419661
2018-07-01 00:09:54 +02:00
Gerald Squelart
8488875a56
style: Removed layout.css.all-shorthand.enabled pref.
The 'all' shorthand has shipped a long time ago, so this pref is not needed
anymore.

Bug: 1459524
Reviewed-by: heycam
MozReview-Commit-ID: GND8qSVAfCG
2018-07-01 00:09:38 +02:00
Emilio Cobos Álvarez
e6d62b685b
style: Make :host() and ::slotted() account for the inner selector's specificity.
As resolved in https://github.com/w3c/csswg-drafts/issues/1915.

Bug: 1454165
Reviewed-by: xidorn
Differential Revision: https://phabricator.services.mozilla.com/D1849
2018-07-01 00:09:08 +02:00
Olli Pettay
8688c53f07
style: Unconditionally enable :defined in chrome.
Bug: 1471871
Reviewed-by: emilio
2018-07-01 00:08:48 +02:00
Olli Pettay
b68e4c2352
style: Implement :defined pseudo-class for custom elements.
Bug: 1331334
Reviewed-by: emilio
2018-07-01 00:08:33 +02:00
Emilio Cobos Álvarez
06fa3406de
style: Put offset-* aliases behind a pref.
Bug: 1464782
Reviewed-by: xidorn
MozReview-Commit-ID: Hl6Muim3wVH
2018-07-01 00:08:20 +02:00
Emilio Cobos Álvarez
65953fb158
style: Rename offset-* logical properties to inset-*.
Bug: 1464782
Reviewed-by: xidorn
MozReview-Commit-ID: BW44sru99RF
2018-07-01 00:08:09 +02:00
Xidorn Quan
ce0496e116
style: Generate ComputedStyleMap entry list from property data.
This changes the order of properties returned from gCS. The old order
doesn't make much sense, and other browsers don't agree on an identical
order either, so it should be trivial to change it. Also the spec isn't
super clear / useful in this case.

Several -moz-prefixed properties are excluded from the list due to their
being internal. I suspect they are never accessible anyway, so probably
nothing gets changed by this.

Bug: 1471114
Reviewed-by: xidorn
MozReview-Commit-ID: 9LfangjpJ3P
2018-07-01 00:07:50 +02:00