fix: [extensions] load extensions on the IO thread (#21811)

This commit is contained in:
Jeremy Apthorp 2020-01-21 09:43:18 -08:00 committed by GitHub
parent acb5b75057
commit 100a85f93a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 46 additions and 35 deletions

View file

@ -615,15 +615,20 @@ v8::Local<v8::Promise> Session::LoadExtension(
auto* extension_system = static_cast<extensions::AtomExtensionSystem*>(
extensions::ExtensionSystem::Get(browser_context()));
// TODO(nornagon): make LoadExtension() asynchronous.
auto* extension = extension_system->LoadExtension(extension_path);
if (extension) {
promise.Resolve(extension);
} else {
// TODO(nornagon): plumb through error message from extension loader.
promise.RejectWithErrorMessage("Failed to load extension");
}
extension_system->LoadExtension(
extension_path,
base::BindOnce(
[](gin_helper::Promise<const extensions::Extension*> promise,
const extensions::Extension* extension) {
if (extension) {
promise.Resolve(extension);
} else {
// TODO(nornagon): plumb through error message from extension
// loader.
promise.RejectWithErrorMessage("Failed to load extension");
}
},
std::move(promise)));
return handle;
}