Index: third_party/WebKit/Source/bindings/scripts/v8_utilities.py |
diff --git a/third_party/WebKit/Source/bindings/scripts/v8_utilities.py b/third_party/WebKit/Source/bindings/scripts/v8_utilities.py |
index 723bb55c77a94accf20f7910f852acb16beb121a..183763570ceb21108928d84ef7249b514e7e816e 100644 |
--- a/third_party/WebKit/Source/bindings/scripts/v8_utilities.py |
+++ b/third_party/WebKit/Source/bindings/scripts/v8_utilities.py |
@@ -366,27 +366,44 @@ def measure_as(definition_or_member, interface): |
return None |
-def runtime_feature_name(definition_or_member): |
+# [OriginTrialEnabled] |
+def origin_trial_enabled_function_name(definition_or_member, interface): |
+ """Returns the name of the OriginTrials enabled function. |
+ |
+ An exception is raised if both the OriginTrialEnabled and RuntimeEnabled |
+ extended attributes are applied to the same IDL member. Only one of the |
+ two attributes can be applied to any member - they are mutually exclusive. |
+ |
+ The returned function checks if the IDL member should be enabled. |
+ Given extended attribute OriginTrialEnabled=FeatureName, return: |
+ OriginTrials::{featureName}Enabled |
+ |
+ If the OriginTrialEnabled extended attribute is found, the includes are |
+ also updated as a side-effect. |
+ """ |
extended_attributes = definition_or_member.extended_attributes |
- if 'RuntimeEnabled' not in extended_attributes: |
- return None |
- return extended_attributes['RuntimeEnabled'] |
+ is_origin_trial_enabled = 'OriginTrialEnabled' in extended_attributes |
+ if (is_origin_trial_enabled and 'RuntimeEnabled' in extended_attributes): |
+ raise Exception('[OriginTrialEnabled] and [RuntimeEnabled] must ' |
+ 'not be specified on the same definition: ' |
+ '%s.%s' % (definition_or_member.idl_name, definition_or_member.name)) |
-def is_origin_trial_enabled(definition_or_member): |
- return 'OriginTrialEnabled' in definition_or_member.extended_attributes |
+ if is_origin_trial_enabled: |
+ includes.add('core/inspector/ConsoleMessage.h') |
+ includes.add('core/origin_trials/OriginTrials.h') |
+ trial_name = extended_attributes['OriginTrialEnabled'] |
+ return 'OriginTrials::%sEnabled' % uncapitalize(trial_name) |
-def origin_trial_name(definition_or_member): |
- return definition_or_member.extended_attributes['OriginTrialEnabled'] if is_origin_trial_enabled(definition_or_member) else None |
+ return None |
-def origin_trial_enabled_function(definition_or_member): |
- trial_name = origin_trial_name(definition_or_member) |
- feature_name = runtime_feature_name(definition_or_member) |
- if not feature_name or not trial_name: |
- return |
- return 'OriginTrials::%sEnabled' % uncapitalize(feature_name) |
+def runtime_feature_name(definition_or_member): |
+ extended_attributes = definition_or_member.extended_attributes |
+ if 'RuntimeEnabled' not in extended_attributes: |
+ return None |
+ return extended_attributes['RuntimeEnabled'] |
# [RuntimeEnabled] |
@@ -396,17 +413,16 @@ def runtime_enabled_function_name(definition_or_member): |
The returned function checks if a method/attribute is enabled. |
Given extended attribute RuntimeEnabled=FeatureName, return: |
RuntimeEnabledFeatures::{featureName}Enabled |
+ |
+ If the RuntimeEnabled extended attribute is found, the includes |
+ are also updated as a side-effect. |
""" |
feature_name = runtime_feature_name(definition_or_member) |
- # If an origin trial is on the method/attribute, it overrides the runtime |
- # enabled status. For now, we are unconditionally installing these |
- # attributes/methods, so we are acting as though the runtime enabled |
- # function doesn't exist. (It is checked in the generated OriginTrials |
- # function, instead) |
- trial_name = origin_trial_name(definition_or_member) |
- if not feature_name or trial_name: |
+ if not feature_name: |
return |
+ |
+ includes.add('platform/RuntimeEnabledFeatures.h') |
return 'RuntimeEnabledFeatures::%sEnabled' % uncapitalize(feature_name) |