feat: support registering MV3 extension service workers (#27562)
* feat: support registering MV3 extension service workers * feat: load chrome extension APIs in worker context * feat: add more ContentRendererClient service worker overrides * fix: lint error * refactor: emit object for 'registration-completed' * docs: clarify when registration-completed emits
This commit is contained in:
parent
6681f8f507
commit
3250ef551c
10 changed files with 152 additions and 6 deletions
|
@ -4,7 +4,11 @@
|
|||
|
||||
#include "shell/renderer/extensions/electron_extensions_renderer_client.h"
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "content/public/renderer/render_thread.h"
|
||||
#include "extensions/common/constants.h"
|
||||
#include "extensions/common/manifest_handlers/background_info.h"
|
||||
#include "extensions/renderer/dispatcher.h"
|
||||
#include "shell/common/world_ids.h"
|
||||
#include "shell/renderer/extensions/electron_extensions_dispatcher_delegate.h"
|
||||
|
@ -35,8 +39,24 @@ extensions::Dispatcher* ElectronExtensionsRendererClient::GetDispatcher() {
|
|||
bool ElectronExtensionsRendererClient::
|
||||
ExtensionAPIEnabledForServiceWorkerScript(const GURL& scope,
|
||||
const GURL& script_url) const {
|
||||
// TODO(nornagon): adapt logic from chrome's version
|
||||
return true;
|
||||
if (!script_url.SchemeIs(extensions::kExtensionScheme))
|
||||
return false;
|
||||
|
||||
const extensions::Extension* extension =
|
||||
extensions::RendererExtensionRegistry::Get()->GetExtensionOrAppByURL(
|
||||
script_url);
|
||||
|
||||
if (!extension ||
|
||||
!extensions::BackgroundInfo::IsServiceWorkerBased(extension))
|
||||
return false;
|
||||
|
||||
if (scope != extension->url())
|
||||
return false;
|
||||
|
||||
const std::string& sw_script =
|
||||
extensions::BackgroundInfo::GetBackgroundServiceWorkerScript(extension);
|
||||
|
||||
return extension->GetResourceURL(sw_script) == script_url;
|
||||
}
|
||||
|
||||
bool ElectronExtensionsRendererClient::AllowPopup() {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue