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