playwright-core
Advanced tools
Comparing version
@@ -31,5 +31,3 @@ /** | ||
geolocation?: types.Geolocation; | ||
permissions?: { | ||
[key: string]: string[]; | ||
}; | ||
permissions?: string[]; | ||
extraHTTPHeaders?: network.Headers; | ||
@@ -47,3 +45,5 @@ offline?: boolean; | ||
clearCookies(): Promise<void>; | ||
setPermissions(origin: string, permissions: string[]): Promise<void>; | ||
grantPermissions(permissions: string[], options?: { | ||
origin?: string; | ||
}): Promise<void>; | ||
clearPermissions(): Promise<void>; | ||
@@ -76,2 +76,3 @@ setGeolocation(geolocation: types.Geolocation | null): Promise<void>; | ||
private _closePromiseFulfill; | ||
private _permissions; | ||
constructor(options: BrowserContextOptions); | ||
@@ -85,4 +86,4 @@ _browserClosed(): void; | ||
abstract clearCookies(): Promise<void>; | ||
abstract setPermissions(origin: string, permissions: string[]): Promise<void>; | ||
abstract clearPermissions(): Promise<void>; | ||
abstract _doGrantPermissions(origin: string, permissions: string[]): Promise<void>; | ||
abstract _doClearPermissions(): Promise<void>; | ||
abstract setGeolocation(geolocation: types.Geolocation | null): Promise<void>; | ||
@@ -99,2 +100,6 @@ abstract setHTTPCredentials(httpCredentials: types.Credentials | null): Promise<void>; | ||
abstract close(): Promise<void>; | ||
grantPermissions(permissions: string[], options?: { | ||
origin?: string; | ||
}): Promise<void>; | ||
clearPermissions(): Promise<void>; | ||
setDefaultNavigationTimeout(timeout: number): void; | ||
@@ -101,0 +106,0 @@ setDefaultTimeout(timeout: number): void; |
@@ -31,2 +31,3 @@ "use strict"; | ||
this._closed = false; | ||
this._permissions = new Map(); | ||
this._options = options; | ||
@@ -45,2 +46,18 @@ this._closePromise = new Promise(fulfill => this._closePromiseFulfill = fulfill); | ||
} | ||
async grantPermissions(permissions, options) { | ||
let origin = '*'; | ||
if (options && options.origin) { | ||
const url = new URL(options.origin); | ||
origin = url.origin; | ||
} | ||
const existing = new Set(this._permissions.get(origin) || []); | ||
permissions.forEach(p => existing.add(p)); | ||
const list = [...existing.values()]; | ||
this._permissions.set(origin, list); | ||
await this._doGrantPermissions(origin, list); | ||
} | ||
async clearPermissions() { | ||
this._permissions.clear(); | ||
await this._doClearPermissions(); | ||
} | ||
setDefaultNavigationTimeout(timeout) { | ||
@@ -47,0 +64,0 @@ this._timeoutSettings.setDefaultNavigationTimeout(timeout); |
@@ -76,4 +76,4 @@ /** | ||
clearCookies(): Promise<void>; | ||
setPermissions(origin: string, permissions: string[]): Promise<void>; | ||
clearPermissions(): Promise<void>; | ||
_doGrantPermissions(origin: string, permissions: string[]): Promise<void>; | ||
_doClearPermissions(): Promise<void>; | ||
setGeolocation(geolocation: types.Geolocation | null): Promise<void>; | ||
@@ -80,0 +80,0 @@ setExtraHTTPHeaders(headers: network.Headers): Promise<void>; |
@@ -215,4 +215,4 @@ "use strict"; | ||
async _initialize() { | ||
const entries = Object.entries(this._options.permissions || {}); | ||
await Promise.all(entries.map(entry => this.setPermissions(entry[0], entry[1]))); | ||
if (this._options.permissions) | ||
await this.grantPermissions(this._options.permissions); | ||
if (this._options.geolocation) | ||
@@ -259,3 +259,3 @@ await this.setGeolocation(this._options.geolocation); | ||
} | ||
async setPermissions(origin, permissions) { | ||
async _doGrantPermissions(origin, permissions) { | ||
const webPermissionToProtocol = new Map([ | ||
@@ -285,5 +285,5 @@ ['geolocation', 'geolocation'], | ||
}); | ||
await this._browser._session.send('Browser.grantPermissions', { origin, browserContextId: this._browserContextId || undefined, permissions: filtered }); | ||
await this._browser._session.send('Browser.grantPermissions', { origin: origin === '*' ? undefined : origin, browserContextId: this._browserContextId || undefined, permissions: filtered }); | ||
} | ||
async clearPermissions() { | ||
async _doClearPermissions() { | ||
await this._browser._session.send('Browser.resetPermissions', { browserContextId: this._browserContextId || undefined }); | ||
@@ -290,0 +290,0 @@ } |
@@ -60,4 +60,4 @@ /** | ||
clearCookies(): Promise<void>; | ||
setPermissions(origin: string, permissions: string[]): Promise<void>; | ||
clearPermissions(): Promise<void>; | ||
_doGrantPermissions(origin: string, permissions: string[]): Promise<void>; | ||
_doClearPermissions(): Promise<void>; | ||
setGeolocation(geolocation: types.Geolocation | null): Promise<void>; | ||
@@ -64,0 +64,0 @@ setExtraHTTPHeaders(headers: network.Headers): Promise<void>; |
@@ -145,4 +145,4 @@ "use strict"; | ||
async _initialize() { | ||
const entries = Object.entries(this._options.permissions || {}); | ||
await Promise.all(entries.map(entry => this.setPermissions(entry[0], entry[1]))); | ||
if (this._options.permissions) | ||
await this.grantPermissions(this._options.permissions); | ||
if (this._options.geolocation) | ||
@@ -198,8 +198,8 @@ await this.setGeolocation(this._options.geolocation); | ||
} | ||
async setPermissions(origin, permissions) { | ||
async _doGrantPermissions(origin, permissions) { | ||
const webPermissionToProtocol = new Map([ | ||
['geolocation', 'geo'], | ||
['microphone', 'microphone'], | ||
['camera', 'camera'], | ||
['notifications', 'desktop-notifications'], | ||
['persistent-storage', 'persistent-storage'], | ||
['push', 'push'], | ||
['notifications', 'desktop-notification'], | ||
]); | ||
@@ -212,5 +212,5 @@ const filtered = permissions.map(permission => { | ||
}); | ||
await this._browser._connection.send('Browser.grantPermissions', { origin, browserContextId: this._browserContextId || undefined, permissions: filtered }); | ||
await this._browser._connection.send('Browser.grantPermissions', { origin: origin, browserContextId: this._browserContextId || undefined, permissions: filtered }); | ||
} | ||
async clearPermissions() { | ||
async _doClearPermissions() { | ||
await this._browser._connection.send('Browser.resetPermissions', { browserContextId: this._browserContextId || undefined }); | ||
@@ -217,0 +217,0 @@ } |
@@ -112,3 +112,3 @@ export declare module Protocol { | ||
browserContextId?: string; | ||
permissions: ("geo" | "microphone" | "camera" | "desktop-notifications")[]; | ||
permissions: string[]; | ||
}; | ||
@@ -115,0 +115,0 @@ type grantPermissionsReturnValue = void; |
@@ -64,4 +64,4 @@ /** | ||
clearCookies(): Promise<void>; | ||
setPermissions(origin: string, permissions: string[]): Promise<void>; | ||
clearPermissions(): Promise<void>; | ||
_doGrantPermissions(origin: string, permissions: string[]): Promise<void>; | ||
_doClearPermissions(): Promise<void>; | ||
setGeolocation(geolocation: types.Geolocation | null): Promise<void>; | ||
@@ -68,0 +68,0 @@ setExtraHTTPHeaders(headers: network.Headers): Promise<void>; |
@@ -160,4 +160,4 @@ "use strict"; | ||
await this._browser._browserSession.send('Playwright.setLanguages', { browserContextId: this._browserContextId, languages: [this._options.locale] }); | ||
const entries = Object.entries(this._options.permissions || {}); | ||
await Promise.all(entries.map(entry => this.setPermissions(entry[0], entry[1]))); | ||
if (this._options.permissions) | ||
await this.grantPermissions(this._options.permissions); | ||
if (this._options.geolocation) | ||
@@ -208,3 +208,3 @@ await this.setGeolocation(this._options.geolocation); | ||
} | ||
async setPermissions(origin, permissions) { | ||
async _doGrantPermissions(origin, permissions) { | ||
const webPermissionToProtocol = new Map([ | ||
@@ -221,3 +221,3 @@ ['geolocation', 'geolocation'], | ||
} | ||
async clearPermissions() { | ||
async _doClearPermissions() { | ||
await this._browser._browserSession.send('Playwright.resetPermissions', { browserContextId: this._browserContextId }); | ||
@@ -224,0 +224,0 @@ } |
{ | ||
"name": "playwright-core", | ||
"version": "0.11.1-next.1584461989753", | ||
"version": "0.11.1-next.1584485273162", | ||
"description": "A high-level API to automate web browsers", | ||
@@ -12,3 +12,3 @@ "repository": "github:Microsoft/playwright", | ||
"chromium_revision": "750417", | ||
"firefox_revision": "1042", | ||
"firefox_revision": "1043", | ||
"webkit_revision": "1179" | ||
@@ -15,0 +15,0 @@ }, |
Sorry, the diff of this file is too big to display
2442039
0.05%57220
0.07%