Commit 143aa94e authored by Hitoshi Yoshida's avatar Hitoshi Yoshida Committed by Commit Bot

[Refactoring] Clean up event factory code

This CL does following refactorings;
a) Filter usable events in .py at the beginning
b) Reduce the number of include files based on a)
c) Remove an unnecessary branch

Before this CL, make_event_factory.py filtered events to iterate
in template system.  Beside it, the code also iterated all given events
to generate included files.  As a result, a generated file included
many unnecessary header files.
After this CL, the code makes a list of events to work for, and does
every iteration over it.


Bug: 839389
Change-Id: I095a1c8e7b3a403687129160acca2f8ef880eb58
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2089545Reviewed-by: default avatarKent Tamura <tkent@chromium.org>
Commit-Queue: Hitoshi Yoshida <peria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#748082}
parent a7607b50
...@@ -90,8 +90,6 @@ class EventFactoryWriter(json5_generator.Writer): ...@@ -90,8 +90,6 @@ class EventFactoryWriter(json5_generator.Writer):
lambda entry: entry['name'].original, lambda entry: entry['name'].original,
'create_event_ignore_case_list': 'create_event_ignore_case_list':
create_event_ignore_case_list, create_event_ignore_case_list,
'create_event_ignore_case_and_measure_list':
create_event_ignore_case_and_measure_list,
'measure_name': 'measure_name':
measure_name, measure_name,
} }
...@@ -114,33 +112,35 @@ class EventFactoryWriter(json5_generator.Writer): ...@@ -114,33 +112,35 @@ class EventFactoryWriter(json5_generator.Writer):
def _headers_header_include_path(self, entry): def _headers_header_include_path(self, entry):
path = entry['interfaceHeaderDir'] path = entry['interfaceHeaderDir']
if len(path): if not path:
path += '/' return None
return path + self.get_file_basename( return path + '/' + self.get_file_basename(
name_utilities.cpp_name(entry)) + '.h' name_utilities.cpp_name(entry)) + '.h'
def _headers_header_includes(self, entries): def _headers_header_includes(self, entries):
includes = dict() includes = {
for entry in entries: 'third_party/blink/renderer/core/execution_context/execution_context.h',
cpp_name = name_utilities.cpp_name(entry) 'third_party/blink/renderer/core/frame/deprecation.h',
# Avoid duplicate includes. 'third_party/blink/renderer/platform/instrumentation/use_counter.h',
if cpp_name in includes: 'third_party/blink/renderer/platform/runtime_enabled_features.h',
continue }
includes[cpp_name] = self._headers_header_include_path(entry) includes.update(map(self._headers_header_include_path, entries))
return sorted(includes.values()) return sorted([x for x in includes if x])
@template_expander.use_jinja( @template_expander.use_jinja(
'templates/event_factory.cc.tmpl', filters=filters) 'templates/event_factory.cc.tmpl', filters=filters)
def generate_implementation(self): def generate_implementation(self):
target_events = [
event for event in self.json5_file.name_dictionaries if
(create_event_ignore_case_list(event['name'].original) or
create_event_ignore_case_and_measure_list(event['name'].original))
]
return { return {
'include_header_paths': 'include_header_paths':
self._headers_header_includes(self.json5_file.name_dictionaries), self._headers_header_includes(target_events),
'input_files': 'input_files': self._input_files,
self._input_files, 'suffix': self.suffix,
'suffix': 'events': target_events,
self.suffix,
'events':
self.json5_file.name_dictionaries,
} }
......
...@@ -9,21 +9,15 @@ ...@@ -9,21 +9,15 @@
#include "third_party/blink/renderer/core/events/event_factory.h" #include "third_party/blink/renderer/core/events/event_factory.h"
{% endif %} {% endif %}
#include "third_party/blink/renderer/core/frame/deprecation.h"
{% for header_path in include_header_paths %} {% for header_path in include_header_paths %}
#include "{{header_path}}" #include "{{header_path}}"
{% endfor %} {% endfor %}
#include "third_party/blink/renderer/platform/runtime_enabled_features.h"
namespace blink { namespace blink {
Event* Event{{suffix}}Factory::Create(ExecutionContext* executionContext, const String& type) { Event* Event{{suffix}}Factory::Create(ExecutionContext* executionContext, const String& type) {
{% for event in events if event|name|create_event_ignore_case_list or event|name|create_event_ignore_case_and_measure_list %} {% for event in events %}
{% if event|name|create_event_ignore_case_list or event|name|create_event_ignore_case_and_measure_list %}
if (DeprecatedEqualIgnoringCase(type, "{{event|name}}"){% if event.RuntimeEnabled %} && RuntimeEnabledFeatures::{{event.RuntimeEnabled}}(){% endif %}) { if (DeprecatedEqualIgnoringCase(type, "{{event|name}}"){% if event.RuntimeEnabled %} && RuntimeEnabledFeatures::{{event.RuntimeEnabled}}(){% endif %}) {
{% else %}
if (type == "{{event|name}}"{% if event.RuntimeEnabled %} && RuntimeEnabledFeatures::{{event.RuntimeEnabled}}(){% endif %}) {
{% endif %}
{% if not event|name|create_event_ignore_case_list %} {% if not event|name|create_event_ignore_case_list %}
UseCounter::Count(executionContext, WebFeature::k{{event|name|measure_name}}); UseCounter::Count(executionContext, WebFeature::k{{event|name|measure_name}});
{% endif %} {% endif %}
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment