Commit Graph

368 Commits

Author SHA1 Message Date
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
Dmitry Gozman
c2ab1e31f7
browser(firefox): misc fixes (#983)
- crash support;
- keydown supports text by committing composition;
- cross-page frame handling;
- security check for node adoption.
2020-02-13 10:46:46 -08:00
Dmitry Gozman
d37b67a833
browser(firefox): do not wait for initial navigation in default context (#937)
0a70be2bc6
2020-02-11 16:25:35 -08:00
Andrey Lushnikov
efa567d1b4 devops: fix firefox preferences build on mac 2020-02-11 16:22:31 -08:00
Andrey Lushnikov
3a32b14f32 devops: bundle firefox preferences alongside with build. 2020-02-11 14:42:04 -08:00
Dmitry Gozman
9ea8f49cd1
browser(firefox): attach to all pages in the browser context (#928)
- introduce BrowserContext abstraction;
- attach to all pages from owned browser contexts on creation;
- move page emulation to PageTarget/FrameTree, away from sessions and agents;
- remove explicit enable methods, replaced by Page.ready event;
- pass browser context options on creation.

c73fb4450e
2020-02-11 11:32:37 -08:00
Andrey Lushnikov
ffc8f961da
browser(firefox): bump build number to r1025 2020-02-06 16:14:39 -08:00
Dmitry Gozman
9f0bbfff2c
browser(firefox): pause page on creation to handle emulation messages (#871)
153a95c23a
2020-02-06 16:07:52 -08:00
Andrey Lushnikov
8c6faab012
browser(firefox): roll firefox to upstream's beta (#876) 2020-02-06 15:21:06 -08:00
Pavel Feldman
6202ff12fd
browser(firefox): use guids for browser contexts, delete contexts on disconnect (#866) 2020-02-06 13:41:25 -08:00
Dmitry Gozman
0cc26c0fe6
browser(firefox): introduce Page.scrollIntoViewIfNeeded (#848)
1cfb6fd4cc
2020-02-05 14:57:30 -08:00
Joel Einbinder
44829d6fdf
browser(firefox): wait for pending accessibility updates (#755)
Should fix some flaky accessibility tests on Firefox for mac.
2020-01-29 18:56:11 -08:00
Andrey Lushnikov
e64fd173bb devops: fix firefox building script on Mac 10.15.1 2020-01-29 11:55:29 -08:00
Pavel Feldman
7af1d12d25 browser(firefox): use unguessable web socket address (#722)
References #705
2020-01-28 14:03:19 -08:00
Pavel Feldman
19da86b4c9 browser(firefox): amend method & postData upon continue (#716) 2020-01-28 13:04:09 -08:00
Joel Einbinder
717159094c browser(firefox): wait for startup before closing the browser (#575) 2020-01-22 19:56:56 -08:00
Dmitry Gozman
1c96d42a4b browser(firefox): support request interception (#572)
10558a7ead
2020-01-22 17:21:25 -08:00
Andrey Lushnikov
5f656f55b1 browser(firefox): bump build number
This is a follow-up to 2520dedb41
2020-01-17 17:05:31 -08:00
Dmitry Gozman
2520dedb41
browser(firefox): support workers (#526)
a0549a0f64
2020-01-17 16:40:30 -08:00
Andrey Lushnikov
e750da376e devops: fix firefox's archive.sh 2020-01-17 15:36:22 -08:00
Andrey Lushnikov
928d04dc26 chore: bump browser numbers to test new intrastructure 2020-01-17 14:28:17 -08:00
Dmitry Gozman
b4686f1eb9 browser(firefox): assorted fixes for evaluation and remote objects (#510) 2020-01-16 14:11:33 -08:00
Dmitry Gozman
7785fd8191 browser(firefox): support isolated worlds (#500)
211f1f1bff
2020-01-16 11:52:22 -08:00
Andrey Lushnikov
2387727b42
browser(firefox): improve firefox protocol types (#490)
Review URL: d8f3090d4a
2020-01-14 14:04:03 -08:00
Andrey Lushnikov
e57c9063b6 Revert "Revert "browser(firefox): roll Firefox to 2b50ccdc8ad0c83966285352a875415a858037c2 (#451)""
This reverts commit 350b256722.

Reason: buildbots were failing to compile new FF because their
cbindgen was outdated. This is now fixed on both Mac & Win.
2020-01-11 01:20:39 +01:00
Pavel Feldman
350b256722 Revert "browser(firefox): roll Firefox to 2b50ccdc8ad0c83966285352a875415a858037c2 (#451)"
This reverts commit d3e127a0c1.
2020-01-10 12:19:12 -08:00
Andrey Lushnikov
d3e127a0c1 browser(firefox): roll Firefox to 2b50ccdc8ad0c83966285352a875415a858037c2 (#451)
Review URL: c3a577c46d

With this roll, Firefox has DocumentChannel enabled by default in Desktop Firefox:
- https://phabricator.services.mozilla.com/D57898

DocumentChannel, unlike nsIHttpChannel, doesn't have a `channelId` that we
can use to attribute navigation requests (see
https://github.com/microsoft/playwright/pull/249).

The feature has to be disabled for now in PlayWright with the
`browser.tabs.documentchannel` pref until we figure how to support it.
2020-01-10 10:50:03 -08:00
Joel Einbinder
85985155d0 feat(firefox): pass in a node to getFullAXTree (#388) 2020-01-06 16:32:29 -08:00
Pavel Feldman
b64bd35c23
feat(evaluate): survive null JSON (#351) 2020-01-02 12:13:18 -08:00
Andrey Lushnikov
46483ed009 browser(firefox): support late attach (#282) 2019-12-17 15:07:25 -08:00
Andrey Lushnikov
39357c3f6c fix(devops): use full SHAs in diffs
Different GIT setups export different length of shortsha.
With this, always export full SHA.
2019-12-16 16:17:56 -08:00
Dmitry Gozman
927669b890 feat(firefox): provide navigationId for navigation requests (#249) 2019-12-14 08:21:23 -08:00
Pavel Feldman
4fd241e4ae fix(ff): follow up to the roll, fix permissions 2019-12-13 20:56:49 -08:00
Pavel Feldman
08f0823873 browser(firefox): roll FF to beta ToT (#245) 2019-12-13 16:37:45 -08:00
Dmitry Gozman
4861152766 browser(firefox): instrument document.open load event (#218) 2019-12-11 17:53:46 -08:00
Andrey Lushnikov
9e381a9d50 devops(firefox): move packaging to archive.sh 2019-12-11 16:56:49 -08:00
Andrey Lushnikov
20be65b1c9 devops(scripts): export diffs instead of patches
This changes `export.sh` to export diffs instead of patches.
`export.sh` now does not touch working directory, thus not
triggering clean builds and not intefering with an on-going
build.
2019-12-10 15:41:58 -08:00