Commit f4bc42e2 authored by Hitoshi Yoshida's avatar Hitoshi Yoshida Committed by Commit Bot

bindings: Make binding test work for both IDL compilers

We are migrating IDL compilers, and IDL dictionaries have few
behavior differences.
This CL makes idl-dictionary-bindings test work with either of
new/old IDL compilers.

Bug: 839389
Change-Id: I42e90ba087d33619f84e8c04dec0958c589f6972
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2358712
Auto-Submit: Hitoshi Yoshida <peria@chromium.org>
Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarYuki Shiino <yukishiino@chromium.org>
Commit-Queue: Hitoshi Yoshida <peria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#799050}
parent 79e212da
......@@ -32,8 +32,6 @@ void DictionaryTest::set(const InternalDictionary* testing_dictionary) {
long_member_with_default_ = testing_dictionary->longMemberWithDefault();
if (testing_dictionary->hasLongOrNullMember())
long_or_null_member_ = testing_dictionary->longOrNullMember();
// |longOrNullMemberWithDefault| has a default value but can be null, so
// we need to check availability.
if (testing_dictionary->hasLongOrNullMemberWithDefault()) {
long_or_null_member_with_default_ =
testing_dictionary->longOrNullMemberWithDefault();
......@@ -147,9 +145,9 @@ void DictionaryTest::Reset() {
string_sequence_member_ = base::nullopt;
string_sequence_member_with_default_.Fill("Should not be returned", 1);
string_sequence_or_null_member_ = base::nullopt;
enum_member_ = String();
enum_member_ = base::nullopt;
enum_member_with_default_ = String();
enum_or_null_member_ = String();
enum_or_null_member_ = base::nullopt;
element_member_ = nullptr;
element_or_null_member_.reset();
object_member_ = ScriptValue();
......@@ -206,9 +204,11 @@ void DictionaryTest::GetInternals(InternalDictionary* dict) {
dict->setStringSequenceOrNullMember(
string_sequence_or_null_member_.value());
}
dict->setEnumMember(enum_member_);
if (enum_member_)
dict->setEnumMember(enum_member_.value());
dict->setEnumMemberWithDefault(enum_member_with_default_);
dict->setEnumOrNullMember(enum_or_null_member_);
if (enum_or_null_member_)
dict->setEnumOrNullMember(enum_or_null_member_.value());
if (element_member_)
dict->setElementMember(element_member_);
if (element_or_null_member_.has_value())
......
......@@ -9,6 +9,7 @@
#include "third_party/blink/renderer/bindings/core/v8/double_or_string.h"
#include "third_party/blink/renderer/bindings/core/v8/internal_enum_or_internal_enum_sequence.h"
#include "third_party/blink/renderer/bindings/core/v8/script_value.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_internal_enum.h"
#include "third_party/blink/renderer/bindings/core/v8/v8_test_callback.h"
#include "third_party/blink/renderer/core/dom/element.h"
#include "third_party/blink/renderer/platform/bindings/script_wrappable.h"
......@@ -71,9 +72,15 @@ class DictionaryTest : public ScriptWrappable {
base::Optional<Vector<String>> string_sequence_member_;
Vector<String> string_sequence_member_with_default_;
base::Optional<Vector<String>> string_sequence_or_null_member_;
String enum_member_;
base::Optional<String> enum_member_;
String enum_member_with_default_;
String enum_or_null_member_;
#ifdef USE_BLINK_V8_BINDING_NEW_IDL_DICTIONARY
// The outer Optional<> represents if the member is missing, and the inner
// Optional<> represents if the member is a null value.
base::Optional<base::Optional<V8InternalEnum>> enum_or_null_member_;
#else
base::Optional<String> enum_or_null_member_;
#endif
Member<Element> element_member_;
base::Optional<Member<Element>> element_or_null_member_;
ScriptValue object_member_;
......
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