Commit 3d9a3b7e authored by Yuki Shiino's avatar Yuki Shiino Committed by Commit Bot

bindings: Remove tests of obsolete Dictionary type

'Dictionary' type is obsolete and deprecated.  The new bindings
generator won't support it.  The existing use cases (in *.idl)
have been removed by peria@, except only for
MediaTrackConstraintSet dictionary that contains Dictionary type.

Removes web tests that depend on 'Dictionary' type.  This is the
last use case that is directly visible from IDL interface bindings.
(MediaTrackConstraintSet dictionary yet contains Dictionary type,
but it's not directly visible from IDL interface bindings.)

Bug: 839389
Change-Id: Iec4f1112a0c17a7931aaf49ef4c2780ca564474e
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2084773Reviewed-by: default avatarKentaro Hara <haraken@chromium.org>
Reviewed-by: default avatarHitoshi Yoshida <peria@chromium.org>
Commit-Queue: Yuki Shiino <yukishiino@chromium.org>
Cr-Commit-Position: refs/heads/master@{#746661}
parent c018b4bc
......@@ -14,26 +14,6 @@
#include "third_party/blink/renderer/platform/wtf/text/string_builder.h"
namespace blink {
namespace {
ScriptIterator GetIterator(const Dictionary& iterable,
ExecutionContext* execution_context) {
v8::Local<v8::Value> iterator_getter;
v8::Isolate* isolate = iterable.GetIsolate();
if (!iterable.Get(v8::Symbol::GetIterator(isolate), iterator_getter) ||
!iterator_getter->IsFunction()) {
return ScriptIterator();
}
v8::Local<v8::Value> iterator;
if (!V8ScriptRunner::CallFunction(
v8::Local<v8::Function>::Cast(iterator_getter), execution_context,
iterable.V8Value(), 0, nullptr, isolate)
.ToLocal(&iterator))
return ScriptIterator();
if (!iterator->IsObject())
return ScriptIterator();
return ScriptIterator(isolate, v8::Local<v8::Object>::Cast(iterator));
}
} // namespace
DictionaryTest::DictionaryTest() : required_boolean_member_(false) {}
......@@ -157,36 +137,6 @@ InternalDictionaryDerivedDerived* DictionaryTest::getDerivedDerived() {
return result;
}
String DictionaryTest::stringFromIterable(
ScriptState* script_state,
Dictionary iterable,
ExceptionState& exception_state) const {
StringBuilder result;
ExecutionContext* execution_context = ExecutionContext::From(script_state);
ScriptIterator iterator = GetIterator(iterable, execution_context);
if (iterator.IsNull())
return g_empty_string;
bool first_loop = true;
while (iterator.Next(execution_context, exception_state)) {
if (exception_state.HadException())
return g_empty_string;
if (first_loop)
first_loop = false;
else
result.Append(',');
v8::Local<v8::Value> value;
if (iterator.GetValue().ToLocal(&value)) {
result.Append(ToCoreString(
value->ToString(script_state->GetContext()).ToLocalChecked()));
}
}
return result.ToString();
}
void DictionaryTest::Reset() {
long_member_ = base::nullopt;
long_member_with_clamp_ = base::nullopt;
......
......@@ -44,10 +44,6 @@ class DictionaryTest : public ScriptWrappable {
void setDerivedDerived(const InternalDictionaryDerivedDerived*);
InternalDictionaryDerivedDerived* getDerivedDerived();
String stringFromIterable(ScriptState*,
Dictionary iterable,
ExceptionState&) const;
void Trace(Visitor*) override;
private:
......
......@@ -12,6 +12,4 @@ interface DictionaryTest {
void setDerivedDerived(InternalDictionaryDerivedDerived derived);
InternalDictionaryDerivedDerived getDerivedDerived();
[CallWith=ScriptState, RaisesException] DOMString stringFromIterable(Dictionary iterableDictionary);
};
<!DOCTYPE html>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>
<script>
function createIterable(iterations) {
return {
[Symbol.iterator]() {
var i = 0;
return {next: () => iterations[i++]};
},
};
}
function assertIterationJoinEqual(iterable, description) {
test(() => {
assert_equals(internals.dictionaryTest().stringFromIterable(iterable), Array.from(iterable).join(','));
}, description);
}
assertIterationJoinEqual([1, 2, 3], 'Standard array of numbers.');
assertIterationJoinEqual(new Set([1, 2, 3]), 'Standard set of numbers.');
assertIterationJoinEqual([], 'Standard empty array.');
assertIterationJoinEqual(new Set(), 'Standard empty set.');
assertIterationJoinEqual(createIterable([
{done: false, value: 1},
{done: false, value: 2},
{done: false, value: 3},
{done: true},
]), 'Custom list of numbers.');
assertIterationJoinEqual(createIterable([
{done: false, value: 1},
{done: false, value: 2},
{done: false, value: 3},
{done: 'yes'},
]), 'Truthy done signal.');
assertIterationJoinEqual(createIterable([
{value: 1},
{value: 2},
{value: 3},
{done: true},
]), 'Custom list of numbers with missing "done: false" signal.');
assertIterationJoinEqual(createIterable([
{done: false, value: 1},
{done: false, value: 2},
{done: true},
{done: false, value: 3},
]), 'Terminates when done is true.');
assertIterationJoinEqual(createIterable([
{done: true},
]), 'Empty list.');
assertIterationJoinEqual({}, 'Non-iterable object.');
test(() => {
var iterable = {[Symbol.iterator]() { return {}; }};
assert_throws_js(TypeError, () => Array.from(iterable));
assert_throws_js(TypeError, () => internals.dictionaryTest().stringFromIterable(iterable));
}, 'Iterator object without next() function should throw.');
test(() => {
var iterable = createIterable([
{done: false, value: 1},
{done: false, value: 2},
{done: false, value: 3},
1234,
]);
assert_throws_js(TypeError, () => Array.from(iterable));
assert_throws_js(TypeError, () => internals.dictionaryTest().stringFromIterable(iterable));
}, 'Non-object iterator.next() result should throw.');
</script>
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