feat: flesh out the api for //extensions (#21587)

This commit is contained in:
Jeremy Apthorp 2020-01-13 14:56:28 -08:00 committed by GitHub
parent 8bc0c92137
commit fa42b5980e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 159 additions and 13 deletions

View file

@ -78,7 +78,7 @@ const Extension* AtomExtensionLoader::LoadExtension(
return extension.get();
}
void AtomExtensionLoader::ReloadExtension(ExtensionId extension_id) {
void AtomExtensionLoader::ReloadExtension(const ExtensionId& extension_id) {
const Extension* extension = ExtensionRegistry::Get(browser_context_)
->GetInstalledExtension(extension_id);
// We shouldn't be trying to reload extensions that haven't been added.
@ -94,8 +94,14 @@ void AtomExtensionLoader::ReloadExtension(ExtensionId extension_id) {
return;
}
void AtomExtensionLoader::UnloadExtension(
const ExtensionId& extension_id,
extensions::UnloadedExtensionReason reason) {
extension_registrar_.RemoveExtension(extension_id, reason);
}
void AtomExtensionLoader::FinishExtensionReload(
const ExtensionId old_extension_id,
const ExtensionId& old_extension_id,
scoped_refptr<const Extension> extension) {
if (extension) {
extension_registrar_.AddExtension(extension);

View file

@ -41,12 +41,15 @@ class AtomExtensionLoader : public ExtensionRegistrar::Delegate {
// reloading.
// This may invalidate references to the old Extension object, so it takes the
// ID by value.
void ReloadExtension(ExtensionId extension_id);
void ReloadExtension(const ExtensionId& extension_id);
void UnloadExtension(const ExtensionId& extension_id,
extensions::UnloadedExtensionReason reason);
private:
// If the extension loaded successfully, enables it. If it's an app, launches
// it. If the load failed, updates ShellKeepAliveRequester.
void FinishExtensionReload(const ExtensionId old_extension_id,
void FinishExtensionReload(const ExtensionId& old_extension_id,
scoped_refptr<const Extension> extension);
// ExtensionRegistrar::Delegate:

View file

@ -49,7 +49,7 @@ const Extension* AtomExtensionSystem::LoadExtension(
}
const Extension* AtomExtensionSystem::LoadApp(const base::FilePath& app_dir) {
CHECK(false); // Should never call LoadApp
NOTIMPLEMENTED() << "Attempted to load platform app in Electron";
return nullptr;
}
@ -66,6 +66,11 @@ void AtomExtensionSystem::ReloadExtension(const ExtensionId& extension_id) {
extension_loader_->ReloadExtension(extension_id);
}
void AtomExtensionSystem::RemoveExtension(const ExtensionId& extension_id) {
extension_loader_->UnloadExtension(
extension_id, extensions::UnloadedExtensionReason::UNINSTALL);
}
void AtomExtensionSystem::Shutdown() {
extension_loader_.reset();
}

View file

@ -53,6 +53,8 @@ class AtomExtensionSystem : public ExtensionSystem {
// Reloads the extension with id |extension_id|.
void ReloadExtension(const ExtensionId& extension_id);
void RemoveExtension(const ExtensionId& extension_id);
// KeyedService implementation:
void Shutdown() override;