diff options
author | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-01-13 13:54:17 +0100 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@qt.io> | 2020-02-28 14:24:35 +0100 |
commit | 42af15c421a520499bc872e2d55053dcffb2a07b (patch) | |
tree | c0e8836daec4903254c7ae633eb8ef27a4502f00 /src/core/extensions | |
parent | 01d4c6440b52f2ce26ced45b6ad193e909db44af (diff) |
Adaptations for Chromium 78
Including removal of renderer service.
[ChangeLog][QWebEngineSetting] XSS Auditing has been removed, and
XSSAuditingEnabled no longer has any effect.
Change-Id: I0835e2a76551057f3eea30a343e0373b642192f0
Reviewed-by: Allan Sandfeld Jensen <allan.jensen@qt.io>
Diffstat (limited to 'src/core/extensions')
-rw-r--r-- | src/core/extensions/extension_system_qt.cpp | 9 | ||||
-rw-r--r-- | src/core/extensions/extensions_browser_client_qt.cpp | 103 | ||||
-rw-r--r-- | src/core/extensions/extensions_browser_client_qt.h | 8 |
3 files changed, 11 insertions, 109 deletions
diff --git a/src/core/extensions/extension_system_qt.cpp b/src/core/extensions/extension_system_qt.cpp index fbe98099c..a66051fbd 100644 --- a/src/core/extensions/extension_system_qt.cpp +++ b/src/core/extensions/extension_system_qt.cpp @@ -136,7 +136,8 @@ public: // This should return what verification mode is appropriate for the given // extension, if any. - bool ShouldBeVerified(const Extension &extension) override { return false; } + VerifierSourceType GetVerifierSourceType(const Extension &extension) override + { return VerifierSourceType::NONE; } // Should return the public key to use for validating signatures via the two // out parameters. @@ -174,7 +175,7 @@ void ExtensionSystemQt::LoadExtension(std::string extension_id, std::unique_ptr< if (!extension.get()) LOG(ERROR) << error; - base::PostTaskWithTraits(FROM_HERE, {content::BrowserThread::IO}, + base::PostTask(FROM_HERE, {content::BrowserThread::IO}, base::Bind(&InfoMap::AddExtension, base::Unretained(info_map()), base::RetainedRef(extension), @@ -411,7 +412,7 @@ void ExtensionSystemQt::RegisterExtensionWithRequestContexts(const Extension *ex bool incognito_enabled = false; bool notifications_disabled = false; - base::PostTaskWithTraitsAndReply( + base::PostTaskAndReply( FROM_HERE, {BrowserThread::IO}, base::Bind(&InfoMap::AddExtension, info_map(), base::RetainedRef(extension), install_time, incognito_enabled, @@ -422,7 +423,7 @@ void ExtensionSystemQt::RegisterExtensionWithRequestContexts(const Extension *ex void ExtensionSystemQt::UnregisterExtensionWithRequestContexts(const std::string &extension_id, const UnloadedExtensionReason reason) { - base::PostTaskWithTraits( + base::PostTask( FROM_HERE, {BrowserThread::IO}, base::Bind(&InfoMap::RemoveExtension, info_map(), extension_id, reason)); } diff --git a/src/core/extensions/extensions_browser_client_qt.cpp b/src/core/extensions/extensions_browser_client_qt.cpp index d974155c5..a91127192 100644 --- a/src/core/extensions/extensions_browser_client_qt.cpp +++ b/src/core/extensions/extensions_browser_client_qt.cpp @@ -70,6 +70,7 @@ #include "net/base/completion_once_callback.h" #include "net/base/mime_util.h" #include "net/url_request/url_request_simple_job.h" +#include "services/network/public/cpp/resource_response.h" #include "services/network/public/mojom/url_loader.mojom.h" #include "third_party/zlib/google/compression_utils.h" #include "ui/base/resource/resource_bundle.h" @@ -104,69 +105,6 @@ void DetermineCharset(const std::string &mime_type, } } -// A request for an extension resource in a Chrome .pak file. These are used -// by component extensions. -class URLRequestResourceBundleJob : public net::URLRequestSimpleJob -{ -public: - URLRequestResourceBundleJob(net::URLRequest *request, net::NetworkDelegate *network_delegate, - const base::FilePath &filename, int resource_id, - const std::string &content_security_policy, bool send_cors_header) - : net::URLRequestSimpleJob(request, network_delegate) - , filename_(filename) - , resource_id_(resource_id) - , weak_factory_(this) - { - // Leave cache headers out of resource bundle requests. - response_info_.headers = extensions::BuildHttpHeaders(content_security_policy, send_cors_header, base::Time()); - } - int GetRefCountedData(std::string *mime_type, std::string *charset, scoped_refptr<base::RefCountedMemory> *data, - net::CompletionOnceCallback callback) const override - { - const ui::ResourceBundle &rb = ui::ResourceBundle::GetSharedInstance(); - *data = rb.LoadDataResourceBytes(resource_id_); - - // Add the Content-Length header now that we know the resource length. - response_info_.headers->AddHeader(base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentLength, - base::NumberToString((*data)->size()).c_str())); - - std::string *read_mime_type = new std::string; - base::PostTaskWithTraitsAndReplyWithResult( - FROM_HERE, { base::MayBlock() }, - base::BindOnce(&net::GetMimeTypeFromFile, filename_, base::Unretained(read_mime_type)), - base::BindOnce(&URLRequestResourceBundleJob::OnMimeTypeRead, weak_factory_.GetWeakPtr(), mime_type, - charset, *data, base::Owned(read_mime_type), std::move(callback))); - - return net::ERR_IO_PENDING; - } - - void GetResponseInfo(net::HttpResponseInfo *info) override { *info = response_info_; } - -private: - ~URLRequestResourceBundleJob() override {} - - void OnMimeTypeRead(std::string *out_mime_type, std::string *charset, scoped_refptr<base::RefCountedMemory> data, - std::string *read_mime_type, net::CompletionOnceCallback callback, bool read_result) - { - response_info_.headers->AddHeader( - base::StringPrintf("%s: %s", net::HttpRequestHeaders::kContentType, read_mime_type->c_str())); - *out_mime_type = *read_mime_type; - DetermineCharset(*read_mime_type, data.get(), charset); - int result = read_result ? net::OK : net::ERR_INVALID_URL; - std::move(callback).Run(result); - } - - // We need the filename of the resource to determine the mime type. - base::FilePath filename_; - - // The resource to load. - int resource_id_; - - net::HttpResponseInfo response_info_; - - mutable base::WeakPtrFactory<URLRequestResourceBundleJob> weak_factory_; -}; - scoped_refptr<base::RefCountedMemory> GetResource(int resource_id, const std::string &extension_id) { const ui::ResourceBundle &rb = ui::ResourceBundle::GetSharedInstance(); @@ -228,7 +166,6 @@ public: void SetPriority(net::RequestPriority priority, int32_t intra_priority_value) override {} void PauseReadingBodyFromNet() override {} void ResumeReadingBodyFromNet() override {} - void ProceedWithResponse() override {} private: ResourceBundleFileLoader(const std::string &content_security_policy, bool send_cors_header) : binding_(this) @@ -249,8 +186,8 @@ private: auto data = GetResource(resource_id, request.url.host()); std::string *read_mime_type = new std::string; - base::PostTaskWithTraitsAndReplyWithResult( - FROM_HERE, { base::MayBlock() }, + base::PostTaskAndReplyWithResult( + FROM_HERE, { base::ThreadPool(), base::MayBlock() }, base::BindOnce(&net::GetMimeTypeFromFile, filename, base::Unretained(read_mime_type)), base::BindOnce(&ResourceBundleFileLoader::OnMimeTypeRead, weak_factory_.GetWeakPtr(), std::move(data), base::Owned(read_mime_type))); @@ -394,38 +331,6 @@ bool ExtensionsBrowserClientQt::CanExtensionCrossIncognito(const Extension *exte return false; } -net::URLRequestJob *ExtensionsBrowserClientQt::MaybeCreateResourceBundleRequestJob(net::URLRequest *request, - net::NetworkDelegate *network_delegate, - const base::FilePath &directory_path, - const std::string &content_security_policy, - bool send_cors_header) -{ - base::FilePath resources_path; - base::FilePath relative_path; - // Try to load extension resources from chrome resource file if - // directory_path is a descendant of resources_path. resources_path - // corresponds to src/chrome/browser/resources in source tree. - if (base::PathService::Get(base::DIR_QT_LIBRARY_DATA, &resources_path) && - // Since component extension resources are included in - // component_extension_resources.pak file in resources_path, calculate - // extension relative path against resources_path. - resources_path.AppendRelativePath(directory_path, &relative_path)) { - base::FilePath request_path = extensions::file_util::ExtensionURLToRelativeFilePath(request->url()); - int resource_id = 0; - if (GetComponentExtensionResourceManager()->IsComponentExtensionResource(directory_path, request_path, &resource_id)) { - relative_path = relative_path.Append(request_path); - relative_path = relative_path.NormalizePathSeparators(); - return new URLRequestResourceBundleJob(request, - network_delegate, - relative_path, - resource_id, - content_security_policy, - send_cors_header); - } - } - return nullptr; -} - // Return the resource relative path and id for the given request. base::FilePath ExtensionsBrowserClientQt::GetBundleResourcePath(const network::ResourceRequest &request, const base::FilePath &extension_resources_path, @@ -569,7 +474,7 @@ const ComponentExtensionResourceManager *ExtensionsBrowserClientQt::GetComponent void ExtensionsBrowserClientQt::BroadcastEventToRenderers(events::HistogramValue histogram_value, const std::string &event_name, - std::unique_ptr<base::ListValue> args) + std::unique_ptr<base::ListValue> args, bool dispatch_to_off_the_record_profiles) { NOTIMPLEMENTED(); // TODO : do the event routing diff --git a/src/core/extensions/extensions_browser_client_qt.h b/src/core/extensions/extensions_browser_client_qt.h index 41cb2ce20..1a90bae95 100644 --- a/src/core/extensions/extensions_browser_client_qt.h +++ b/src/core/extensions/extensions_browser_client_qt.h @@ -73,11 +73,6 @@ public: bool IsGuestSession(content::BrowserContext *context) const override; bool IsExtensionIncognitoEnabled(const std::string &extension_id, content::BrowserContext *context) const override; bool CanExtensionCrossIncognito(const Extension *extension, content::BrowserContext *context) const override; - net::URLRequestJob *MaybeCreateResourceBundleRequestJob(net::URLRequest *request, - net::NetworkDelegate *network_delegate, - const base::FilePath &directory_path, - const std::string &content_security_policy, - bool send_cors_header) override; bool AllowCrossRendererResourceLoad(const GURL &url, content::ResourceType resource_type, ui::PageTransition page_transition, @@ -105,7 +100,8 @@ public: GetComponentExtensionResourceManager() override; void BroadcastEventToRenderers(events::HistogramValue histogram_value, const std::string &event_name, - std::unique_ptr<base::ListValue> args) override; + std::unique_ptr<base::ListValue> args, + bool dispatch_to_off_the_record_profiles) override; ExtensionCache *GetExtensionCache() override; bool IsBackgroundUpdateAllowed() override; bool IsMinBrowserVersionSupported(const std::string &min_version) override; |