Commit 0579e73f authored by Hitoshi Yoshida's avatar Hitoshi Yoshida Committed by Commit Bot

CodeGen: Wrap IDL enum dictionary members with an adapter

The new code generator will use V8Enum classes for IDL enum members in
IDL dictionaries.
However, in some cases, implicit conversion of IDL enum to String
doesn't work.
This CL wraps them with IDLEnumAsString() to make them workable with
both of old/new code generator.  They will be unwrapped after migrating
the code generators.


Bug: 839389, 1070871
Change-Id: Ide73bca4fb4f7785b0c243fa1c2e7c8bfc99e6d6
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2230588
Commit-Queue: Kinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarKinuko Yasuda <kinuko@chromium.org>
Reviewed-by: default avatarYuki Shiino <yukishiino@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Auto-Submit: Hitoshi Yoshida <peria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#793525}
parent 72e01be3
...@@ -18,6 +18,7 @@ ...@@ -18,6 +18,7 @@
#include "third_party/blink/renderer/core/html/canvas/image_data.h" #include "third_party/blink/renderer/core/html/canvas/image_data.h"
#include "third_party/blink/renderer/core/html/media/html_video_element.h" #include "third_party/blink/renderer/core/html/media/html_video_element.h"
#include "third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h" #include "third_party/blink/renderer/core/offscreencanvas/offscreen_canvas.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h" #include "third_party/blink/renderer/platform/graphics/accelerated_static_bitmap_image.h"
#include "third_party/blink/renderer/platform/graphics/canvas_color_params.h" #include "third_party/blink/renderer/platform/graphics/canvas_color_params.h"
#include "third_party/blink/renderer/platform/graphics/canvas_resource_provider.h" #include "third_party/blink/renderer/platform/graphics/canvas_resource_provider.h"
...@@ -112,7 +113,7 @@ ImageBitmap::ParsedOptions ParseOptions(const ImageBitmapOptions* options, ...@@ -112,7 +113,7 @@ ImageBitmap::ParsedOptions ParseOptions(const ImageBitmapOptions* options,
} else { } else {
NOTREACHED() NOTREACHED()
<< "Invalid ImageBitmap creation attribute colorSpaceConversion: " << "Invalid ImageBitmap creation attribute colorSpaceConversion: "
<< options->colorSpaceConversion(); << IDLEnumAsString(options->colorSpaceConversion());
} }
} }
......
...@@ -44,6 +44,7 @@ ...@@ -44,6 +44,7 @@
#include "third_party/blink/renderer/core/workers/worker_classic_script_loader.h" #include "third_party/blink/renderer/core/workers/worker_classic_script_loader.h"
#include "third_party/blink/renderer/core/workers/worker_clients.h" #include "third_party/blink/renderer/core/workers/worker_clients.h"
#include "third_party/blink/renderer/core/workers/worker_global_scope.h" #include "third_party/blink/renderer/core/workers/worker_global_scope.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h" #include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h" #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
...@@ -264,7 +265,7 @@ void DedicatedWorker::OnHostCreated( ...@@ -264,7 +265,7 @@ void DedicatedWorker::OnHostCreated(
String() /* source_code */, reject_coep_unsafe_none); String() /* source_code */, reject_coep_unsafe_none);
return; return;
} }
NOTREACHED() << "Invalid type: " << options_->type(); NOTREACHED() << "Invalid type: " << IDLEnumAsString(options_->type());
} }
void DedicatedWorker::terminate() { void DedicatedWorker::terminate() {
......
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
#include "third_party/blink/renderer/modules/credentialmanager/federated_credential.h" #include "third_party/blink/renderer/modules/credentialmanager/federated_credential.h"
#include "third_party/blink/renderer/modules/credentialmanager/password_credential.h" #include "third_party/blink/renderer/modules/credentialmanager/password_credential.h"
#include "third_party/blink/renderer/modules/credentialmanager/public_key_credential.h" #include "third_party/blink/renderer/modules/credentialmanager/public_key_credential.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
namespace mojo { namespace mojo {
...@@ -306,8 +307,8 @@ TypeConverter<AuthenticatorSelectionCriteriaPtr, ...@@ -306,8 +307,8 @@ TypeConverter<AuthenticatorSelectionCriteriaPtr,
mojo_criteria->require_resident_key = criteria->requireResidentKey(); mojo_criteria->require_resident_key = criteria->requireResidentKey();
mojo_criteria->user_verification = UserVerificationRequirement::PREFERRED; mojo_criteria->user_verification = UserVerificationRequirement::PREFERRED;
if (criteria->hasUserVerification()) { if (criteria->hasUserVerification()) {
mojo_criteria->user_verification = mojo_criteria->user_verification = ConvertTo<UserVerificationRequirement>(
ConvertTo<UserVerificationRequirement>(criteria->userVerification()); blink::IDLEnumAsString(criteria->userVerification()));
} }
return mojo_criteria; return mojo_criteria;
} }
...@@ -359,8 +360,8 @@ TypeConverter<PublicKeyCredentialDescriptorPtr, ...@@ -359,8 +360,8 @@ TypeConverter<PublicKeyCredentialDescriptorPtr,
Convert(const blink::PublicKeyCredentialDescriptor* descriptor) { Convert(const blink::PublicKeyCredentialDescriptor* descriptor) {
auto mojo_descriptor = PublicKeyCredentialDescriptor::New(); auto mojo_descriptor = PublicKeyCredentialDescriptor::New();
mojo_descriptor->type = mojo_descriptor->type = ConvertTo<PublicKeyCredentialType>(
ConvertTo<PublicKeyCredentialType>(descriptor->type()); blink::IDLEnumAsString(descriptor->type()));
mojo_descriptor->id = ConvertTo<Vector<uint8_t>>(descriptor->id()); mojo_descriptor->id = ConvertTo<Vector<uint8_t>>(descriptor->id());
if (descriptor->hasTransports() && !descriptor->transports().IsEmpty()) { if (descriptor->hasTransports() && !descriptor->transports().IsEmpty()) {
for (const auto& transport : descriptor->transports()) { for (const auto& transport : descriptor->transports()) {
...@@ -385,7 +386,8 @@ TypeConverter<PublicKeyCredentialParametersPtr, ...@@ -385,7 +386,8 @@ TypeConverter<PublicKeyCredentialParametersPtr,
blink::PublicKeyCredentialParameters*>:: blink::PublicKeyCredentialParameters*>::
Convert(const blink::PublicKeyCredentialParameters* parameter) { Convert(const blink::PublicKeyCredentialParameters* parameter) {
auto mojo_parameter = PublicKeyCredentialParameters::New(); auto mojo_parameter = PublicKeyCredentialParameters::New();
mojo_parameter->type = ConvertTo<PublicKeyCredentialType>(parameter->type()); mojo_parameter->type = ConvertTo<PublicKeyCredentialType>(
blink::IDLEnumAsString(parameter->type()));
// A COSEAlgorithmIdentifier's value is a number identifying a cryptographic // A COSEAlgorithmIdentifier's value is a number identifying a cryptographic
// algorithm. Values are registered in the IANA COSE Algorithms registry. // algorithm. Values are registered in the IANA COSE Algorithms registry.
...@@ -577,8 +579,8 @@ TypeConverter<PublicKeyCredentialRequestOptionsPtr, ...@@ -577,8 +579,8 @@ TypeConverter<PublicKeyCredentialRequestOptionsPtr,
mojo_options->user_verification = UserVerificationRequirement::PREFERRED; mojo_options->user_verification = UserVerificationRequirement::PREFERRED;
if (options->hasUserVerification()) { if (options->hasUserVerification()) {
mojo_options->user_verification = mojo_options->user_verification = ConvertTo<UserVerificationRequirement>(
ConvertTo<UserVerificationRequirement>(options->userVerification()); blink::IDLEnumAsString(options->userVerification()));
} }
if (options->hasExtensions()) { if (options->hasExtensions()) {
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "third_party/blink/renderer/modules/indexeddb/idb_database.h" #include "third_party/blink/renderer/modules/indexeddb/idb_database.h"
#include "third_party/blink/renderer/modules/indexeddb/idb_observer_changes.h" #include "third_party/blink/renderer/modules/indexeddb/idb_observer_changes.h"
#include "third_party/blink/renderer/modules/indexeddb/idb_transaction.h" #include "third_party/blink/renderer/modules/indexeddb/idb_transaction.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
namespace blink { namespace blink {
...@@ -68,7 +69,8 @@ void IDBObserver::observe(IDBDatabase* database, ...@@ -68,7 +69,8 @@ void IDBObserver::observe(IDBDatabase* database,
types[static_cast<size_t>(mojom::IDBOperationType::Clear)] = true; types[static_cast<size_t>(mojom::IDBOperationType::Clear)] = true;
} else { } else {
exception_state.ThrowTypeError( exception_state.ThrowTypeError(
"Unknown operation type in observe options: " + operation_type); "Unknown operation type in observe options: " +
IDLEnumAsString(operation_type));
return; return;
} }
} }
......
...@@ -14,6 +14,7 @@ ...@@ -14,6 +14,7 @@
#include "third_party/blink/renderer/modules/notifications/notification.h" #include "third_party/blink/renderer/modules/notifications/notification.h"
#include "third_party/blink/renderer/modules/notifications/timestamp_trigger.h" #include "third_party/blink/renderer/modules/notifications/timestamp_trigger.h"
#include "third_party/blink/renderer/modules/vibration/vibration_controller.h" #include "third_party/blink/renderer/modules/vibration/vibration_controller.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/instrumentation/use_counter.h" #include "third_party/blink/renderer/platform/instrumentation/use_counter.h"
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
...@@ -22,7 +23,6 @@ ...@@ -22,7 +23,6 @@
namespace blink { namespace blink {
namespace { namespace {
// TODO(crbug.com/1092328): Use V8NotificationDirection.
mojom::blink::NotificationDirection ToDirectionEnumValue( mojom::blink::NotificationDirection ToDirectionEnumValue(
const String& direction) { const String& direction) {
if (direction == "ltr") if (direction == "ltr")
...@@ -128,12 +128,14 @@ mojom::blink::NotificationDataPtr CreateNotificationData( ...@@ -128,12 +128,14 @@ mojom::blink::NotificationDataPtr CreateNotificationData(
notification_action->action = action->action(); notification_action->action = action->action();
notification_action->title = action->title(); notification_action->title = action->title();
if (action->type() == "button") if (action->type() == "button") {
notification_action->type = mojom::blink::NotificationActionType::BUTTON; notification_action->type = mojom::blink::NotificationActionType::BUTTON;
else if (action->type() == "text") } else if (action->type() == "text") {
notification_action->type = mojom::blink::NotificationActionType::TEXT; notification_action->type = mojom::blink::NotificationActionType::TEXT;
else } else {
NOTREACHED() << "Unknown action type: " << action->type(); NOTREACHED() << "Unknown action type: "
<< IDLEnumAsString(action->type());
}
if (!action->placeholder().IsNull() && if (!action->placeholder().IsNull() &&
notification_action->type == notification_action->type ==
......
...@@ -12,6 +12,7 @@ ...@@ -12,6 +12,7 @@
#include "third_party/blink/renderer/core/frame/local_dom_window.h" #include "third_party/blink/renderer/core/frame/local_dom_window.h"
#include "third_party/blink/renderer/modules/scheduler/dom_task.h" #include "third_party/blink/renderer/modules/scheduler/dom_task.h"
#include "third_party/blink/renderer/modules/scheduler/dom_task_signal.h" #include "third_party/blink/renderer/modules/scheduler/dom_task_signal.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h" #include "third_party/blink/renderer/platform/scheduler/public/frame_scheduler.h"
#include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h" #include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_priority.h"
#include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_task_queue.h" #include "third_party/blink/renderer/platform/scheduler/public/web_scheduling_task_queue.h"
...@@ -90,7 +91,7 @@ ScriptPromise DOMScheduler::postTask(ScriptState* script_state, ...@@ -90,7 +91,7 @@ ScriptPromise DOMScheduler::postTask(ScriptState* script_state,
WebSchedulingPriority priority = WebSchedulingPriority priority =
options->hasPriorityNonNull() options->hasPriorityNonNull()
? WebSchedulingPriorityFromString( ? WebSchedulingPriorityFromString(
AtomicString(options->priorityNonNull())) AtomicString(IDLEnumAsString(options->priorityNonNull())))
: WebSchedulingPriority::kUserVisiblePriority; : WebSchedulingPriority::kUserVisiblePriority;
task_signal = MakeGarbageCollected<DOMTaskSignal>( task_signal = MakeGarbageCollected<DOMTaskSignal>(
GetSupplementable(), priority, DOMTaskSignal::Type::kImplicit); GetSupplementable(), priority, DOMTaskSignal::Type::kImplicit);
......
...@@ -15,6 +15,7 @@ ...@@ -15,6 +15,7 @@
#include "third_party/blink/renderer/core/html/canvas/canvas_image_source.h" #include "third_party/blink/renderer/core/html/canvas/canvas_image_source.h"
#include "third_party/blink/renderer/core/workers/worker_thread.h" #include "third_party/blink/renderer/core/workers/worker_thread.h"
#include "third_party/blink/renderer/modules/shapedetection/barcode_detector_statics.h" #include "third_party/blink/renderer/modules/shapedetection/barcode_detector_statics.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap.h"
namespace blink { namespace blink {
...@@ -72,7 +73,7 @@ BarcodeDetector::BarcodeDetector(ExecutionContext* context, ...@@ -72,7 +73,7 @@ BarcodeDetector::BarcodeDetector(ExecutionContext* context,
// TODO(https://github.com/WICG/shape-detection-api/issues/66): // TODO(https://github.com/WICG/shape-detection-api/issues/66):
// potentially process UNKNOWN as platform-specific formats. // potentially process UNKNOWN as platform-specific formats.
for (const auto& format_string : options->formats()) { for (const auto& format_string : options->formats()) {
auto format = StringToBarcodeFormat(format_string); auto format = StringToBarcodeFormat(IDLEnumAsString(format_string));
if (format != shape_detection::mojom::blink::BarcodeFormat::UNKNOWN) if (format != shape_detection::mojom::blink::BarcodeFormat::UNKNOWN)
barcode_detector_options->formats.push_back(format); barcode_detector_options->formats.push_back(format);
} }
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "third_party/blink/renderer/bindings/modules/v8/v8_audio_param_descriptor.h" #include "third_party/blink/renderer/bindings/modules/v8/v8_audio_param_descriptor.h"
#include "third_party/blink/renderer/modules/webaudio/audio_worklet_processor_definition.h" #include "third_party/blink/renderer/modules/webaudio/audio_worklet_processor_definition.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
namespace blink { namespace blink {
...@@ -18,7 +19,8 @@ class CrossThreadAudioParamInfo { ...@@ -18,7 +19,8 @@ class CrossThreadAudioParamInfo {
public: public:
explicit CrossThreadAudioParamInfo(const AudioParamDescriptor* descriptor) explicit CrossThreadAudioParamInfo(const AudioParamDescriptor* descriptor)
: automation_rate_(descriptor->automationRate().IsolatedCopy()), : automation_rate_(
IDLEnumAsString(descriptor->automationRate()).IsolatedCopy()),
default_value_(descriptor->defaultValue()), default_value_(descriptor->defaultValue()),
max_value_(descriptor->maxValue()), max_value_(descriptor->maxValue()),
min_value_(descriptor->minValue()), min_value_(descriptor->minValue()),
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "third_party/blink/renderer/modules/webaudio/periodic_wave.h" #include "third_party/blink/renderer/modules/webaudio/periodic_wave.h"
#include "third_party/blink/renderer/platform/audio/audio_utilities.h" #include "third_party/blink/renderer/platform/audio/audio_utilities.h"
#include "third_party/blink/renderer/platform/audio/vector_math.h" #include "third_party/blink/renderer/platform/audio/vector_math.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/wtf/math_extras.h" #include "third_party/blink/renderer/platform/wtf/math_extras.h"
#include "third_party/blink/renderer/platform/wtf/std_lib_extras.h" #include "third_party/blink/renderer/platform/wtf/std_lib_extras.h"
...@@ -850,7 +851,7 @@ OscillatorNode* OscillatorNode::Create(BaseAudioContext* context, ...@@ -850,7 +851,7 @@ OscillatorNode* OscillatorNode::Create(BaseAudioContext* context,
// TODO(crbug.com/1070871): Use periodicWaveOr(nullptr). // TODO(crbug.com/1070871): Use periodicWaveOr(nullptr).
OscillatorNode* node = OscillatorNode* node =
Create(*context, options->type(), Create(*context, IDLEnumAsString(options->type()),
options->hasPeriodicWave() ? options->periodicWave() : nullptr, options->hasPeriodicWave() ? options->periodicWave() : nullptr,
exception_state); exception_state);
......
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include "third_party/blink/renderer/core/streams/writable_stream.h" #include "third_party/blink/renderer/core/streams/writable_stream.h"
#include "third_party/blink/renderer/modules/webcodecs/encoded_video_chunk.h" #include "third_party/blink/renderer/modules/webcodecs/encoded_video_chunk.h"
#include "third_party/blink/renderer/modules/webcodecs/encoded_video_metadata.h" #include "third_party/blink/renderer/modules/webcodecs/encoded_video_metadata.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/bindings/exception_state.h" #include "third_party/blink/renderer/platform/bindings/exception_state.h"
#include "third_party/blink/renderer/platform/bindings/script_state.h" #include "third_party/blink/renderer/platform/bindings/script_state.h"
#include "third_party/blink/renderer/platform/scheduler/public/thread.h" #include "third_party/blink/renderer/platform/scheduler/public/thread.h"
...@@ -258,7 +259,7 @@ void VideoEncoder::ProcessConfigure(Request* request) { ...@@ -258,7 +259,7 @@ void VideoEncoder::ProcessConfigure(Request* request) {
} }
if (config->hasAcceleration()) { if (config->hasAcceleration()) {
std::string preference = config->acceleration().Utf8(); std::string preference = IDLEnumAsString(config->acceleration()).Utf8();
if (preference == "deny") { if (preference == "deny") {
acc_pref = AccelerationPreference::kDeny; acc_pref = AccelerationPreference::kDeny;
} else if (preference == "require") { } else if (preference == "require") {
......
...@@ -50,6 +50,7 @@ ...@@ -50,6 +50,7 @@
#include "third_party/blink/renderer/modules/xr/xr_webgl_layer.h" #include "third_party/blink/renderer/modules/xr/xr_webgl_layer.h"
#include "third_party/blink/renderer/modules/xr/xr_world_information.h" #include "third_party/blink/renderer/modules/xr/xr_world_information.h"
#include "third_party/blink/renderer/modules/xr/xr_world_tracking_state.h" #include "third_party/blink/renderer/modules/xr/xr_world_tracking_state.h"
#include "third_party/blink/renderer/platform/bindings/enumeration_base.h"
#include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h" #include "third_party/blink/renderer/platform/bindings/v8_throw_exception.h"
#include "third_party/blink/renderer/platform/geometry/float_point_3d.h" #include "third_party/blink/renderer/platform/geometry/float_point_3d.h"
#include "third_party/blink/renderer/platform/heap/heap.h" #include "third_party/blink/renderer/platform/heap/heap.h"
...@@ -182,8 +183,8 @@ Vector<device::mojom::blink::EntityTypeForHitTest> GetEntityTypesForHitTest( ...@@ -182,8 +183,8 @@ Vector<device::mojom::blink::EntityTypeForHitTest> GetEntityTypesForHitTest(
if (maybe_entity_type) { if (maybe_entity_type) {
result_set.insert(*maybe_entity_type); result_set.insert(*maybe_entity_type);
} else { } else {
DVLOG(1) << __func__ DVLOG(1) << __func__ << ": entityTypes entry ignored:"
<< ": entityTypes entry ignored:" << entity_type_string; << IDLEnumAsString(entity_type_string);
} }
} }
} else { } else {
......
...@@ -131,6 +131,19 @@ operator==(const char* lhs, const EnumTypeClass& rhs) { ...@@ -131,6 +131,19 @@ operator==(const char* lhs, const EnumTypeClass& rhs) {
return rhs == lhs; return rhs == lhs;
} }
// TODO(crbug.com/1092328): IDLEnumAsString is an adapter between the old and
// new bindings generators. The old bindings generator implements IDL
// enumeration with String class, however, the new bindings generator implements
// it with subclasses of EnumerationBase. IDLEnumAsString resolves this
// difference.
inline const String& IDLEnumAsString(const String& value) {
return value;
}
inline String IDLEnumAsString(const bindings::EnumerationBase& value) {
return value.AsString();
}
} // namespace blink } // namespace blink
#endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_BINDINGS_ENUMERATION_BASE_H_ #endif // THIRD_PARTY_BLINK_RENDERER_PLATFORM_BINDINGS_ENUMERATION_BASE_H_
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