Commit Graph

239 Commits

Author SHA1 Message Date
Andrey Lushnikov 329b34e894
feat: implement mac keyboard (#197)
This list contains all of the default keyboard shortcuts for macos, and the Objective-C selector that they trigger on the [NSStandardKeyBindingResponding](https://developer.apple.com/documentation/appkit/nsstandardkeybindingresponding/3005237-moveleft?language=objc). We need these for basic keyboard functionality like ArrowUp and ArrowDown to work on WebKit for mac. For other browsers on mac, the same list can be used to enable better mac keyboard emulation.

The list was made by constructing NSEvents on a mac and seeing what selectors they triggered on an NSTextView. The conversion from NSEvents to DOM codes was done partially by hand as the code that does this conversion lives across many files in WebKit. There may be some errors or missing commands, but in general this should be a more faithful mac keyboard emulation than what we do in Chromium currently.

Notably absent from the list are Cut, Copy, Paste, Paste Special, Undo, and Redo. They are handled in a slightly different way.
2019-12-10 13:22:01 -08:00
Yury Semikhatsky c9bc103a00 chore(webkit): remove url from Connection (#199) 2019-12-10 13:11:55 -08:00
Pavel Feldman c61c5b056f test: group interception tests in interception.spec 2019-12-10 13:11:20 -08:00
Dmitry Gozman f1f9dc166b
chore: remove unneeded files, reuse events between browsers, no implicit any (#191) 2019-12-10 11:15:14 -08:00
Andrey Lushnikov d96cd76852
browser(webkit): support keyboard on Mac & GTK (#196)
Review URL: d360425422
2019-12-10 10:39:40 -08:00
Pavel Feldman 44d6f608ef feat(webkit): use webkit worlds (#194) 2019-12-09 23:24:12 -08:00
Pavel Feldman 5ab6514633 feat(webkit): run bootstrap script in all worlds (#193) 2019-12-09 23:17:33 -08:00
Pavel Feldman 102b47ddf9
feat(webkit): implement node adoption (#190) 2019-12-09 17:01:11 -08:00
Dmitry Gozman b4c89ca0f9
chore: unify frame lifecycle events between browsers (#172) 2019-12-09 16:34:42 -08:00
Dmitry Gozman e5a85e4e67
chore(webkit): migrate to common Page (#189) 2019-12-09 15:45:32 -08:00
Pavel Feldman 1606697c7e
feat(webkit): implement world creation (#185) 2019-12-09 15:22:11 -08:00
Dmitry Gozman 640646b794
chore(firefox): migrate to common Page (#188) 2019-12-09 14:53:17 -08:00
Joel Einbinder e3f34bd69a
fix(fill): throw when the element isn't fillable (#160)
An element is fillable if its:
- In dom
- Not display:none or visibility:hidden
- textarea or input or contenteditable

if textarea or input it must also be
- not readOnly
- not disabled

#133
2019-12-09 14:51:19 -08:00
Yury Semikhatsky 37540179de chore(webkit): pass session to Target constructor (#187) 2019-12-09 14:41:20 -08:00
Andrey Lushnikov cb92cd0d5c devops: teach {firefox,webkit}/build.sh to build current branch
The check for the proper branch has moved to
`checkout_build_archive_upload.sh` script.
2019-12-09 14:38:23 -08:00
Andrey Lushnikov b6e518399c devops: properly extract remote url while running export checks
Turns out `git rmeote get-url` resolves the `insteadOf` substitutions
and ends up with a different URL.

This patch bypasses these substitutions to properly validate
remote url.
2019-12-09 14:06:55 -08:00
Dmitry Gozman c323a3e50b chore(chromium): move Page to common, implement PageDelegate (#184) 2019-12-09 14:08:20 -07:00
Pavel Feldman 122837113b
feat(webkit): use NSEvents for mouse event simulation (#180) 2019-12-09 12:20:58 -08:00
Yury Semikhatsky f9d5a18d05 chore(webkit): remove unused fields from Target (#183) 2019-12-09 12:13:19 -08:00
Dmitry Gozman 88aea0a886
fix: fix races in didClose and didDisconnect across browsers (#182)
Also merge initialize and swapSessionOnNavigation in webkit.
2019-12-09 10:16:30 -08:00
Dmitry Gozman b3817aab2a chore(webkit): remove most session usages from Page (#181)
These are moved to FrameManager, so that we can reuse Page between browsers.
2019-12-09 10:48:54 -07:00
Pavel Feldman f5cd742b79
test: rebaseline some click tests (#179) 2019-12-08 17:17:49 -08:00
Yury Semikhatsky 4f5fd4870c
feat(webkit): implement setPauseOnStart in browser target agent (#176) 2019-12-08 16:14:17 -07:00
Dmitry Gozman f38ab5d80f chore: reuse BrowserFetcher between browsers (#177) 2019-12-08 13:29:03 -08:00
Pavel Feldman ba4cfe908c
fix(webkit): make headless webview active and focused at all times (#178) 2019-12-08 13:22:47 -08:00
Pavel Feldman 51c975b098 chore: group more feature test files 2019-12-08 09:04:07 -08:00
Yury Semikhatsky 9249ccbc77
feat(webkit): extend TargetInfo with information about related targets (#174) 2019-12-07 18:15:31 -07:00
Dmitry Gozman 0d0f6b7d03 fix(webkit): improve target swap handling (#175)
- Fix "page closed twice" race.
- Do not fire 'disconnected' on swapped out sessions.
- Use a different error for commands sent to swapped out targets.
  This allows callers to detect this situation and retry/throw/catch.
- Restore more state on swap: extra http headers, user agent, emulated media.
2019-12-07 16:58:23 -08:00
Dmitry Gozman 3fe20ba516 fix(webkit): disable throttling and pass frameId to load/domcontentloaded (#173) 2019-12-07 16:35:32 -08:00
Pavel 5274f2bd3c chore: only test request interception for Chrome & FF 2019-12-06 17:37:45 -08:00
Pavel 1377be2b27 fix: fix new jpeg and png deps 2019-12-06 17:14:08 -08:00
Yury Semikhatsky 02e29219fd fix(webkit): make go back/forard return null on error (#171) 2019-12-06 16:38:23 -08:00
Dmitry Gozman 5ab0faab93 chore: remove most usages of session from firefox Page (#169) 2019-12-06 17:34:27 -07:00
Yury Semikhatsky 10edb02fb6 feat(webkit): roll to 1016 2019-12-06 16:30:59 -08:00
Pavel 0884e29695 chore: rearrange test spec files 2019-12-06 16:15:47 -08:00
Yury Semikhatsky 6294f0248a feat(webkit): disable back-forward cache when inspector client is connected (#170) 2019-12-06 15:26:50 -08:00
Pavel b45ea22660 test: fix element.handle nested frames 2019-12-06 15:11:14 -08:00
Joel Einbinder e727ee0c81 fix(doc): Make browser_patches/contributing.md more straightforward (#167) 2019-12-06 15:56:37 -07:00
Pavel bcb62de4b2 fix(test): make click tests pass everywhere 2019-12-06 14:48:41 -08:00
Dmitry Gozman 14f078308d
chore: remove some usage of client from Page (#163)
This brings us closer to reusing Page between browsers.
2019-12-06 13:36:47 -08:00
Pavel 349ce22565 lint: follow up with lints 2019-12-06 12:04:11 -08:00
Pavel Feldman bb1888c86e feat(screenshots): make them work everywhere (#164) 2019-12-06 11:33:24 -08:00
Joel Einbinder 57313e3f73
feat: basic d.ts file (#161)
`protocol.d.ts` had to move to `protocol.ts` otherwise typescript refuses to include it in the out directory.

Removed the old d.ts generator. It will need to be rewritten anyway.

These new types include private stuff that they probably shouldn't, and are missing documentation. I'll follow up with a better d.ts generator later.

#6
2019-12-06 11:28:23 -08:00
Joel Einbinder 1c9103e642 test(chrome): failing test for clicking when scroll-behavior is smooth (#136) 2019-12-05 17:58:19 -08:00
Pavel Feldman 2c185e3ead feat(webkit): move quads to float space (#162) 2019-12-05 17:57:21 -08:00
Joel Einbinder 39b22b41c5
feat: make JSHandle generic (#140)
This makes it so that JSHandles and ElementHandles are aware of what types they point to. As a fun bonus, `$eval('input')` knows its going to get an HTMLInputElement.

Most of this patch is casting things where previously we just assumed ElementHandles held the right kind of node. This gets us closer to being able to turn on `noImplicityAny` as well.

#6
2019-12-05 16:26:09 -08:00
Andrey Lushnikov e4fad11c16 chore(ci): use bionic for travis 2019-12-05 15:18:55 -08:00
Andrey Lushnikov fe34ddf766
chore(ci): attempt to bring back travis to life 2019-12-05 15:13:20 -08:00
Andrey Lushnikov 81c8a43e4b chore(ci): add travis deps to run WebKit Linux (#159) 2019-12-05 15:57:44 -07:00
Dmitry Gozman e992c7fa7d chore: unify screenshot handling between browsers, introduce Screenshotter everywhere (#156) 2019-12-05 14:48:39 -08:00