diff --git a/docs/api/breaking-changes.md b/docs/api/breaking-changes.md index 8e945438548d8..b2a3f8ecc2e32 100644 --- a/docs/api/breaking-changes.md +++ b/docs/api/breaking-changes.md @@ -59,6 +59,19 @@ these kinds of objects will throw a 'could not be cloned' error. [SCA]: https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Structured_clone_algorithm +### `.getWebContents()` + +This API is implemented using the `remote` module, which has both performance +and security implications. Therefore its usage should be explicit. + +```js +// Deprecated +webview.getWebContents() +// Replace with +const { remote } = require('electron') +remote.webContents.fromId(webview.getWebContentsId()) +``` + ## Planned Breaking API Changes (7.0) ### Node Headers URL diff --git a/docs/api/web-contents.md b/docs/api/web-contents.md index 69758f61d990c..ef7b23df7a428 100644 --- a/docs/api/web-contents.md +++ b/docs/api/web-contents.md @@ -1393,11 +1393,13 @@ An example of showing devtools in a `` tag: diff --git a/docs/api/webview-tag.md b/docs/api/webview-tag.md index ed78287199aba..ee0366a0931a9 100644 --- a/docs/api/webview-tag.md +++ b/docs/api/webview-tag.md @@ -648,7 +648,7 @@ Sets the maximum and minimum layout-based (i.e. non-visual) zoom level. Shows pop-up dictionary that searches the selected word on the page. -### `.getWebContents()` +### `.getWebContents()` _Deprecated_ Returns [`WebContents`](web-contents.md) - The web contents associated with this `webview`. diff --git a/lib/renderer/web-view/web-view-impl.ts b/lib/renderer/web-view/web-view-impl.ts index 2ec4db66cc75e..3e8d171d70924 100644 --- a/lib/renderer/web-view/web-view-impl.ts +++ b/lib/renderer/web-view/web-view-impl.ts @@ -238,6 +238,12 @@ export const setupMethods = (WebViewElement: typeof ElectronInternal.WebViewElem return remote.getGuestWebContents(internal.guestInstanceId!) } + WebViewElement.prototype.getWebContents = electron.deprecate.moveAPI( + WebViewElement.prototype.getWebContents, + 'webview.getWebContents()', + 'remote.webContents.fromId(webview.getWebContentsId())' + ) as any + // Focusing the webview should move page focus to the underlying iframe. WebViewElement.prototype.focus = function () { this.contentWindow.focus() diff --git a/spec/fixtures/pages/webview-devtools.html b/spec/fixtures/pages/webview-devtools.html index 8928c4ea79883..fb54b9b18aeb1 100644 --- a/spec/fixtures/pages/webview-devtools.html +++ b/spec/fixtures/pages/webview-devtools.html @@ -8,7 +8,8 @@