Commit Graph

404 Commits

Author SHA1 Message Date
Dmitry Gozman
e8419f85b6
browser(firefox): support alertCheck and confirmCheck dialogs (#4553)
These are shown with "prevent this page from showing more dialogs" checkbox.
2020-11-30 20:05:15 -08:00
Andrey Lushnikov
730f6f87a2
browser(firefox): roll Firefox to beta Nov 30, 2020 (#4542) 2020-11-30 10:17:03 -08:00
Joel Einbinder
d06afadb8b
browser(firefox): send dragend after drop and survive navigations (#4506) 2020-11-25 03:47:34 -08:00
Andrey Lushnikov
17bec4f6f8
browser(firefox): rebaseline atop of Nov, 23 2020 (#4516) 2020-11-23 16:21:07 -08:00
Dmitry Gozman
14a96ca21f
browser(firefox): ensure detachedFromTarget is always sent (#4505)
browser(firefox): ensure detachedFromTarget is always sent

LinkedBrowser can throw when removing listeners in PageTarget.dispose,
and that prevents BrowserHandler from sending Browser.detachedFromTarget.

Using a try-catch seems good enough.
2020-11-20 10:48:06 -08:00
Andrey Lushnikov
6bc45d9247
browser(firefox): browser.version() to return full version (#4491)
Currently, browser.version() returns `83.0`, whereas launching firefox
with `--version` flag returns `83.0b3`. This patch alings protocol's
`Browser.version()` with flag output.
2020-11-19 08:24:17 -08:00
Andrey Lushnikov
cb1f2a38f3
browser(firefox): roll Firefox to Nov 17,2020 (#4477)
Changes accomodate touchEventsOverride that has moved to the
browser side.
2020-11-18 08:19:09 -08:00
Yury Semikhatsky
39fcf1bc54
browser(firefox): do not leak reponses (#4453) 2020-11-16 13:16:20 -08:00
Joel Einbinder
e91140e88c
browser(firefox): force a layout before dispatching a tap (#4428) 2020-11-16 11:07:06 -08:00
Yury Semikhatsky
0167f8c182
browser(firefox): allow to override request url (#4436) 2020-11-13 14:56:27 -08:00
Dmitry Gozman
2e65f78874
browser(firefox): close browser when pipe disconnects (#4437) 2020-11-13 14:51:40 -08:00
Yury Semikhatsky
8488c296f9
browser(firefox): allow to override content-type along with post data (#4416) 2020-11-12 10:41:49 -08:00
Dmitry Gozman
ae738c1fac
browser(firefox): ignore WebProgress events coming from workers (#4380)
Somehow, we get WebProgress state changes when worker is loaded
with a blob url. This messes up frame navigation detection.

Luckily, it's easy to filter out non-document state changes.
2020-11-09 09:29:34 -08:00
Dmitry Gozman
06c8881dad
browser(firefox): fix videoSessionId (#4374)
PRIx8 produced "%hx%hx%hx%hx%hx%hx%hx%hx%hx%hx%hx%hx%hx%hx%hx%hx",
so video session ids were clashing between pages, and popup videos
did not work.
2020-11-06 15:08:03 -08:00
Andrey Lushnikov
c522a0dfba
browser(firefox): force always active docshell (#4363)
This forces active docshell for all content processes.

References #4208
2020-11-05 17:53:22 -08:00
Yury Semikhatsky
040f9b04ca
browser(webkit): copy MS VC++ redistributable libs from VS installation (#4360) 2020-11-05 16:51:42 -08:00
Yury Semikhatsky
aafcf932bc
browser(firefox): bundle VS C++ redistributable dlls (#4359) 2020-11-05 13:56:15 -08:00
Andrey Lushnikov
799604c085
browser(firefox): roll Firefox to beta @ Nov, 3 (#4327) 2020-11-03 14:51:37 -08:00
Andrey Lushnikov
e3b12b0a0d
browser(firefox): fix closing browser contexts with beforeunload (#4314)
References #4021
2020-11-02 17:29:54 -08:00
Andrey Lushnikov
2b495c9750
browser(firefox): fix SimpleChannel to await initialization (#4311)
As Joel noticed recently, MessageManager in firefox doesn't guarantee
message delivery if the opposite end hasn't been initialized yet. In
this case, message will be silently dropped on the ground.

To fix this, we establish a handshake in SimpleChannel to make sure that
both ends are initialized, end buffer outgoing messages until this
happens.

Drive-by: serialize dialog events to only deliver *after* the
`Page.ready` protocol event. Otherwise, we deliver dialog events to the
unreported page.
2020-11-02 16:21:34 -08:00
Andrey Lushnikov
18c3efe79e
browser(firefox): instrument websockets (#4287) 2020-10-29 16:33:50 -07:00
Andrey Lushnikov
c5d3490b34
browser(firefox): roll firefox to beta Oct, 28 (#4274) 2020-10-28 14:47:14 -07:00
Pavel Feldman
437fe17825
browser(firefox): expose resource timing info (#4205) 2020-10-21 13:55:30 -07:00
Yury Semikhatsky
092c9905e6
browser(firefox): fix screencast timescale precision (#4196) 2020-10-20 13:39:56 -07:00
Joel Einbinder
4f7d65fe9c
browser(firefox): report pageerrors without stack properties (#4166) 2020-10-19 02:23:53 -07:00
Joel Einbinder
305d209e82
browser(firefox): always send focus events (#4150) 2020-10-16 01:28:13 -07:00
Andrey Lushnikov
8f8bebb632
browser(firefox): roll Firefox to tip-of-tree Oct, 12 (#4158) 2020-10-15 09:51:21 -07:00
Yury Semikhatsky
3c32c1683a
browser(firefox): use 16-byte long uid instead of ordinal as screencast id (#4147) 2020-10-14 16:14:24 -07:00
Joel Einbinder
a4474f6752
browser(firefox): Page.dispatchTapEvent (#4101) 2020-10-13 12:24:11 -07:00
Andrey Lushnikov
58285f6155
browser(firefox): await browser initialization when closing browser (#4121)
We try to avoid closing firefox too early, fearing that this
might terminate clean shutdown sequence.

Usually we assume that `Browser.enable` is called before `Browser.close`
- however, this is not the case in certain tests. So we have to
ensure browser initialization in `Browser.close` as well.

In my local tests, this fixes the Firefox Pipe problem: it looks like
we were closing browser too quickly.
2020-10-12 22:34:04 -07:00
Andrey Lushnikov
6a7d24469a
devops: fix firefox build (#4088)
New firefox build requires a pre-created python virtual environment.
We should detect it and create if necessary.

References #3995
2020-10-07 14:34:58 -07:00
Andrey Lushnikov
1ccce09a02
browser(firefox): roll Firefox to beta Oct 7, 2020 (#4087)
References #3995
2020-10-07 14:12:19 -07:00
Andrey Lushnikov
6beef551d9
browser(firefox): wait for search and addon manager initialization (#4081)
It looks like terminating browser when search service or addon manager is
not fully initialized results in a broken shutdown sequence. As of
today, this results in multiple errors in the browser STDERR. In future,
this might also result in browser stalling instead of terminating.

This starts awaiting search and addon manager termination.

References #3995
2020-10-07 10:24:16 -07:00
Andrey Lushnikov
3b4232864d
browser(firefox): a different way to emit 'load' event (#4080)
Using WebProgressListener events works in all cases. Currently
used `pageshow` event will stop being emitted in future when loading
was stopped with `window.stop()` api.

References #3995
2020-10-07 09:22:56 -07:00
Andrey Lushnikov
e6869edf98
browser(firefox): fix typo in dispatcher teardown (#4069) 2020-10-06 12:06:50 -07:00
Andrey Lushnikov
4ab66a4fe5
browser(firefox): follow-up with assorted simplifications (#4066)
This patch:
- moves `SimpleChannel` to synchronously dispatch buffered commands
  instead of a `await Promise.resolve()` hack
- moves dialog & screencast handling from `PageHandler` to
  `TargetManager`. This leaves `PageHandler` to be concerned solely about
  protocol.
- removes `attach` and `detach` methods for worker channels: since
  channels are buffering messages until the namespace registers, there's
  no chance to loose any events.
- slightly simplifies `PageNetwork` class: it's lifetime is now
  identical to the lifetime of the associated `PageTarget`, so a lot can
  be simplified later on.

References #3995
2020-10-06 01:53:25 -07:00
Andrey Lushnikov
c8a64b88e1
browser(firefox): enable document channel (#4065)
In the current tip-of-tree Firefox, document channel is enabled by
default, so we have to enable it in order to roll further.

This patch:
1. Removes content disposition sniffing from content process since it
   crashes renderer with document channel.
2. Merges all page-related handlers in a single `PageHandler` and
   serializes network events wrt the `Page.frameAttached` event.

The serialization mentioned in (2) is necessary: frame attachment is
reported from the content process, and network events are reported from
the browsers process. This is an inherent race, that becomes exposed by
the document channel.

On a side note, (2) makes it possible to synchronously report all
buffered events in `SimpleChannel` (cc offline discussion with @dgozman
that highlighted an unsighty approach that we currently employ there: reporting
events in a subsequent microtask.)

References #3995
2020-10-06 00:15:24 -07:00
Pavel Feldman
857abcfc10
browser(firefox): make pipe work on Windows (#4058) 2020-10-05 10:58:56 -07:00
Dmitry Gozman
133de10a47
browser(firefox): start screencast in existing pages upon setScreencastOptions (#4045)
This makes it work in persistent context.

To achieve this, we have to move screencast logic into PageTarget and
make PageHandler listen to an event.
2020-10-02 17:16:49 -07:00
Andrey Lushnikov
2c11b10598
browser(firefox): remove multisession logic (#4039)
This patch:
1. Changes `SimpleChannel` to buffer messages to the namespace that
   hasn't been registered yet. This allows us to create `SimpleChannel`
   per target on the browser side right away.
2. Removes multisession support. Now there's only one `PageAgent` in the
   content process, which talks to a single `PageHandler` on the browser
   side. Both ends can be created as-soon-as-needed; thanks to
   `SimpleChannel` bufferring, no messages will be lost and all messages
   will be delivered in proper order. (This is currently the reason why
   build 1178 flakes on windows).
3. Straightens up the target reporting. Targets are reported as soon
   as they appear on the browser side.

**NOTE:** this doesn't yet remove sessions from protocol.

References #3995
2020-10-02 04:13:42 -07:00
Andrey Lushnikov
b74a6b78ef
browser(firefox): do not double-attach session to the same target (#4027)
We currently might double-attach to the target in `BrowserHandler` since we iterate over all targets, and then subscribe to the additional event when target is getting initialized.

This patch fixes this race condition and should unblock the roll to r1177.

References #3995
2020-09-30 23:50:02 -07:00
Andrey Lushnikov
974358442d
browser(firefox): move user agent emulation to browser side (#4016)
References #3995
2020-09-30 08:02:22 -07:00
Andrey Lushnikov
e28083974d
browser(firefox): simplify PageTarget lifecycle (#4014)
As of today, we create `PageTarget` instances whenever we get a
sync IPC from the content process. This, however, breaks an invariant
that `browserContext.pages` always has all pages (and *browsing contexts* - not to be confused with *browser contexts*), associated with browser context. This invariant will be especially important when we move
user agent emulation to browser-side.

This patch makes `PageTarget` lifecycle symmetrical:
- `PageTarget` instance is created when tab is opened
- `PageTarget` is destroyed when tab is crashed or closed

This should also fix a bunch of race conditions with persistent mode, since sometimes we arrive to the window after its
initialization.

Drive-by: straighten viewport management and put a nice descriptive comment.
2020-09-30 02:10:34 -07:00
Andrey Lushnikov
24bc0e39b8
browser(firefox): remove the hack around setting viewport size (#4010)
Juggler code had a bug where we subscribed to window and tab
events, but did not iterate collections of current windows and tabs.

As a result, we were sometimes failing to set viewport size for the
initial window, and implemented an artificial promise to workaround
the problem.

This patch:
- starts calling `onOpenWindow` and `onOpenTabListener` callbacks
  for *all* windows and tabs - current and future, eliminating the
  race condition.

This worked too well and we started overriding window sizes that
were set by users with `window.open(url, 'width=300;height=400')` (we
have a test for this). To fix this, we now plumb `CHROME_WITH_SIZE`
flag from appWindow and override viewport iff this flag is not set.

After this patch, we will use the `onTabOpened` event to move user
agent emulation to the browser-side.

References #3995
2020-09-30 00:36:46 -07:00
Andrey Lushnikov
2631e1a809
browser(firefox): use browsingContextID for frame IDs (#3999)
BrowsingContextIDs are consistent across the processes, so we can use
them to target frames in both browser and content processes. This will
aid browser-side navigation.

As a nice side-effect, we can drop a round-trip to the content process
for every `requestWillBeSent` event since we *almost* always can
attribute all network events to the proper parent frames.

I say "almost", because we in fact **fail** to correctly attribute requests
from workers that are instantiated by subframes. This, however, is
not working in Chromium ATM, so I consider this to be a minor regression
that is worth the simplification.
2020-09-29 11:22:00 -07:00
Yury Semikhatsky
25b199b40a
browser(firefox): fix screencast start event for popups (#3834) 2020-09-10 14:37:48 -07:00
Yury Semikhatsky
d64d0025a4
browser(firefox): fix screencast in first window on mac headful (#3826)
* browser(firefox): fix screencast in first window on mac headful

* Revert only
2020-09-10 00:40:56 -07:00
Andrey Lushnikov
6c83266047
browser(firefox): force firefox devtools to open in a separate window (#3816)
References #3470
2020-09-09 09:36:32 -07:00
Dmitry Gozman
5364c6acbc
browser(firefox): fix automatic http->https redirect (#3812)
browser(firefox): fix automatic http->https redirect

Sometimes, Firefox does an automatic http->https redirect without hitting
the network (e.g. for http://wikipedia.org). In this case, the http request
is very strange:
- it does not actually hit the network;
- it is never intercepted;
- we cannot access its response because there was no actual response.

So, we had a bug where:
- redirects inherited the original request's listener;
- that listener was throwing an error.
This lead to the error in the listeners onDataAvailable call chain,
and original listener that renders the response was never called,
resulting in an empty page.

This change:
- ignores the original request that did not hit the network;
- does not inherit the listener;
- adds try/catch around problematic calls.
2020-09-09 09:16:03 -07:00
Yury Semikhatsky
ee1becd897
browser(firefox): autoscale screencast to fit frame (#3720) 2020-09-01 17:10:06 -07:00
Joel Einbinder
abb50a79bd
browser(firefox): fix request frame attribution (#3657)
Firefox will sometimes send multiple requests with the same http channel id. When a frame is loaded, the favicon is requested in the parent frame, but with the same channel id. This can cause the document request to report the wrong frame, causing the test 'should capture iframe navigation request' to fail. It fails consistently on my computer.

This patch adds the content policy type into the http channelId to better distinguish requests. Maybe there is something better we can do? It looks like we use channelId has request ids, so there might be more bugs with these favicon requests in playwright?
2020-08-28 17:55:05 -07:00
Yury Semikhatsky
17077fd901
browser(firefox): introduce browser level screencastFinished event (#3625) 2020-08-25 14:50:40 -07:00
Yury Semikhatsky
9f3a1b5168
browser(firefox): send screencastStarted after attachedToTarget (#3554) 2020-08-20 14:03:05 -07:00
Yury Semikhatsky
5ba0254c99
browser(firefox): make sure response is sent when context is closed (#3553) 2020-08-20 13:26:04 -07:00
Yury Semikhatsky
854d755db5
browser(firefox): make context close wait for sessions to finish (#3550) 2020-08-20 11:04:57 -07:00
Yury Semikhatsky
f13cebc66d
browser(firefox): remove redundant checks for PageTarget._browserContext (#3541) 2020-08-19 15:39:46 -07:00
Yury Semikhatsky
df50660458
browser(firefox): make tab close listener sync again (#3533) 2020-08-19 12:52:43 -07:00
Yury Semikhatsky
73cd6ecef3
browser(firefox): add screencast control methods to context (#3530) 2020-08-19 12:43:53 -07:00
Yury Semikhatsky
56da4bb027
devops: make sure rust toolchain is installed (#3485)
Otherwise if required version is not installed the build fails with a cryptic message like
`error: toolchain '1.45.0-x86_64-unknown-linux-gnu' does not support components`
2020-08-19 09:11:28 -07:00
Andrey Lushnikov
4dde2882e7
browser(firefox): roll Firefox to August 14 beta (#3465) 2020-08-13 23:14:24 -07:00
Joel Einbinder
a4eb86c3df
browser(firefox): update styles when changing color scheme (#3407)
`MediaFeatureValuesChanged` is what their devtools code uses to update the styles. I tried using their code directly, but it doesn't play nicely with navigations so I decided to stick with ours.
2020-08-13 12:16:00 -07:00
Andrey Lushnikov
915902c858
browser(firefox): roll Firefox to roughly July, 15 (#3411) 2020-08-12 10:09:20 -07:00
Dmitry Gozman
da95b73b59
browser(firefox): emit iframe lifecycle when initial navigation fails (#3389) 2020-08-11 16:05:34 -07:00
Yury Semikhatsky
538daf3302
browser(firefox): exclude frame from screencast video (#3372) 2020-08-10 15:10:12 -07:00
Andrey Lushnikov
a225447653
browser(firefox): introduce global proxy (#3335)
This will be used instead of messing up user preferences for proxy
setup.
2020-08-07 15:38:06 -07:00
Andrey Lushnikov
ca3bd5e2ef
browser(firefox): roll Firefox to June, 24 (#3327)
Review URL: 83e6f0114e

References #3215
2020-08-06 10:32:50 -07:00
Yury Semikhatsky
9effb32650
browser(firefox): always create new process rather than reuse one (#3312) 2020-08-05 15:48:26 -07:00
Yury Semikhatsky
90819fa350
browser(firefox): always create image buffer in headless mode (#3299) 2020-08-04 17:58:57 -07:00
Yury Semikhatsky
7e28c26f6d
browser(firefox): do not complain about SnapshotListener being cleared on Destroy (#3298) 2020-08-04 17:38:46 -07:00
Andrey Lushnikov
25089760fd
devops: fix typo in rustup detection (#3282)
This should bring back docker build.
2020-08-04 00:02:14 -07:00
Dmitry Gozman
d3a40be479
browser(firefox): reliably close the pipe (#3280) 2020-08-03 20:15:25 -07:00
Dmitry Gozman
402d1a6a67
browser(firefox): fix win compile 2 (#3277) 2020-08-03 15:26:12 -07:00
Dmitry Gozman
e481f378f1
browser(firefox): fix win compile (#3275) 2020-08-03 14:42:16 -07:00
Dmitry Gozman
1148f0b906
browser(firefox): implement RemoteDebuggingPipe (#3273) 2020-08-03 13:27:09 -07:00
Andrey Lushnikov
9103ce0060
devops: fix firefox build (#3237) 2020-07-30 11:50:52 -07:00
Andrey Lushnikov
4961c2ddbb
devops(firefox): fixate rust and cbindgen version (#3223)
Firefox buildchain does not fixate `rust` and `cbindgen` versions,
so we want to fixate them on our end.

A table with matching rust version for every firefox version can
be found at [Rust Update Policy for Firefox](https://wiki.mozilla.org/Rust_Update_Policy_for_Firefox).

Additionally, there are checks in `mozbuild` for the minimum
rust version and minimum `cbindgen` version.
2020-07-30 09:59:39 -07:00
Joel Einbinder
3e023f6c3d
Revert "browser(firefox): fix color scheme not updating until reload" (#3198) 2020-07-28 13:46:37 -07:00
Dmitry Gozman
14c6881904
browser(firefox): properly rewrite intercepted request (#3188) 2020-07-28 11:32:44 -07:00
Yury Semikhatsky
da25a5b501
browser(firefox): do not capture cursor in screencast (#3118) 2020-07-27 16:22:02 -07:00
Joel Einbinder
549a37b939
browser(firefox): fix color scheme not updating until reload (#3157) 2020-07-24 16:01:45 -07:00
Andrey Lushnikov
678d16454a
devops: normalize blob names on the CDN (#3136)
This establishes a single naming for all our blobs with browser
builds that we upload to CDN: `<browser-name>-<os-version>`

- `<browser-name>` is either `firefox` or `webkit`.
- `os-version` is the OS that was used to produce the build.

References #2745
2020-07-24 00:31:18 -07:00
Andrey Lushnikov
63689e36a6
devops: prepare buildbots to the introduction of Ubuntu 20.04 builder (#3116)
This patch:
- specializes "linux" scripts into "Ubuntu 18.04" scripts
- renames all future linux blobs on CDN:
    * `firefox-linux.zip => firefox-ubuntu-18.04.zip`
    * `minibrowser-gtk.zip => minibrowser-gtk-ubuntu-18.04.zip`
    * `minibrowser-wpe.zip => minibrowser-wpe-ubuntu-18.04.zip`
    * `minibrowser-gtk-wpe.zip => minibrowser-gtk-wpe-ubuntu-18.04.zip`
- updates downloader to deal with the new names

References #2745
2020-07-23 11:59:23 -07:00
Yury Semikhatsky
3d37e4586e
browser(firefox): pass actual frame duration to the codec (#3101)
#1158
2020-07-22 23:27:49 -07:00
Yury Semikhatsky
babd0cbcea
browser(firefox): fix Windows build (#3065) 2020-07-21 10:02:14 -07:00
Pavel Feldman
7f29275aa2
browser(firefox): use base64 to deliver post data (#3063) 2020-07-21 09:55:46 -07:00
Yury Semikhatsky
a5cb983768
browser(firefox): write video to .webm instead of .ivf (#3062) 2020-07-21 09:26:59 -07:00
Pavel Feldman
726f636b5c
browser(firefox): implement Page.bringToFront (#3051) 2020-07-20 16:47:27 -07:00
Yury Semikhatsky
6db8962125
browser(firefox): smooth resize in headless (#3043) 2020-07-20 14:24:52 -07:00
Yury Semikhatsky
d1f937d651
browser(firefox): stop video recording if page closed (#3040) 2020-07-20 10:44:11 -07:00
Yury Semikhatsky
562e1e6460
browser(firefox): wait for file write to finish in stopVideoRecording (#3020) 2020-07-17 17:34:09 -07:00
Yury Semikhatsky
89ccf99b90
browser(firefox): screencast for Mac headful (#2985) 2020-07-16 15:34:33 -07:00
Yury Semikhatsky
b7f7ba9230
browser(firefox): screencast support for Windows headful (#2965) 2020-07-15 16:58:58 -07:00
Yury Semikhatsky
0aff9bef11
browser(firefox): screencast for headless mac (#2956) 2020-07-15 09:37:08 -07:00
Yury Semikhatsky
89ca2db36c
browser(firefox): kick off new build after last commit (#2948) 2020-07-14 12:49:04 -07:00
Yury Semikhatsky
de40329126
browser(firefox): add new files for headless screencast (#2947) 2020-07-14 12:25:41 -07:00
Yury Semikhatsky
bf6f22d812
browser(firefox): basic screencast for headless (#2931) 2020-07-14 11:20:36 -07:00
Yury Semikhatsky
baaa65492b
browser(firefox): resize window when changing viewport (#2861) 2020-07-07 14:04:07 -07:00
Yury Semikhatsky
9640dbf2a6
browser(firefox): exclude browser controls from screencast (#2855) 2020-07-07 09:40:09 -07:00
Yury Semikhatsky
fc18f2f38a
browser(firefox): support screencast frame size and scale configuration (#2847) 2020-07-06 11:28:35 -07:00
Yury Semikhatsky
6aef045fd4
browser(firefox): create new window for each new page (#2823) 2020-07-02 14:46:57 -07:00
Andrey Lushnikov
b1b6d3f531
devops: add signature to BUILD_NUMBER to force rebaseline (#2810)
Currently, it might happen that two different patches clash for the
same build number for the browsers. In this case, authors might
not even know that they need to rebaseline.

This patch starts adding a second line to `BUILD_NUMBER` files - the
signature and date of the `BUILD_NUMBER` change. These are guaranteed
to clash, so it should not be possible to land patches without
re-baselining them.
2020-07-02 12:09:27 -07:00
Yury Semikhatsky
605257b1a0
browser(firefox): Win build fix (#2822) 2020-07-02 11:20:25 -07:00
Yury Semikhatsky
024cb1ddc1
browser(firefox): basic screencast implementation for GTK (#2818) 2020-07-02 10:43:04 -07:00
Dmitry Gozman
991e8d42c6
browser(firefox): report errors from workers (#2797)
There is no exceptionFlag anymore, so we check the logLevel instead.
2020-07-01 14:49:14 -07:00
Dmitry Gozman
c4e3ed85c0
browser(firefox): handle the case when inner window is restored from history (#2791)
When innerWindow is restored from the history state, we do not receive
content-document-global-created notification, but would still like to know
that window is now using a different inner window to reset the state.
This introduces a new notification juggler-dom-window-reused.

At the same time, goBack()/goForward() sometimes do not initiate
navigation synchronously, so our check for pendingNaivgationId() does
not work. Instead, we rely on canGoBack, and assume that client will
not need the navigationId synchronously.
2020-07-01 13:28:13 -07:00
Dmitry Gozman
687067831a
browser(firefox): do not fail when decoding large responses (#2671) 2020-06-22 16:01:16 -07:00
Dmitry Gozman
3d49af2537
browser(firefox): fix redirect interception (#2672)
We sometimes receive shouldIntercept for redirects,
and should not issue sendOnRequest for the second time.
2020-06-22 15:57:05 -07:00
Dmitry Gozman
2fa32f7e9c
browser(firefox): rewrite network instrumentation (#2638)
This change introduces NetworkRequest object that encapsulates
internal redirects as they happen in netwerk/ stack.

NetworkRequest now serves as both ResponseBodyListener and NotificationCallbacks.
2020-06-20 20:45:01 -07:00
Dmitry Gozman
c544bffee3
browser(firefox): stop faking intercepting redirects (#2618)
We just cannot do it, so we report redirects as intercepted: false.
2020-06-18 10:40:34 -07:00
Andrey Lushnikov
082bb3c3c4
browser(firefox): rely on upstream permission separation per contexts (#2613) 2020-06-17 14:57:47 -07:00
Dmitry Gozman
ab5f5c8b78
browser(firefox): another way to report elements without layout object (#2597) 2020-06-16 21:38:32 -07:00
Dmitry Gozman
f2af30cf90
browser(firefox): properly instrument requests intercepted by service worker (#2594)
When httpChannel is intercepted by Service Worker:
- it gets an internal redirect to another channel with the same id;
- once serivce worker responds, the channel gets the data, but
  does not get any onResponse notifications.

So, we update our ResponseBodyListener (the nsIRequestObserver implementation)
to the new request and force onResponse from there once data is available or
request finishes.
2020-06-16 17:19:01 -07:00
Dmitry Gozman
9e7ea3ff7b
browser(firefox): Page.scrollIntoViewIfNeeded throws for invisible elements (#2584)
This is similar to other browsers that report distinct errors for
'not connected' vs 'not visible' cases.
2020-06-16 06:13:58 -07:00
Andrey Lushnikov
3bff136825
chore: bump firefox build number
Bots were updated; kicking all bots to build firefox.
2020-06-09 23:42:10 -07:00
Andrey Lushnikov
31da3d3720
browser(firefox): roll Firefox to TOT beta branch as of Jun 9, 2020 (#2520)
With this roll, we now require MacOS 10.11 SDK to build on Mac.
2020-06-09 22:48:10 -07:00
Dmitry Gozman
ee3379a80f
browser(firefox): remove non-existing files from build (#2507) 2020-06-08 17:04:37 -07:00
Dmitry Gozman
ac88f98999
browser(firefox): properly hide scrollbars in all frames (#2505) 2020-06-08 15:54:47 -07:00
Pavel Feldman
4ec215a88b
browser(firefox): allow setting download behavior of default context (#2502) 2020-06-08 13:49:33 -07:00
Andrey Lushnikov
a26311a18a
browser(firefox): support proxy bypass (#2467) 2020-06-04 16:07:45 -07:00
Andrey Lushnikov
95ef71c43c
devops: support --juggler argument for firefox/build.sh script (#2472) 2020-06-04 14:26:51 -07:00
Andrey Lushnikov
3c9699dc7c
browser(firefox): support Browser.setProxy method in juggler (#2464)
This lets us support network proxies per browser context.
2020-06-04 08:52:43 -07:00
Andrey Lushnikov
a3f34fb4b7
chore: export juggler as a standalone folder for browser build (#2432)
This leaves our firefox diff to gecko instrumentation changes only.

Drive-by: rename webkit "src" folder into "embedder".
2020-06-02 16:51:13 -07:00
Pavel Feldman
fdd8df608f Revert "browser(firefox): allow passing user preferences at launch time (#2416)" 2020-05-29 22:25:25 -07:00
Pavel Feldman
a247f7d2a5
browser(firefox): allow passing user preferences at launch time (#2416) 2020-05-29 16:15:36 -07:00
Andrey Lushnikov
0ed052f9e9
browser(firefox): expose internal request cause along with external one (#2383) 2020-05-28 09:23:14 -07:00
Dmitry Gozman
5d0b5625fa
browser(firefox): set initial page url to about:blank (#2300) 2020-05-19 10:30:36 -07:00
Dmitry Gozman
40ea0dd23b
browser(firefox): make default viewport work in default context (#2277) 2020-05-18 09:47:40 -07:00
Joel Einbinder
5a883a5877
browser(firefox): support internal drag and drop (#2243) 2020-05-14 18:30:02 -07:00
Dmitry Gozman
fdc9ce8e07
browser(firefox): move context settings from creation to setters (#2193)
Drive-by: simplify settings plumbing, fix addBinding bug.
2020-05-12 07:32:25 -07:00
Pavel Feldman
59e9b5c017 browser(firefox): kick bots 2020-05-07 19:51:01 -07:00
Pavel Feldman
e247506169
browser(firefox): roll ff to ToT 5/7/2020 (#2148) 2020-05-07 18:37:15 -07:00
Dmitry Gozman
98d32c5d67
browser(firefox): do not fail when decoding large responses (#2130)
String.fromCharCode cannot be used to convert very large arrays to strings. Use chunking in this case.
2020-05-07 11:04:58 -07:00
Dmitry Gozman
10cca041fb
browser(firefox): ensure rendering update before taking quads and scrolling (#2123) 2020-05-06 10:20:18 -07:00
Pavel Feldman
7e9a8dd402 browser(firefox): bump the version 2020-05-04 16:09:42 -07:00
Andrey Lushnikov
de32d39988
Revert "devops: teach buildbots to run sanity check script (#2064)" (#2075)
This reverts commit 4c2c4855f7.
We'd rather add a mac 10.14 test bot.
2020-05-01 12:09:36 -07:00
Andrey Lushnikov
4c2c4855f7
devops: teach buildbots to run sanity check script (#2064)
This should make sure that build actually runs.
2020-04-30 17:42:52 -07:00
Yury Semikhatsky
b6d1cbf402
browser(firefox): report new window downloads (#2014) 2020-04-28 14:20:07 -07:00
Yury Semikhatsky
a43eac3809
browser(firefox): use separate web processes for different contexts (#1975) 2020-04-24 17:55:08 -07:00
Yury Semikhatsky
05f0797211
browser(firefox): support blob downloads (#1945) 2020-04-23 14:26:00 -07:00
Joel Einbinder
48cbee1c32
browser(firefox): disable the extension blocklist (#1909)
This saves a few hundred milliseconds.
2020-04-21 17:59:27 -07:00
Pavel Feldman
846af74b05
browser(firefox): do not use system colors for controls (#1838) 2020-04-16 18:13:53 -07:00
Yury Semikhatsky
77f1a70332
browser(firefox): send requestFailed on network error (#1816) 2020-04-16 11:11:15 -07:00
Pavel Feldman
a46a32426e
browser(firefox): roll to ToT 4/15/2020 (#1815) 2020-04-15 17:31:59 -07:00
Yury Semikhatsky
f3451d9148
browser(firefox): focus all top frames by default (#1811) 2020-04-15 15:22:47 -07:00
Yury Semikhatsky
f05a8bdc0c
browser(firefox): override document.hasFocus() in main frames (#1802) 2020-04-15 14:41:18 -07:00
Dmitry Gozman
cbad583f8a
browser(firefox): prepare to collect signals during actions (#1772) 2020-04-15 12:02:08 -07:00
Yury Semikhatsky
d5e75d8bb7
browser(firefox): avoid clobbering scroll requests after scrollIntoViewIfNeeded (#1785)
5ef35728ff

If there is a pending visual update `AsyncPanZoomController::NotifyLayersUpdated` will override scroll offset set from layout with the visual one. See [`visualScrollOffsetUpdated`](http://ffsearch.azurewebsites.net/#path=%2Fhome%2Fjoe%2Ffirefox%2Fgfx%2Flayers%2Fapz%2Fsrc%2FAsyncPanZoomController.cpp&line=4530) and its comment in the method.
2020-04-14 16:24:36 -07:00
Yury Semikhatsky
126b54f767
browser(firefox): implement Page.scrollIntoViewIfNeeded (#1759) 2020-04-13 11:31:02 -07:00
Yury Semikhatsky
f282400e1f
fix(firefox): disable captive portal service (#1737) 2020-04-09 19:03:36 -07:00
Yury Semikhatsky
db34d436ec
browser(firefox): make juggler web socket work in -silent mode (#1726) 2020-04-09 10:57:24 -07:00
Yury Semikhatsky
aff2ffacf8
browser(firefox): manage network activity per page (#1700)
a33663a362

Network events are now sent to corresponding page session. Previously they would be broadcast to all sessions.
2020-04-07 23:03:43 -07:00
Yury Semikhatsky
becf97f30d
browser(firefox): report navigation request failure for downloads (#1688) 2020-04-07 00:38:27 -07:00
Yury Semikhatsky
7b2736b4c9
browser(firefox): support downloads (#1683) 2020-04-06 23:34:30 -07:00
Pavel Feldman
56fbfc2c9e
fix(firefox): do not make stray network requests (#1673) 2020-04-06 12:27:13 -07:00
Pavel Feldman
11ad172822
browser(firefox): allow setting colorScheme on the context level (#1672) 2020-04-06 12:26:42 -07:00
Dmitry Gozman
fc73d54039
browser(firefox): instrument all browser windows early enough (#1645) 2020-04-03 15:31:26 -07:00
Yury Semikhatsky
e76f8de474
browser(firefox): reland "instrument all windows, support silent mode" with Linux fix (#1634) 2020-04-01 21:06:44 -07:00
Yury Semikhatsky
cf49a9ee7b
browser(firefox): make timezone override work on Win (#1628)
68e0c2c6c6
2020-04-01 14:10:30 -07:00
Yury Semikhatsky
1da2141acc
browser(firefox): delete Browser.setIgnoreHTTPSErrors (#1616) 2020-03-31 22:44:09 -07:00
Yury Semikhatsky
4ac98daa3c
browser(firefox): set ignoreHTTPSErrors per context (#1614)
28fc96628e
2020-03-31 17:32:50 -07:00
Yury Semikhatsky
2ce85f9016
Revert "browser(firefox): instrument all windows, support silent mode… (#1615) 2020-03-31 17:20:08 -07:00
Dmitry Gozman
314eb40a13
browser(firefox): instrument all windows, support silent mode (#1612)
Includes 4b00d5dd71 and `playwright.cfg` change.
2020-03-31 16:16:44 -07:00
Yury Semikhatsky
d0073ef9e5
chore(firefox): update cheatsheet with logging instructions (#1609) 2020-03-31 13:23:35 -07:00
Yury Semikhatsky
43b91e6930
browser(firefox): implelemt timezone overrides (#1577) 2020-03-30 15:05:46 -07:00
Dmitry Gozman
fdc36125be
browser(firefox): refactor targets/contexts/dispatching (#1590) 2020-03-30 13:57:12 -07:00
Dmitry Gozman
3535a829a3
browser(firefox): emulate device size (#1561) 2020-03-26 18:42:21 -07:00
Yury Semikhatsky
4826b3aca5
browser(firefox): make locale override apply to Number/Date formatting (#1560) 2020-03-26 16:33:07 -07:00
Dmitry Gozman
9d0f465ebe
browser(firefox): make call argument properties configurable (#1558) 2020-03-26 15:52:24 -07:00
Andrey Lushnikov
b1c156f422
browser(firefox): fix user gesture in evaluation (#1550)
Review URL: 37851a6e27
2020-03-25 23:58:30 -07:00
Andrey Lushnikov
09cbf335bd
browser(firefox): wait for script to be evaluated in Worker (#1543)
Review URL: b70c1ff8c5
2020-03-25 17:39:50 -07:00
Yury Semikhatsky
2203e9c017
browser(firefox): bypass CSP when calling functions from debugger (#1541) 2020-03-25 16:28:33 -07:00
Pavel Feldman
6be3634356
browser(firefox): fix permissions check and notifications name (#1530) 2020-03-25 09:55:41 -07:00
Andrey Lushnikov
aba670d719
browser(firefox): roll Firefox (#1534)
Review URL: 2fda0f5fc8
2020-03-24 23:25:17 -07:00
Pavel Feldman
8af21d146c
browser(firefox): fix authentication (#1524) 2020-03-24 21:17:55 -07:00
Yury Semikhatsky
1f48efe417
browser(firefox): ignore beforeunload handlers in Browser.close() (#1526) 2020-03-24 20:51:21 -07:00
Andrey Lushnikov
c28c5a6455
browser(firefox): make Runtime a global object shared between sessions (#1458)
Review URL: 88261ea669

Key points:
- `Runtime` is now shared between protocol sessions
- `RuntimeAgent` does not exist any more and is merged into `PageAgent` for Page
- `RuntimeAgent` is re-implemented in a worker
2020-03-23 16:21:39 -07:00
Pavel Feldman
9826fd652e
browser(firefox): disable update, setting sync and other non-testing features (#1480) 2020-03-22 23:52:59 -07:00
Pavel Feldman
049fdf708c
browser(firefox): implement Browser.addBinding (#1477) 2020-03-22 21:10:00 -07:00
Pavel Feldman
ac5852f302
browser(firefox): implement offline emulation (#1475) 2020-03-22 13:51:49 -07:00
Dmitry Gozman
fb7b919bd4
browser(firefox): make interception, locale and geolocation work on browser context level (#1469) 2020-03-21 21:35:13 -07:00
Dmitry Gozman
ac02a6b69c
browser(firefox): issue Page.ready at the right time (#1462)
This covers new pages and popups. Special handling is needed for window.open() with no url.
2020-03-21 17:56:15 -07:00
Andrey Lushnikov
96c9c81581
browser(firefox): fix bug in Juggler with clashing method names (#1456) 2020-03-20 19:35:58 -07:00
Andrey Lushnikov
21630d6de4
devops: strictly configure build folder for Firefox builds (#1454)
This strictly defines Firefox build folder as `obj-build-playwright`.

Currently, Firefox build folder encodes current Mac OS version including
patch versions, and thus we might end up with multiple different build
folders.
2020-03-20 19:24:38 -07:00
Pavel Feldman
840e69b85c
browser(firefox): emulate language (#1452)
1e29e6f231
2020-03-20 17:03:20 -07:00
Pavel Feldman
fcdfa9ca24
browser(firefox): implement geolocation overrides (#1437) 2020-03-20 11:14:42 -07:00
Pavel Feldman
edd2fee943
browser(firefox): grant permissions to all origins (#1405) 2020-03-16 20:57:19 -07:00
Andrey Lushnikov
3b85bf9c1f
browser(firefox): handle message manager error event without error (#1344)
Type TypeError that happens while loading document is reported in
the message manager but does not have the error event.

Saw this while reproducing #1307
2020-03-11 13:37:31 -07:00
Andrey Lushnikov
996f97a6c0
browser(firefox): roll Firefox to current beta (#1276)
Review URLs: 
- Fixing request interception; ad69da0f74
- Fixing eval with user input: 381c1df5c6
2020-03-06 18:25:27 -08:00
Dmitry Gozman
29f243056c
browser(firefox): merge Target domain into Browser, rework default context attach (#1259) 2020-03-06 14:58:35 -08:00
Andrey Lushnikov
8c9933e0f5
browser(firefox): move Juggler to top-level (#1254)
Review URL: 5ba06e6d7a

Drive-by: fix re-baseline over r1036
2020-03-05 17:20:07 -08:00
Dmitry Gozman
9d3bff1cf9
browser(firefox): implement Browser.setHTTPCredentials (#1251) 2020-03-05 16:37:44 -08:00
Andrey Lushnikov
b0d037ecfe
browser(firefox): fix flaky permissions in Firefox (#1249)
Review URL: 9bd6e72005

Wait for permissions to propagate to all context pages.

References #720
2020-03-05 14:31:57 -08:00
Andrey Lushnikov
20c326378c
browser(firefox): follow-up with SimpleChannel unification (#1246)
Review URL: 141f30f450

Address all comments in 1bf5b61cbb
2020-03-05 13:16:43 -08:00
Pavel Feldman
2cd727f675
browser(firefox): signal link click (#1236) 2020-03-05 11:59:29 -08:00
Andrey Lushnikov
1bf5b61cbb
browser(firefox): move workers to use SimpleChannel (#1232)
Review URL: 4753d0121f

This patch:
- Moves Workers to FrameTree
- Introduces WorkerData in PageAgent that proxies runtime agent
  in worker to browser process
- Introduces WorkerHandler in PageHandler that handles communicates
  with runtime agent in worker and handles Juggler protocol

As part of this patch, SimpleChannel no longer manages lifetime of
any of its handlers.
2020-03-04 21:18:56 -08:00
Pavel Feldman
a69c85f5f8
chore: added ff cheat sheet 2020-03-04 20:09:05 -08:00
Andrey Lushnikov
31278408db
browser(firefox): introduce SimpleChannel (#1209)
Review URL: 6364381adc

Refactor inter-process communication inside Firefox. The goal is
to have a single abstraction that works nicely for all our cross-process
communication needs (browser <-> content, content <-> workers, content
<-> file:// process, e.t.c.)

This is step 1 that eliminates content sessions everywhere.
Step 2 will move workers onto `SimpleChannel` as well.

This is a pre-requisite for #720: with a single `browser <-> content`
communication channel it will be easier to await permission change in tabs.

References #720
2020-03-04 14:33:49 -08:00
Dmitry Gozman
ee9c7f1886
browser(firefox): support BrowserContext.evaluateOnNewDocument (#1135)
70ee31b2d4
2020-02-26 15:40:41 -08:00
Dmitry Gozman
facf2c24fd
browser(firefox): support BrowserContext.setExtraHTTPHeaders (#1111) 2020-02-25 17:24:06 -08:00
Andrey Lushnikov
e3b2f2b2db
browser(firefox): allow loading file URLs in web process (#1110) 2020-02-25 16:07:22 -08:00