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

Unified Diff: headless/lib/browser/domain_cc.template

Issue 2476723002: headless: Register event handlers on demand (Closed)
Patch Set: Created 4 years, 1 month 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 | headless/lib/browser/domain_h.template » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: headless/lib/browser/domain_cc.template
diff --git a/headless/lib/browser/domain_cc.template b/headless/lib/browser/domain_cc.template
index 8adf35b3f79402250a5eca28d370985e734b434d..a59ea16c62a4a80cc3a082ced64a02557f44a805 100644
--- a/headless/lib/browser/domain_cc.template
+++ b/headless/lib/browser/domain_cc.template
@@ -18,12 +18,26 @@ ExperimentalDomain* Domain::GetExperimental() {
{% if "events" in domain %}
void Domain::AddObserver(Observer* observer) {
+ RegisterEventHandlersIfNeeded();
observers_.AddObserver(observer);
}
void Domain::RemoveObserver(Observer* observer) {
observers_.RemoveObserver(observer);
}
+
+void Domain::RegisterEventHandlersIfNeeded() {
+ if (event_handlers_registered_)
+ return;
+ event_handlers_registered_ = true;
+ {# Register all events in this domain. #}
+ {% for event in domain.events %}
+ dispatcher_->RegisterEventHandler(
+ "{{domain.domain}}.{{event.name}}",
+ base::Bind(&Domain::Dispatch{{event.name | to_title_case}}Event,
+ base::Unretained(this)));
+ {% endfor %}
+}
{% endif %}
{% for command in domain.commands %}
@@ -111,15 +125,6 @@ void Domain::Dispatch{{event.name | to_title_case}}Event(const base::Value& para
Domain::Domain(internal::MessageDispatcher* dispatcher)
: dispatcher_(dispatcher) {
- {% if "events" in domain %}
- {# Register all events in this domain. #}
- {% for event in domain.events %}
- dispatcher_->RegisterEventHandler(
- "{{domain.domain}}.{{event.name}}",
- base::Bind(&Domain::Dispatch{{event.name | to_title_case}}Event,
- base::Unretained(this)));
- {% endfor %}
- {% endif %}
}
Domain::~Domain() {}
@@ -131,6 +136,7 @@ ExperimentalDomain::~ExperimentalDomain() {}
{% if "events" in domain %}
void ExperimentalDomain::AddObserver(ExperimentalObserver* observer) {
+ RegisterEventHandlersIfNeeded();
observers_.AddObserver(observer);
}
« no previous file with comments | « no previous file | headless/lib/browser/domain_h.template » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698