New Case Study:See how Anthropic automated 95% of dependency reviews with Socket.Learn More
Socket
Sign inDemoInstall
Socket

playwright-core

Package Overview
Dependencies
Maintainers
1
Versions
4828
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

playwright-core - npm Package Compare versions

Comparing version

to
0.11.1-next.1583805691762

7

lib/chromium/crBrowser.js

@@ -345,3 +345,8 @@ "use strict";

return;
helper_1.assert(this._browserContextId, 'Non-incognito profiles cannot be closed!');
if (!this._browserContextId) {
// Default context is only created in 'persistent' mode and closing it should close
// the browser.
await this._browser.close();
return;
}
await this._browser._session.send('Target.disposeBrowserContext', { browserContextId: this._browserContextId });

@@ -348,0 +353,0 @@ this._browser._contexts.delete(this._browserContextId);

@@ -252,3 +252,8 @@ "use strict";

return;
helper_1.assert(this._browserContextId, 'Non-incognito profiles cannot be closed!');
if (!this._browserContextId) {
// Default context is only created in 'persistent' mode and closing it should close
// the browser.
await this._browser.close();
return;
}
await this._browser._connection.send('Browser.removeBrowserContext', { browserContextId: this._browserContextId });

@@ -255,0 +260,0 @@ this._browser._contexts.delete(this._browserContextId);

16

lib/server/chromium.js

@@ -48,4 +48,2 @@ "use strict";

const browser = await crBrowser_1.CRBrowser.connect(transport, false, options && options.slowMo);
// Hack: for typical launch scenario, ensure that close waits for actual process termination.
browser.close = () => browserServer.close();
browser['__server__'] = browserServer;

@@ -59,3 +57,3 @@ return browser;

const { timeout = 30000 } = options || {};
const { browserServer, transport } = await this._launchServer(options, 'persistent', userDataDir);
const { transport } = await this._launchServer(options, 'persistent', userDataDir);
const browser = await crBrowser_1.CRBrowser.connect(transport, true);

@@ -69,4 +67,2 @@ const browserContext = browser._defaultContext;

await helper_1.helper.waitWithTimeout(firstPage, 'first page', timeout);
// Hack: for typical launch scenario, ensure that close waits for actual process termination.
browserContext.close = () => browserServer.close();
return browserContext;

@@ -127,9 +123,11 @@ }

browserWSEndpoint = match[1];
browserServer = new browserServer_1.BrowserServer(launchedProcess, gracefullyClose, browserWSEndpoint);
return { browserServer };
}
else {
transport = new pipeTransport_1.PipeTransport(launchedProcess.stdio[3], launchedProcess.stdio[4]);
browserWSEndpoint = null;
// For local launch scenario close will terminate the browser process.
transport = new pipeTransport_1.PipeTransport(launchedProcess.stdio[3], launchedProcess.stdio[4], () => browserServer.close());
browserServer = new browserServer_1.BrowserServer(launchedProcess, gracefullyClose, null);
return { browserServer, transport };
}
browserServer = new browserServer_1.BrowserServer(launchedProcess, gracefullyClose, browserWSEndpoint);
return { browserServer, transport };
}

@@ -136,0 +134,0 @@ async connect(options) {

@@ -24,8 +24,9 @@ /**

private _waitForNextTask;
private readonly _closeCallback;
onmessage?: (message: string) => void;
onclose?: () => void;
constructor(pipeWrite: NodeJS.WritableStream, pipeRead: NodeJS.ReadableStream);
constructor(pipeWrite: NodeJS.WritableStream, pipeRead: NodeJS.ReadableStream, closeCallback: () => void);
send(message: string): void;
close(): void;
_dispatch(buffer: Buffer): void;
close(): void;
}

@@ -22,9 +22,11 @@ "use strict";

class PipeTransport {
constructor(pipeWrite, pipeRead) {
constructor(pipeWrite, pipeRead, closeCallback) {
this._pendingMessage = '';
this._waitForNextTask = platform_1.makeWaitForNextTask();
this._pipeWrite = pipeWrite;
this._closeCallback = closeCallback;
this._eventListeners = [
helper_1.helper.addEventListener(pipeRead, 'data', buffer => this._dispatch(buffer)),
helper_1.helper.addEventListener(pipeRead, 'close', () => {
helper_1.helper.removeEventListeners(this._eventListeners);
if (this.onclose)

@@ -43,2 +45,5 @@ this.onclose.call(null);

}
close() {
this._closeCallback();
}
_dispatch(buffer) {

@@ -68,10 +73,4 @@ let end = buffer.indexOf('\0');

}
close() {
this._pipeWrite = null;
helper_1.helper.removeEventListeners(this._eventListeners);
if (this.onclose)
this.onclose.call(null);
}
}
exports.PipeTransport = PipeTransport;
//# sourceMappingURL=pipeTransport.js.map

@@ -59,4 +59,2 @@ "use strict";

const browser = await wkBrowser_1.WKBrowser.connect(transport, options && options.slowMo);
// Hack: for typical launch scenario, ensure that close waits for actual process termination.
browser.close = () => browserServer.close();
browser['__server__'] = browserServer;

@@ -70,9 +68,6 @@ return browser;

const { timeout = 30000 } = options || {};
const { browserServer, transport } = await this._launchServer(options, 'persistent', userDataDir);
const { transport } = await this._launchServer(options, 'persistent', userDataDir);
const browser = await wkBrowser_1.WKBrowser.connect(transport, undefined, true);
await helper_1.helper.waitWithTimeout(browser._waitForFirstPageTarget(), 'first page', timeout);
// Hack: for typical launch scenario, ensure that close waits for actual process termination.
const browserContext = browser._defaultContext;
browserContext.close = () => browserServer.close();
return browserContext;
return browser._defaultContext;
}

@@ -126,4 +121,7 @@ async _launchServer(options = {}, launchType, userDataDir, port) {

});
transport = new pipeTransport_1.PipeTransport(launchedProcess.stdio[3], launchedProcess.stdio[4]);
// For local launch scenario close will terminate the browser process.
transport = new pipeTransport_1.PipeTransport(launchedProcess.stdio[3], launchedProcess.stdio[4], () => browserServer.close());
browserServer = new browserServer_1.BrowserServer(launchedProcess, gracefullyClose, launchType === 'server' ? await wrapTransportWithWebSocket(transport, port || 0) : null);
if (launchType === 'server')
return { browserServer };
return { browserServer, transport };

@@ -328,3 +326,3 @@ }

});
socket.on('close', () => {
socket.on('close', socket.__closeListener = () => {
for (const [pageProxyId, s] of pageProxyIds) {

@@ -348,4 +346,6 @@ if (s === socket)

transport.onclose = () => {
for (const socket of sockets)
for (const socket of sockets) {
socket.removeListener('close', socket.__closeListener);
socket.close(undefined, 'Browser disconnected');
}
server.close();

@@ -352,0 +352,0 @@ transport.onmessage = undefined;

@@ -52,7 +52,7 @@ "use strict";

_onDisconnect() {
for (const context of this._contexts.values())
context._browserClosed();
for (const wkPage of this._wkPages.values())
wkPage.dispose();
this._wkPages.clear();
for (const context of this._contexts.values())
context._browserClosed();
this.emit(events_1.Events.Browser.Disconnected);

@@ -271,3 +271,8 @@ }

return;
helper_1.assert(this._browserContextId, 'Non-incognito profiles cannot be closed!');
if (!this._browserContextId) {
// Default context is only created in 'persistent' mode and closing it should close
// the browser.
await this._browser.close();
return;
}
await this._browser._browserSession.send('Browser.deleteContext', { browserContextId: this._browserContextId });

@@ -274,0 +279,0 @@ this._browser._contexts.delete(this._browserContextId);

@@ -27,6 +27,6 @@ /**

export declare class WKConnection {
private readonly _transport;
private readonly _onDisconnect;
private _lastId;
private readonly _transport;
private _closed;
private _onDisconnect;
_debugFunction: (message: string) => void;

@@ -33,0 +33,0 @@ readonly browserSession: WKSession;

{
"name": "playwright-core",
"version": "0.11.1-next.1583796504588",
"version": "0.11.1-next.1583805691762",
"description": "A high-level API to automate web browsers",

@@ -5,0 +5,0 @@ "repository": "github:Microsoft/playwright",

Sorry, the diff of this file is too big to display