playwright-core
Advanced tools
Comparing version 1.45.0-beta-1719443776000 to 1.45.0-beta-1719505820000
@@ -317,5 +317,6 @@ "use strict"; | ||
} | ||
async addInitScript(script) { | ||
this.initScripts.push(script); | ||
await this.doAddInitScript(script); | ||
async addInitScript(source) { | ||
const initScript = new _page6.InitScript(source); | ||
this.initScripts.push(initScript); | ||
await this.doAddInitScript(initScript); | ||
} | ||
@@ -322,0 +323,0 @@ async _removeInitScripts() { |
@@ -418,4 +418,4 @@ "use strict"; | ||
} | ||
async doAddInitScript(source) { | ||
for (const page of this.pages()) await page._delegate.addInitScript(source); | ||
async doAddInitScript(initScript) { | ||
for (const page of this.pages()) await page._delegate.addInitScript(initScript); | ||
} | ||
@@ -422,0 +422,0 @@ async doRemoveInitScripts() { |
@@ -224,4 +224,4 @@ "use strict"; | ||
} | ||
async addInitScript(source, world = 'main') { | ||
await this._forAllFrameSessions(frame => frame._evaluateOnNewDocument(source, world)); | ||
async addInitScript(initScript, world = 'main') { | ||
await this._forAllFrameSessions(frame => frame._evaluateOnNewDocument(initScript, world)); | ||
} | ||
@@ -433,2 +433,13 @@ async removeInitScripts() { | ||
} | ||
const localFrames = this._isMainFrame() ? this._page.frames() : [this._page._frameManager.frame(this._targetId)]; | ||
for (const frame of localFrames) { | ||
// Note: frames might be removed before we send these. | ||
this._client._sendMayFail('Page.createIsolatedWorld', { | ||
frameId: frame._id, | ||
grantUniveralAccess: true, | ||
worldName: UTILITY_WORLD_NAME | ||
}); | ||
for (const binding of this._crPage._browserContext._pageBindings.values()) frame.evaluateExpression(binding.source).catch(e => {}); | ||
for (const initScript of this._crPage._browserContext.initScripts) frame.evaluateExpression(initScript.source).catch(e => {}); | ||
} | ||
const isInitialEmptyPage = this._isMainFrame() && this._page.mainFrame().url() === ':'; | ||
@@ -443,13 +454,2 @@ if (isInitialEmptyPage) { | ||
} else { | ||
const localFrames = this._isMainFrame() ? this._page.frames() : [this._page._frameManager.frame(this._targetId)]; | ||
for (const frame of localFrames) { | ||
// Note: frames might be removed before we send these. | ||
this._client._sendMayFail('Page.createIsolatedWorld', { | ||
frameId: frame._id, | ||
grantUniveralAccess: true, | ||
worldName: UTILITY_WORLD_NAME | ||
}); | ||
for (const binding of this._crPage._browserContext._pageBindings.values()) frame.evaluateExpression(binding.source).catch(e => {}); | ||
for (const source of this._crPage._browserContext.initScripts) frame.evaluateExpression(source).catch(e => {}); | ||
} | ||
this._firstNonInitialNavigationCommittedFulfill(); | ||
@@ -494,4 +494,4 @@ this._eventListeners.push(_eventsHelper.eventsHelper.addEventListener(this._client, 'Page.lifecycleEvent', event => this._onLifecycleEvent(event))); | ||
for (const binding of this._crPage._page.allBindings()) promises.push(this._initBinding(binding)); | ||
for (const source of this._crPage._browserContext.initScripts) promises.push(this._evaluateOnNewDocument(source, 'main')); | ||
for (const source of this._crPage._page.initScripts) promises.push(this._evaluateOnNewDocument(source, 'main')); | ||
for (const initScript of this._crPage._browserContext.initScripts) promises.push(this._evaluateOnNewDocument(initScript, 'main')); | ||
for (const initScript of this._crPage._page.initScripts) promises.push(this._evaluateOnNewDocument(initScript, 'main')); | ||
if (screencastOptions) promises.push(this._startVideoRecording(screencastOptions)); | ||
@@ -977,3 +977,3 @@ } | ||
} | ||
async _evaluateOnNewDocument(source, world) { | ||
async _evaluateOnNewDocument(initScript, world) { | ||
const worldName = world === 'utility' ? UTILITY_WORLD_NAME : undefined; | ||
@@ -983,3 +983,3 @@ const { | ||
} = await this._client.send('Page.addScriptToEvaluateOnNewDocument', { | ||
source, | ||
source: initScript.source, | ||
worldName | ||
@@ -986,0 +986,0 @@ }); |
@@ -377,7 +377,7 @@ "use strict"; | ||
} | ||
async doAddInitScript(source) { | ||
async doAddInitScript(initScript) { | ||
await this._browser.session.send('Browser.setInitScripts', { | ||
browserContextId: this._browserContextId, | ||
scripts: this.initScripts.map(script => ({ | ||
script | ||
script: script.source | ||
})) | ||
@@ -384,0 +384,0 @@ }); |
@@ -84,3 +84,3 @@ "use strict"; | ||
// Therefore, we can end up with an initialized page without utility world, although very unlikely. | ||
this.addInitScript('', UTILITY_WORLD_NAME).catch(e => this._markAsError(e)); | ||
this.addInitScript(new _page.InitScript(''), UTILITY_WORLD_NAME).catch(e => this._markAsError(e)); | ||
} | ||
@@ -373,9 +373,12 @@ potentiallyUninitializedPage() { | ||
} | ||
async addInitScript(script, worldName) { | ||
async addInitScript(initScript, worldName) { | ||
this._initScripts.push({ | ||
script, | ||
initScript, | ||
worldName | ||
}); | ||
await this._session.send('Page.setInitScripts', { | ||
scripts: this._initScripts | ||
scripts: this._initScripts.map(s => ({ | ||
script: s.initScript.source, | ||
worldName: s.worldName | ||
})) | ||
}); | ||
@@ -382,0 +385,0 @@ } |
@@ -6,3 +6,3 @@ "use strict"; | ||
}); | ||
exports.Worker = exports.PageBinding = exports.Page = void 0; | ||
exports.Worker = exports.PageBinding = exports.Page = exports.InitScript = void 0; | ||
var frames = _interopRequireWildcard(require("./frames")); | ||
@@ -387,4 +387,5 @@ var input = _interopRequireWildcard(require("./input")); | ||
async addInitScript(source) { | ||
this.initScripts.push(source); | ||
await this._delegate.addInitScript(source); | ||
const initScript = new InitScript(source); | ||
this.initScripts.push(initScript); | ||
await this._delegate.addInitScript(initScript); | ||
} | ||
@@ -755,2 +756,17 @@ async _removeInitScripts() { | ||
} | ||
class InitScript { | ||
constructor(source) { | ||
this.source = void 0; | ||
const guid = (0, _utils.createGuid)(); | ||
this.source = `(() => { | ||
globalThis.__pwInitScripts = globalThis.__pwInitScripts || {}; | ||
const hasInitScript = globalThis.__pwInitScripts[${JSON.stringify(guid)}]; | ||
if (hasInitScript) | ||
return; | ||
globalThis.__pwInitScripts[${JSON.stringify(guid)}] = true; | ||
${source} | ||
})();`; | ||
} | ||
} | ||
exports.InitScript = InitScript; | ||
class FrameThrottler { | ||
@@ -757,0 +773,0 @@ constructor(nonThrottledFrames, defaultInterval, throttlingInterval) { |
@@ -282,3 +282,3 @@ "use strict"; | ||
} | ||
async doAddInitScript(source) { | ||
async doAddInitScript(initScript) { | ||
for (const page of this.pages()) await page._delegate._updateBootstrapScript(); | ||
@@ -285,0 +285,0 @@ } |
@@ -759,3 +759,3 @@ "use strict"; | ||
} | ||
async addInitScript(script) { | ||
async addInitScript(initScript) { | ||
await this._updateBootstrapScript(); | ||
@@ -776,4 +776,4 @@ } | ||
for (const binding of this._page.allBindings()) scripts.push(binding.source); | ||
scripts.push(...this._browserContext.initScripts); | ||
scripts.push(...this._page.initScripts); | ||
scripts.push(...this._browserContext.initScripts.map(s => s.source)); | ||
scripts.push(...this._page.initScripts.map(s => s.source)); | ||
return scripts.join(';\n'); | ||
@@ -780,0 +780,0 @@ } |
{ | ||
"name": "playwright-core", | ||
"version": "1.45.0-beta-1719443776000", | ||
"version": "1.45.0-beta-1719505820000", | ||
"description": "A high-level API to automate web browsers", | ||
@@ -5,0 +5,0 @@ "repository": { |
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
7234295
101138