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

Unified Diff: extensions/browser/api/runtime/runtime_api.cc

Issue 2893693002: Remove NOTIFICATION_EXTENSION_ENABLED. (Closed)
Patch Set: address comments Created 3 years, 6 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 | « extensions/browser/api/runtime/runtime_api.h ('k') | extensions/browser/event_router.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: extensions/browser/api/runtime/runtime_api.cc
diff --git a/extensions/browser/api/runtime/runtime_api.cc b/extensions/browser/api/runtime/runtime_api.cc
index 11b8f758f56a819e41c73c945e49fde2d5607cf1..4f5137a03508b97166d073018eb9aff13892cfec 100644
--- a/extensions/browser/api/runtime/runtime_api.cc
+++ b/extensions/browser/api/runtime/runtime_api.cc
@@ -25,6 +25,7 @@
#include "content/public/browser/render_process_host.h"
#include "extensions/browser/api/runtime/runtime_api_delegate.h"
#include "extensions/browser/event_router.h"
+#include "extensions/browser/events/lazy_event_dispatch_util.h"
#include "extensions/browser/extension_host.h"
#include "extensions/browser/extension_prefs.h"
#include "extensions/browser/extension_registry.h"
@@ -68,15 +69,6 @@ const char kUpdatesDisabledError[] = "Autoupdate is not enabled.";
// A preference key storing the url loaded when an extension is uninstalled.
const char kUninstallUrl[] = "uninstall_url";
-// A preference key storing the information about an extension that was
-// installed but not loaded. We keep the pending info here so that we can send
-// chrome.runtime.onInstalled event during the extension load.
-const char kPrefPendingOnInstalledEventDispatchInfo[] =
- "pending_on_installed_event_dispatch_info";
-
-// Previously installed version number.
-const char kPrefPreviousVersion[] = "previous_version";
-
// The name of the directory to be returned by getPackageDirectoryEntry. This
// particular value does not matter to user code, but is chosen for consistency
// with the equivalent Pepper API.
@@ -218,6 +210,10 @@ RuntimeAPI::RuntimeAPI(content::BrowserContext* context)
// per browser context, since it updates internal state when called.
dispatch_chrome_updated_event_ =
ExtensionsBrowserClient::Get()->DidVersionUpdate(browser_context_);
+
+ EventRouter::Get(browser_context_)
+ ->lazy_event_dispatch_util()
+ ->AddObserver(this);
}
RuntimeAPI::~RuntimeAPI() {
@@ -225,15 +221,6 @@ RuntimeAPI::~RuntimeAPI() {
void RuntimeAPI::OnExtensionLoaded(content::BrowserContext* browser_context,
const Extension* extension) {
- base::Version previous_version;
- if (ReadPendingOnInstallInfoFromPref(extension->id(), &previous_version)) {
- base::ThreadTaskRunnerHandle::Get()->PostTask(
- FROM_HERE,
- base::Bind(&RuntimeEventRouter::DispatchOnInstalledEvent,
- browser_context_, extension->id(), previous_version, false));
- RemovePendingOnInstallInfoFromPref(extension->id());
- }
-
if (!dispatch_chrome_updated_event_)
return;
@@ -244,30 +231,19 @@ void RuntimeAPI::OnExtensionLoaded(content::BrowserContext* browser_context,
browser_context_, extension->id(), base::Version(), true));
}
-void RuntimeAPI::OnExtensionWillBeInstalled(
- content::BrowserContext* browser_context,
- const Extension* extension,
- bool is_update,
- const std::string& old_name) {
- // This extension might be disabled before it has a chance to load, e.g. if
- // the extension increased its permissions. So instead of trying to send the
- // onInstalled event here, we remember the fact in prefs and fire the event
- // when the extension is actually loaded.
- StorePendingOnInstallInfoToPref(extension);
-}
-
void RuntimeAPI::OnExtensionUninstalled(
content::BrowserContext* browser_context,
const Extension* extension,
UninstallReason reason) {
- RemovePendingOnInstallInfoFromPref(extension->id());
-
RuntimeEventRouter::OnExtensionUninstalled(
browser_context_, extension->id(), reason);
}
void RuntimeAPI::Shutdown() {
delegate_->RemoveUpdateObserver(this);
+ EventRouter::Get(browser_context_)
+ ->lazy_event_dispatch_util()
+ ->RemoveObserver(this);
}
void RuntimeAPI::OnAppUpdateAvailable(const Extension* extension) {
@@ -283,53 +259,6 @@ void RuntimeAPI::OnBackgroundHostStartup(const Extension* extension) {
RuntimeEventRouter::DispatchOnStartupEvent(browser_context_, extension->id());
}
-bool RuntimeAPI::ReadPendingOnInstallInfoFromPref(
- const ExtensionId& extension_id,
- base::Version* previous_version) {
- ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context_);
- DCHECK(prefs);
-
- const base::DictionaryValue* info = nullptr;
- if (!prefs->ReadPrefAsDictionary(
- extension_id, kPrefPendingOnInstalledEventDispatchInfo, &info)) {
- return false;
- }
-
- std::string previous_version_string;
- info->GetString(kPrefPreviousVersion, &previous_version_string);
- // |previous_version_string| can be empty.
- *previous_version = base::Version(previous_version_string);
- return true;
-}
-
-void RuntimeAPI::RemovePendingOnInstallInfoFromPref(
- const ExtensionId& extension_id) {
- ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context_);
- DCHECK(prefs);
-
- prefs->UpdateExtensionPref(extension_id,
- kPrefPendingOnInstalledEventDispatchInfo, nullptr);
-}
-
-void RuntimeAPI::StorePendingOnInstallInfoToPref(const Extension* extension) {
- ExtensionPrefs* prefs = ExtensionPrefs::Get(browser_context_);
- DCHECK(prefs);
-
- // |pending_on_install_info| currently only contains a version string. Instead
- // of making the pref hold a plain string, we store it as a dictionary value
- // so that we can add more stuff to it in the future if necessary.
- std::unique_ptr<base::DictionaryValue> pending_on_install_info(
- new base::DictionaryValue());
- base::Version previous_version = ExtensionRegistry::Get(browser_context_)
- ->GetStoredVersion(extension->id());
- pending_on_install_info->SetString(
- kPrefPreviousVersion,
- previous_version.IsValid() ? previous_version.GetString() : "");
- prefs->UpdateExtensionPref(extension->id(),
- kPrefPendingOnInstalledEventDispatchInfo,
- std::move(pending_on_install_info));
-}
-
void RuntimeAPI::ReloadExtension(const std::string& extension_id) {
delegate_->ReloadExtension(extension_id);
}
@@ -634,6 +563,16 @@ void RuntimeEventRouter::OnExtensionUninstalled(
RuntimeAPI::GetFactoryInstance()->Get(context)->OpenURL(uninstall_url);
}
+void RuntimeAPI::OnExtensionInstalledAndLoaded(
+ content::BrowserContext* browser_context,
+ const Extension* extension,
+ const base::Version& previous_version) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE,
+ base::Bind(&RuntimeEventRouter::DispatchOnInstalledEvent,
+ browser_context_, extension->id(), previous_version, false));
+}
+
ExtensionFunction::ResponseAction RuntimeGetBackgroundPageFunction::Run() {
ExtensionHost* host = ProcessManager::Get(browser_context())
->GetBackgroundHostForExtension(extension_id());
« no previous file with comments | « extensions/browser/api/runtime/runtime_api.h ('k') | extensions/browser/event_router.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698