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; |
} |