diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-08-21 14:28:27 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2019-10-11 10:15:17 +0200 |
commit | 5f9e2f01e4eae22d9d40bb6b7767cde4cb94766e (patch) | |
tree | 58ade0563aef01b2fdba98c237d634559a1c1889 /src/core/renderer/extensions | |
parent | 687671d249613bb2b00570f93df35fcaa0eacdd3 (diff) |
Adaptations for Chromium 77
Fixes: QTBUG-77267
Change-Id: I181e24cf80ebee6991b95dde6c636f0d169b40a4
Reviewed-by: Peter Varga <pvarga@inf.u-szeged.hu>
Diffstat (limited to 'src/core/renderer/extensions')
-rw-r--r-- | src/core/renderer/extensions/extensions_renderer_client_qt.cpp | 24 | ||||
-rw-r--r-- | src/core/renderer/extensions/extensions_renderer_client_qt.h | 2 |
2 files changed, 26 insertions, 0 deletions
diff --git a/src/core/renderer/extensions/extensions_renderer_client_qt.cpp b/src/core/renderer/extensions/extensions_renderer_client_qt.cpp index c25494590..7d4c9a83c 100644 --- a/src/core/renderer/extensions/extensions_renderer_client_qt.cpp +++ b/src/core/renderer/extensions/extensions_renderer_client_qt.cpp @@ -56,6 +56,8 @@ #include "content/public/renderer/render_frame.h" #include "content/public/renderer/render_thread.h" #include "extensions/common/constants.h" +#include "extensions/common/extension.h" +#include "extensions/common/manifest_handlers/background_info.h" #include "extensions/common/switches.h" #include "extensions/renderer/dispatcher.h" #include "extensions/renderer/extension_frame_helper.h" @@ -120,6 +122,28 @@ void ExtensionsRendererClientQt::OnExtensionUnloaded(const extensions::Extension resource_request_policy_->OnExtensionUnloaded(extension_id); } +bool ExtensionsRendererClientQt::ExtensionAPIEnabledForServiceWorkerScript(const GURL &scope, const GURL &script_url) const +{ + if (!script_url.SchemeIs(extensions::kExtensionScheme)) + return false; + + if (!extensions::ExtensionsClient::Get()->ExtensionAPIEnabledInExtensionServiceWorkers()) + 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; +} + void ExtensionsRendererClientQt::RenderThreadStarted() { content::RenderThread *thread = content::RenderThread::Get(); diff --git a/src/core/renderer/extensions/extensions_renderer_client_qt.h b/src/core/renderer/extensions/extensions_renderer_client_qt.h index 2d45d255a..87e324213 100644 --- a/src/core/renderer/extensions/extensions_renderer_client_qt.h +++ b/src/core/renderer/extensions/extensions_renderer_client_qt.h @@ -113,6 +113,8 @@ public: const std::string &mime_type, const GURL &original_url); + bool ExtensionAPIEnabledForServiceWorkerScript(const GURL &scope, const GURL &script_url) const override; + void RunScriptsAtDocumentStart(content::RenderFrame *render_frame); void RunScriptsAtDocumentEnd(content::RenderFrame *render_frame); void RunScriptsAtDocumentIdle(content::RenderFrame *render_frame); |