Bug 1568157 - Part 5: Move the NodePicker initialization into a getter. r=yulia
[gecko.git] / layout / generic / GenerateFrameLists.py
blob51c06dd13bb3164b64dd0fd0cce7fd1212857743
1 # This Source Code Form is subject to the terms of the Mozilla Public
2 # License, v. 2.0. If a copy of the MPL was not distributed with this
3 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 from FrameClasses import FRAME_CLASSES
8 HEADER = "// THIS IS AUTOGENERATED BY GenerateFrameLists.py. DO NOT EDIT\n"
11 # Returns a list of list of FrameClass objects. The outermost list groups
12 # the FrameClasses by their frame type, and is sorted from the largest group
13 # to the smallest, and otherwise sorted by the frame type or class name.
14 def grouped_frame_classes():
15 groups = dict()
16 for frame in FRAME_CLASSES:
17 if frame.is_concrete:
18 groups.setdefault(frame.ty, []).append(frame)
19 groups = groups.values()
20 groups.sort(key=lambda x: (-len(x), x[0].ty if len(x) > 1 else x[0].cls))
21 return groups
24 def generate_frame_id_list_h(output, *ignore):
25 groups = grouped_frame_classes()
26 output.write(HEADER)
27 for group in groups:
28 for frame in group:
29 output.write("FRAME_ID(%s, %s, %s)\n" % (frame.cls, frame.ty, frame.leafness))
30 for frame in FRAME_CLASSES:
31 if not frame.is_concrete:
32 output.write("ABSTRACT_FRAME_ID(%s)\n" % frame.cls)
35 def generate_frame_type_list_h(output, *ignore):
36 groups = grouped_frame_classes()
37 output.write(HEADER)
38 for group in groups:
39 output.write("FRAME_TYPE(%s, %s, %s)\n" % (group[0].ty, group[0].cls, group[-1].cls))