fix(extensions): enable WebSQL in background pages (#24798)
* fix(extensions): enable WebSQL in background pages * fix: apply suggestions * fix: remove duplicate include * fix: remove trailing spaces
This commit is contained in:
		
					parent
					
						
							
								ff24caf798
							
						
					
				
			
			
				commit
				
					
						9e53112ee1
					
				
			
		
					 2 changed files with 22 additions and 0 deletions
				
			
		| 
						 | 
					@ -772,6 +772,16 @@ void ElectronBrowserClient::AppendExtraCommandLineSwitches(
 | 
				
			||||||
      command_line->AppendSwitch("profile-electron-init");
 | 
					      command_line->AppendSwitch("profile-electron-init");
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    // Extension background pages don't have WebContentsPreferences, but they
 | 
				
			||||||
 | 
					    // support WebSQL by default.
 | 
				
			||||||
 | 
					#if BUILDFLAG(ENABLE_ELECTRON_EXTENSIONS)
 | 
				
			||||||
 | 
					    content::RenderProcessHost* process =
 | 
				
			||||||
 | 
					        content::RenderProcessHost::FromID(process_id);
 | 
				
			||||||
 | 
					    if (extensions::ProcessMap::Get(process->GetBrowserContext())
 | 
				
			||||||
 | 
					            ->Contains(process_id))
 | 
				
			||||||
 | 
					      command_line->AppendSwitch(switches::kEnableWebSQL);
 | 
				
			||||||
 | 
					#endif
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    content::WebContents* web_contents =
 | 
					    content::WebContents* web_contents =
 | 
				
			||||||
        GetWebContentsFromProcessID(process_id);
 | 
					        GetWebContentsFromProcessID(process_id);
 | 
				
			||||||
    if (web_contents) {
 | 
					    if (web_contents) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -37,6 +37,18 @@ describe('chrome extensions', () => {
 | 
				
			||||||
    });
 | 
					    });
 | 
				
			||||||
  });
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					  it('can open WebSQLDatabase in a background page', async () => {
 | 
				
			||||||
 | 
					    const customSession = session.fromPartition(`persist:${require('uuid').v4()}`);
 | 
				
			||||||
 | 
					    const w = new BrowserWindow({ show: false, webPreferences: { session: customSession, sandbox: true } });
 | 
				
			||||||
 | 
					    w.loadURL('about:blank');
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    await emittedOnce(w.webContents, 'dom-ready');
 | 
				
			||||||
 | 
					    await customSession.loadExtension(path.join(fixtures, 'extensions', 'persistent-background-page'));
 | 
				
			||||||
 | 
					    const args: any = await emittedOnce(app, 'web-contents-created');
 | 
				
			||||||
 | 
					    const wc: Electron.WebContents = args[1];
 | 
				
			||||||
 | 
					    await expect(wc.executeJavaScript('(()=>{try{openDatabase("t", "1.0", "test", 2e5);return true;}catch(e){throw e}})()')).to.not.be.rejected();
 | 
				
			||||||
 | 
					  });
 | 
				
			||||||
 | 
					
 | 
				
			||||||
  function fetch (contents: WebContents, url: string) {
 | 
					  function fetch (contents: WebContents, url: string) {
 | 
				
			||||||
    return contents.executeJavaScript(`fetch(${JSON.stringify(url)})`);
 | 
					    return contents.executeJavaScript(`fetch(${JSON.stringify(url)})`);
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue