Browse Source

fix: assign session to remote webContents (#24064)

* fix: assign session to remote webContents

* fix: test name

Co-authored-by: sentialx <[email protected]>
trop[bot] 4 years ago
parent
commit
ee9f95df30

+ 3 - 0
shell/browser/api/electron_api_web_contents.cc

@@ -393,6 +393,9 @@ WebContents::WebContents(v8::Isolate* isolate,
     : content::WebContentsObserver(web_contents),
       type_(Type::REMOTE),
       weak_factory_(this) {
+  auto session = Session::CreateFrom(isolate, GetBrowserContext());
+  session_.Reset(isolate, session.ToV8());
+
   web_contents->SetUserAgentOverride(blink::UserAgentOverride::UserAgentOnly(
                                          GetBrowserContext()->GetUserAgent()),
                                      false);

+ 11 - 1
spec-main/extensions-spec.ts

@@ -1,5 +1,5 @@
 import { expect } from 'chai';
-import { session, BrowserWindow, ipcMain, WebContents, Extension } from 'electron/main';
+import { app, session, BrowserWindow, ipcMain, WebContents, Extension } from 'electron/main';
 import { closeAllWindows, closeWindow } from './window-helpers';
 import * as http from 'http';
 import { AddressInfo } from 'net';
@@ -269,6 +269,16 @@ describe('chrome extensions', () => {
     });
   });
 
+  it('has session in background page', async () => {
+    const customSession = session.fromPartition(`persist:${require('uuid').v4()}`);
+    await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
+    const w = new BrowserWindow({ show: false, webPreferences: { session: customSession } });
+    const promise = emittedOnce(app, 'web-contents-created');
+    await w.loadURL(`about:blank`);
+    const [, bgPageContents] = await promise;
+    expect(bgPageContents.session).to.not.equal(undefined);
+  });
+
   describe('devtools extensions', () => {
     let showPanelTimeoutId: any = null;
     afterEach(() => {

+ 1 - 0
spec-main/fixtures/extensions/persistent-background-page/background.js

@@ -0,0 +1 @@
+/* eslint-disable no-undef */

+ 9 - 0
spec-main/fixtures/extensions/persistent-background-page/manifest.json

@@ -0,0 +1,9 @@
+{
+  "name": "persistent-background-page",
+  "version": "1.0",
+  "background": {
+    "scripts": ["background.js"],
+    "persistent": true
+  },
+  "manifest_version": 2
+}