Yury Semikhatsky
0fbc7af26d
chore(targets): create page targets only when attached to them ( #1278 )
2020-03-09 15:53:45 -07:00
Andrey Lushnikov
e650628e3d
fix(chromium): fix device-related media queries ( #1299 )
...
References #1291
2020-03-09 15:53:31 -07:00
Andrey Lushnikov
d1ef0c8694
fix(wk,ff): properly support getting and setting non-session cookies ( #1280 )
2020-03-07 08:41:57 -08:00
Yohix
bfd32fe6d2
doc: fix typos ( #1284 )
2020-03-07 08:37:47 -08:00
Pavel Feldman
78bd29d558
fix(click): work around input alignment on chromium ( #1282 )
2020-03-07 08:19:31 -08:00
Yury Semikhatsky
8211287a23
fix(session): use isolated root session for client page sessions ( #1271 )
2020-03-06 15:11:03 -08:00
Andrey Lushnikov
c494944b46
api(popups): move Page.authenticate to BrowserContext.setHTTPCredentials ( #1267 )
...
Drive-by: fixes #720 since it rolls past r1037.
Co-authored-by: Dmitry Gozman <dgozman@gmail.com>
2020-03-06 13:50:42 -08:00
Pavel Feldman
2724157c22
feat(waitUntil): allow waiting for navigation from clicks, etc ( #1255 )
2020-03-06 08:24:32 -08:00
Yury Semikhatsky
9bc6dcea1d
feat(api): introduce BrowserContext.waitForEvent ( #1252 )
2020-03-05 17:22:57 -08:00
Dmitry Gozman
e5f82af47c
api(popups): emit PageEvent immediately, and resolve page() once initialized ( #1229 )
...
This way we do not miss any popups, even immediately closed ones.
2020-03-05 15:18:27 -08:00
Yury Semikhatsky
665888d579
feat(popups): auto-attach to all pages in Chromium ( #1226 )
2020-03-05 10:45:32 -08:00
Yury Semikhatsky
aabdac8380
api: remove Page.setCacheEnabled ( #1231 )
2020-03-05 10:09:04 -08:00
Pavel Feldman
11f68bac54
feat(cr, wk): make clicks, input and evaluate await scheduled navigations ( #1200 )
2020-03-04 19:15:01 -08:00
Dmitry Gozman
7f9df9488e
api(popups): move Page.setOfflineMode -> BrowserContext.setOffline ( #1223 )
2020-03-04 17:58:12 -08:00
Dmitry Gozman
3bedc60b2b
fix(dispose): do not await inner handle dispose ( #1230 )
2020-03-04 17:57:35 -08:00
Joel Einbinder
8aa88d5021
fix(doc): check and update optional types in the api ( #1206 )
...
This adds a new check to doclint for whether a member is correctly marked as optional.
part of #6
2020-03-03 17:29:12 -08:00
Dmitry Gozman
1c4619e5e0
fix(chromium/webkit): fix a race between Page.enable and Page.getResourceTree ( #1201 )
2020-03-03 17:15:43 -08:00
Dmitry Gozman
6c6cdc033b
api(popup): introduce BrowserContext.exposeFunction ( #1176 )
2020-03-03 16:46:06 -08:00
Dmitry Gozman
1b863c2300
fix(screenshots): simplify implementation, allow fullPage + clip, add tests ( #1194 )
2020-03-03 16:09:32 -08:00
Yury Semikhatsky
31e26a2208
fix(api): fire BrowserContext.Page event in WebKit and Firefox ( #1186 )
2020-03-02 18:32:56 -08:00
Yury Semikhatsky
a57978a5f0
api(chromium): remove Target from public API ( #1163 )
2020-03-02 13:58:22 -08:00
Yury Semikhatsky
f242e0c74f
fix: make Transport.send() synchronous ( #1177 )
2020-03-02 13:51:32 -08:00
Dmitry Gozman
ac2f04f10f
api(selectors): pass selector name when registering, allow file path ( #1162 )
2020-02-28 15:34:07 -08:00
Dmitry Gozman
823bf389a7
api: evaluateOnNewDocument -> addInitScript ( #1152 )
...
Also adds more options to specify the script.
2020-02-27 17:42:14 -08:00
Dmitry Gozman
7682865d73
feat(popups): add BrowserContext.evaluateOnNewDocument ( #1136 )
2020-02-27 16:18:33 -08:00
Dmitry Gozman
672f3f9960
feat(popups): introduce BrowserContext.setDefaultHTTPHeaders ( #1116 )
2020-02-26 12:42:20 -08:00
Yury Semikhatsky
4f69930fbe
fix(chromium): make locale overrides work ( #1108 )
2020-02-26 11:01:46 -08:00
Pavel Feldman
3afaeef557
feat(socket): destroy contexts upon disconnect ( #1119 )
2020-02-26 11:01:01 -08:00
Dmitry Gozman
6acc439450
feat(api): move targets from CRBrowser to CRBrowserContext ( #1089 )
...
This makes them work for default context.
2020-02-24 14:35:51 -08:00
Dmitry Gozman
a43b4095e1
chore: make BrowserContext an interface, with 3 implementations ( #1075 )
...
This is in preparation for moving targets to BrowserContext, so that one can work with targets in default context.
2020-02-24 08:53:30 -08:00
Dmitry Gozman
3677818202
fix(api): browser.serviceWorker -> target.serviceWorker ( #1076 )
2020-02-24 08:31:58 -08:00
Dmitry Gozman
223685ee7b
chore: strip out injected script from protocol logs ( #1054 )
2020-02-18 19:56:59 -08:00
Pavel Feldman
cd4e9da807
feat(coverage): export raw v8 coverage ( #976 )
...
Fixes #955
2020-02-13 17:39:14 -08:00
Andrey Lushnikov
f8f818f676
Revert "Revert "feat: do not wait for first page in non-persistent mode ( #939 )""
...
Apparently a good fix is coming: https://github.com/microsoft/playwright/pull/993/
Pavel want to re-revert.
2020-02-13 13:54:01 -08:00
Andrey Lushnikov
71892b4aaa
Revert "feat: do not wait for first page in non-persistent mode ( #939 )"
...
This reverts commit a567123596 .
Reason for revert: WK-Win fails to start if we start talking over the
pipe too early.
2020-02-13 13:44:58 -08:00
Pavel Feldman
c15534ff01
fix(locale): document locale parameter ( #990 )
2020-02-13 13:37:59 -08:00
Pavel Feldman
8ed88c910a
feat(webkit): introduce BrowserContext({language}) ( #972 )
2020-02-13 12:24:17 -08:00
Pavel Feldman
53fa62910a
fix(chromium): emit focus events in headful ( #982 )
...
Fixes #979
2020-02-13 11:29:13 -08:00
Dmitry Gozman
a567123596
feat: do not wait for first page in non-persistent mode ( #939 )
2020-02-13 10:51:17 -08:00
Joel Einbinder
d367a2ed3a
chore(tests): log protocol messages when a test fails on the bots ( #963 )
...
Similarly to how we handle stdio, this captures all protocol messages and logs them when a test fails. Great for when debugging tests in parallel or for bot failures!
Currently I made `DEBUGP=true` turn this on locally, and turned it on always for the CI. Open to
suggestions for a better environment variable. I would turn it on by default always, like the stdio logging, but it adds an enormous amount of noise to our error messages.
2020-02-12 22:35:06 -08:00
Andrey Lushnikov
7ce49c2835
chore: remove WebSocket implementation ( #961 )
...
WebSocket implementation currently is very incomplete, lacking
support in WebKit-Win and Firefox.
2020-02-12 15:29:06 -08:00
Pavel Feldman
aae5fca237
feat(api): make browser.newPage own the created context ( #930 )
2020-02-11 12:06:58 -08:00
Dmitry Gozman
c69dccf7c1
feat(click): use browser-provided scrollIntoViewIfNeeded ( #893 )
2020-02-11 10:30:09 -08:00
Pavel Feldman
72b9cf010e
feat(context): introduce BrowserContext close event ( #918 )
2020-02-11 10:27:19 -08:00
Joel Einbinder
251ad38824
fix(navigations): remove LifecycleWatcher, fix flakes ( #882 )
2020-02-10 18:35:47 -08:00
Pavel Feldman
84f5700294
feat(api): rename browserContext() to context() in the apis, remove url from newPage ( #906 )
2020-02-10 10:41:45 -08:00
Joel Einbinder
73148fda79
chore(lint): add @typescript-eslint/no-unnecessary-type-assertion rule ( #898 )
2020-02-07 13:38:50 -08:00
Joel Einbinder
487d394f3b
chore(lint): add @typescript-eslint/type-annotation-spacing rule ( #897 )
2020-02-07 13:36:49 -08:00
Dmitry Gozman
fee83b17c9
fix(api): page.viewport -> page.viewportSize ( #878 )
...
We now only allow to resize the page, leaving isMobile and deviceScaleFactor as browser context options.
2020-02-06 19:02:55 -08:00
Pavel Feldman
a547aa7984
feat(connect): allow multiple webkit connections over web socket ( #863 )
2020-02-06 12:41:43 -08:00
Dmitry Gozman
6318ba6e4a
feat(frame): introduce frame.frameElement ( #856 )
...
Fixes #839 .
2020-02-05 17:20:23 -08:00
Joel Einbinder
4be39f8af0
chore(types): upgrade to typescript 3.7.5 ( #855 )
2020-02-05 16:53:36 -08:00
Dmitry Gozman
28c4a1697c
fix(chromium): ensure we resume service worker before detaching from it ( #850 )
2020-02-05 16:08:28 -08:00
Pavel Feldman
a2ab645e63
feat(launch): introduce client, server & persistent launch modes (2) ( #840 )
2020-02-05 12:41:55 -08:00
Pavel Feldman
0518625dcc
feat(launch): introduce client, server & persistent launch modes (1) ( #838 )
2020-02-04 19:41:38 -08:00
Dmitry Gozman
8f1df5e1e8
fix(chromium): pause workers on start to not miss any events ( #832 )
2020-02-04 19:36:46 -08:00
Andrey Lushnikov
0c2a2e11fd
fix: properly nullify error stacks ( #836 )
...
`error.stack` is supposed to have error message as the first line.
2020-02-04 19:31:57 -08:00
Yury Semikhatsky
25f2a32af3
feat: add Page.opener() to the API ( #790 )
...
Fixes #783
2020-01-31 18:38:45 -08:00
Pavel Feldman
ef1d2fb995
Revert "fix: move offline/cache/interception switches to BrowserContext ( #748 )" ( #793 )
...
This reverts commit 6faf74bc95 .
2020-01-31 16:23:15 -08:00
Pavel Feldman
b289bb790b
fix(filechooser): intercept file choosers lazily ( #776 )
...
Fixes #764
2020-01-30 17:43:06 -08:00
Yury Semikhatsky
6faf74bc95
fix: move offline/cache/interception switches to BrowserContext ( #748 )
2020-01-29 12:51:14 -08:00
Pavel Feldman
09e97afd22
feat(wk,ff): amend method & postData upon continue ( #703 )
...
Fixes #668
2020-01-28 14:29:46 -08:00
Dmitry Gozman
89b5d2f7be
fix(setContent): manually reset lifecycyle for all browsers at the right moment ( #679 )
2020-01-27 16:51:52 -08:00
Dmitry Gozman
541fa95ce4
fix(ownerFrame): correctly handle adopted node usecase ( #677 )
2020-01-27 11:43:43 -08:00
Dmitry Gozman
056fbbd53e
fix(api): make pipe connection the default, expose webSocket launch option ( #562 )
2020-01-23 17:45:31 -08:00
Dmitry Gozman
ac2ba3cbd9
fix(api): BrowserServer -> BrowserApp, resuse it between browsers ( #599 )
2020-01-23 14:40:37 -08:00
Dmitry Gozman
a5019ea69a
fix(api): remove remoteAddress from api ( #601 )
2020-01-23 12:13:58 -08:00
Dmitry Gozman
3269358ac8
feat(webkit): covert pipe to websocket when asked ( #570 )
2020-01-22 17:42:10 -08:00
Pavel Feldman
80c3b46a54
feat(websockets): implement support for ws on cr/wk ( #542 )
2020-01-21 11:48:48 -08:00
Dmitry Gozman
ddf47bc291
feat(worker): report workers network activity ( #545 )
2020-01-21 10:41:04 -08:00
Dmitry Gozman
82057ac610
test: make api coverage checker work ( #517 )
2020-01-16 17:46:50 -08:00
Dmitry Gozman
057e466a65
fix(api): remove network events for data: urls ( #512 )
2020-01-16 16:58:02 -08:00
Dmitry Gozman
21510a5b06
feat(firefox): support isolated worlds ( #507 )
2020-01-16 12:57:28 -08:00
Joel Einbinder
aaa1c9203e
feat(firefox&webkit): support root in accessibility.snapshot ( #495 )
...
This adds support for `root` in accessibility.snapshot
firefox role names are now normalized to aria roles where they match
webkit roledescriptions are less noisey on mac
webkit mac/linux results are further defined
interestingOnly tests are replaced by one that doesn't rely on undefined behavior
the main accessibility test was split up a bit for more refined testing.
2020-01-14 16:54:50 -08:00
Dmitry Gozman
fb1b3d9a89
chore: finish strict type checks across src ( #482 )
2020-01-13 22:08:35 -08:00
Joel Einbinder
0ea6e19b09
fix(test): failing ci tests ( #478 )
...
disables some failing Firefox tests
Moves newContext error checking before the context is created, to not create zombie contexts
sets CI timeout to 30 seconds
waits for `exit` instead of `close` for processes
2020-01-13 17:16:05 -08:00
Dmitry Gozman
a1d1f26fb7
chore: more strict type checking ( #466 )
2020-01-13 13:33:25 -08:00
Pavel Feldman
d19f10ef42
fix(geolocation): use values from context options ( #463 )
2020-01-13 13:32:44 -08:00
Pavel Feldman
a8b9920a14
feat(logging): log the API calls ( #464 )
2020-01-13 09:14:28 -08:00
Dmitry Gozman
57c3916b0c
docs: support interfaces in doclint ( #420 )
2020-01-08 14:04:33 -08:00
Dmitry Gozman
f31ae5e2ed
docs: fix docs around server apis ( #417 )
2020-01-08 14:02:53 -08:00
Dmitry Gozman
28bad69093
fix(server): tidy up BrowserServer.close methods ( #426 )
2020-01-08 13:55:38 -08:00
Dmitry Gozman
c3210d0f6d
chore: move firefox server code to src/server ( #412 )
2020-01-07 16:13:49 -08:00
Dmitry Gozman
6318b1de75
chore: move server-side code to src/server ( #411 )
2020-01-07 15:27:45 -08:00
Dmitry Gozman
f15abadc9e
chore: refactor CRBrowserServer ( #408 )
2020-01-07 14:13:55 -08:00
Dmitry Gozman
f7b0db2307
chore: merge crLauncher and crPlaywright ( #405 )
2020-01-07 13:58:23 -08:00
Pavel Feldman
55f2f5a7ec
chore: move capabilities around for better docs ( #407 )
2020-01-07 13:57:37 -08:00
Pavel Feldman
f75ac45c42
feat(workers): support workers in webkit ( #400 )
2020-01-07 12:59:01 -08:00
Dmitry Gozman
92b14cf996
chore: cleanup code around device descriptors ( #404 )
2020-01-07 12:53:06 -08:00
Dmitry Gozman
9c966c8b19
feat(pw-web): introduce platform.ts to absract between node and browser platforms ( #392 )
2020-01-07 11:55:24 -08:00
Arjun Attam
562e6f5fe1
chore(license): use Apache 2.0 ( #389 )
2020-01-06 18:22:35 -08:00
Pavel Feldman
38e79f12ec
feat(media): remove media emulation from browser context options ( #377 )
2020-01-05 14:39:16 -08:00
Dmitry Gozman
f1d6fe6bd8
chore: remove non-input related stuff from input ( #369 )
2020-01-03 12:59:06 -08:00
Joel Einbinder
790e38a678
feat(webkit): accessibility ( #350 )
...
* move accessibility out of features
* feat(webkit): accessibility
2020-01-03 11:15:43 -08:00
Pavel Feldman
fcd62b9611
feat(webkit): roll webkit to r1060, support target crash ( #364 )
2020-01-03 11:10:10 -08:00
Pavel Feldman
2d14d1ec1f
feat(geo): enable geolocation overrides on WK ( #361 )
2020-01-03 10:14:50 -08:00
Pavel Feldman
0fab90be79
feat(evaluate): survive null JSON in WK and FF ( #352 )
2020-01-02 15:06:28 -08:00
Pavel Feldman
6a04e1f026
feat(offline+auth): enable those in webkit, make them a part of the core API ( #346 )
2019-12-30 23:09:54 +01:00
Pavel Feldman
654fa22cc7
feat(webkit): enable request interception ( #343 )
2019-12-30 23:05:28 +01:00
Yury Semikhatsky
845c0af42f
chore: avoid downcast of delegate to <Browser>Page ( #334 )
2019-12-23 12:10:07 -08:00
Yury Semikhatsky
27ddb017e2
chore: rename CR/FF/WKFrameManager to CR/FF/WKPage ( #333 )
2019-12-23 11:39:57 -08:00
Yury Semikhatsky
c301623e9e
chore(wk): get rid of targetSymbol ( #332 )
2019-12-23 11:10:37 -08:00
Pavel Feldman
4638019902
feat(api): use good old inheritance instead of feature detection ( #329 )
2019-12-21 09:03:52 -08:00
Pavel Feldman
0ffc9fd4f5
docs: more iterations on the docs
2019-12-20 20:28:35 -08:00
Dmitry Gozman
735d3eeed7
feat(navigation): introduce waitForNavigationIfNeeded ( #310 )
...
This one waits for current navigation to finish, matching by url if asked.
If there is no current navigation or current navigation/url does not match,
it waits for the next matching one.
2019-12-20 15:32:30 -08:00
Pavel Feldman
ad22a46fde
feat: move permissions back into the context ( #320 )
2019-12-20 13:07:14 -08:00
Dmitry Gozman
dd6ba432ab
chore: update index.d.ts and index.js ( #318 )
2019-12-20 12:44:15 -08:00
Pavel Feldman
a4cb386b70
chore: fix page import
2019-12-19 22:09:21 -08:00
Pavel
ae86a0be17
docs: started working on the api.md
2019-12-19 18:03:52 -08:00
Pavel
c7d205d416
chore: rename the world (3)
2019-12-19 17:03:27 -08:00
Pavel
b20e87d9d0
chore: rename the world (2)
2019-12-19 16:53:24 -08:00
Pavel
91c309797d
chore: rename the world
2019-12-19 16:46:42 -08:00
Dmitry Gozman
12ac458614
fix(elementhandle): contentFrame and ownerFrame work in various scenarios ( #311 )
...
Drive-by: use evaluateInUtility for various utility evals.
2019-12-19 15:19:22 -08:00
Pavel Feldman
331f0e603a
feat: introduce BrowserServer ( #308 )
2019-12-19 14:51:49 -08:00
Dmitry Gozman
b378bc7f6c
feature(evaluate): support cross-context element handles ( #295 )
2019-12-19 11:44:07 -08:00
Pavel Feldman
4ef9f84ab5
chore: simplify the launcher routine ( #306 )
2019-12-19 10:21:26 -08:00
Pavel Feldman
d570fc7809
feat: further strip the browser api ( #304 )
2019-12-18 18:07:11 -08:00
Pavel Feldman
0e3328218d
feat(context): remove the notion of incognito context ( #299 )
2019-12-18 16:44:02 -08:00
Pavel Feldman
b5e9086576
chore: remove browser from the api ( #296 )
2019-12-18 16:23:05 -08:00
Dmitry Gozman
9afd35d3a1
feature(waitfor): waitFor visible or any by default ( #284 )
2019-12-18 14:28:16 -08:00
Dmitry Gozman
7750db97fe
api: remove ExecutionContext from api ( #290 )
...
In the current state, it is superseeded by Frame and JSHandle.
2019-12-18 13:51:45 -08:00
Pavel Feldman
6d0dfd0abf
feat(context): start moving overrides to the context level
2019-12-18 12:23:33 -08:00
Dmitry Gozman
24eb6d8671
chore: simplify extra http headers handling across browsers ( #274 )
2019-12-17 11:31:52 -08:00
Dmitry Gozman
916158656c
chore: unify reload/goBack/goForward across browsers ( #273 )
2019-12-17 11:28:09 -08:00
Dmitry Gozman
5a60a96410
chore: reuse navigation methods between browsers ( #271 )
2019-12-16 22:02:33 -08:00
Dmitry Gozman
03e2336d49
chore: various cleanup ( #266 )
2019-12-16 16:43:28 -08:00
Dmitry Gozman
f9f7d5c55a
feature(navigation): implement networkilde0 and networkidle2 ( #263 )
2019-12-16 16:32:04 -08:00
Dmitry Gozman
4b7a017456
chore: introduce FrameManager to be reused between browsers ( #261 )
2019-12-16 15:56:11 -08:00
Dmitry Gozman
09bf6b1906
fix(navigation): expect navigation on navigation request ( #248 )
2019-12-14 08:20:51 -08:00
Dmitry Gozman
dd2ce94de9
fix(navigation): waitForNavigation to pick up aborted navigation ( #244 )
2019-12-13 16:35:10 -08:00
Pavel Feldman
32fa26be97
feat: roll chromium to ToT ( #241 )
2019-12-13 14:57:46 -08:00
Pavel Feldman
046d015782
chore: unify transports, serialize events with acks ( #239 )
2019-12-13 14:53:49 -07:00
Dmitry Gozman
f8426fdf95
chore: move frame id to Frame, remove unused events ( #235 )
2019-12-13 10:52:33 -08:00
Pavel Feldman
bae8cd3fae
chrome: co-locate transport types ( #236 )
2019-12-12 21:30:49 -08:00
Dmitry Gozman
97c50c22ab
chore: inherit FrameExecutionContext from ExecutionContext ( #234 )
2019-12-12 21:11:52 -08:00
Pavel Feldman
5822de844a
chore: rename common files to start with lower case
2019-12-12 20:55:29 -08:00
Pavel Feldman
c7cf4886ea
api: s/createIncognitoBrowserContext/newContext/
2019-12-12 20:14:50 -08:00
Dmitry Gozman
d378a8d3fc
chore: reuse processLauncher between browsers ( #231 )
...
Drive-by: improve test runner to always exit and kill browsers
2019-12-12 17:52:13 -08:00
Dmitry Gozman
39fa313535
chore: merge DOMWorldDelegate and PageDelegate ( #228 )
2019-12-12 17:51:05 -08:00
Pavel Feldman
6440323003
fix(webkit): wait for main response on subresource-free goto ( #216 )
2019-12-11 16:19:37 -08:00
Dmitry Gozman
b70eebc4b2
chore: merge PageDelegate, FrameDelegate and ScreenshotterDelegate ( #213 )
2019-12-11 13:36:41 -07:00
Pavel Feldman
357e175964
fix(webkit): fullPage screenshot w/o viewport ( #210 )
2019-12-11 11:26:34 -08:00
Dmitry Gozman
58336d3eb9
chore: get rid of <Browser> templating ( #209 )
2019-12-11 07:18:43 -08:00
Dmitry Gozman
57acdfd860
chore: reuse LifecycleWatcher between browsers ( #208 )
2019-12-11 07:17:32 -08:00
Dmitry Gozman
5ffb710d7d
chore: reuse BrowserContext across browsers ( #201 )
2019-12-10 15:13:56 -08:00
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
Dmitry Gozman
f1f9dc166b
chore: remove unneeded files, reuse events between browsers, no implicit any ( #191 )
2019-12-10 11:15:14 -08:00
Pavel Feldman
44d6f608ef
feat(webkit): use webkit worlds ( #194 )
2019-12-09 23:24:12 -08:00
Dmitry Gozman
b4c89ca0f9
chore: unify frame lifecycle events between browsers ( #172 )
2019-12-09 16:34:42 -08:00
Dmitry Gozman
640646b794
chore(firefox): migrate to common Page ( #188 )
2019-12-09 14:53:17 -08:00