Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1003)

Unified Diff: content/browser/webui/shared_resources_data_source.cc

Issue 2701183002: Avoid touching ResourceBundle fonts from non-UI thread (Closed)
Patch Set: s/IDR/Idr/ Created 3 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: content/browser/webui/shared_resources_data_source.cc
diff --git a/content/browser/webui/shared_resources_data_source.cc b/content/browser/webui/shared_resources_data_source.cc
index 03721b0c5e1d1d024c234d0ea0cc90f7f2c5a47a..693fda185408d5e806538f472ab1e6c6bf0f01fa 100644
--- a/content/browser/webui/shared_resources_data_source.cc
+++ b/content/browser/webui/shared_resources_data_source.cc
@@ -12,6 +12,7 @@
#include "base/memory/ref_counted_memory.h"
#include "base/strings/string_piece.h"
#include "base/strings/string_util.h"
+#include "content/public/browser/browser_thread.h"
#include "content/public/common/content_client.h"
#include "content/public/common/url_constants.h"
#include "ui/base/layout.h"
@@ -69,6 +70,12 @@ const ResourcesMap& GetResourcesMap() {
return *resources_map;
}
+int GetIdrForPath(const std::string& path) {
+ const ResourcesMap& resources_map = GetResourcesMap();
+ auto it = resources_map.find(path);
+ return it != resources_map.end() ? it->second : -1;
+}
+
} // namespace
SharedResourcesDataSource::SharedResourcesDataSource() {
@@ -85,9 +92,7 @@ void SharedResourcesDataSource::StartDataRequest(
const std::string& path,
const ResourceRequestInfo::WebContentsGetter& wc_getter,
const URLDataSource::GotDataCallback& callback) {
- const ResourcesMap& resources_map = GetResourcesMap();
- auto it = resources_map.find(path);
- int idr = (it != resources_map.end()) ? it->second : -1;
+ int idr = GetIdrForPath(path);
DCHECK_NE(-1, idr) << " path: " << path;
scoped_refptr<base::RefCountedMemory> bytes;
@@ -148,6 +153,14 @@ std::string SharedResourcesDataSource::GetMimeType(
scoped_refptr<base::SingleThreadTaskRunner>
SharedResourcesDataSource::TaskRunnerForRequestPath(
const std::string& path) const {
+ int idr = GetIdrForPath(path);
+ if (idr == IDR_WEBUI_CSS_TEXT_DEFAULTS ||
+ idr == IDR_WEBUI_CSS_TEXT_DEFAULTS_MD) {
+ // Use UI thread to load CSS since its construction touches non-thread-safe
+ // gfx::Font names in ui::ResourceBundle.
+ return BrowserThread::GetTaskRunnerForThread(BrowserThread::UI);
+ }
+
return nullptr;
}
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698