1// Copyright 2014 The Chromium Authors. All rights reserved. 2// Use of this source code is governed by a BSD-style license that can be 3// found in the LICENSE file. 4 5#ifndef HTMLDataListOptionsCollection_h 6#define HTMLDataListOptionsCollection_h 7 8#include "core/html/HTMLCollection.h" 9#include "core/html/HTMLOptionElement.h" 10 11namespace blink { 12 13class HTMLDataListOptionsCollection : public HTMLCollection { 14public: 15 static PassRefPtrWillBeRawPtr<HTMLDataListOptionsCollection> create(ContainerNode& ownerNode, CollectionType type) 16 { 17 ASSERT_UNUSED(type, type == DataListOptions); 18 return adoptRefWillBeNoop(new HTMLDataListOptionsCollection(ownerNode)); 19 } 20 21 HTMLOptionElement* item(unsigned offset) const { return toHTMLOptionElement(HTMLCollection::item(offset)); } 22 23 bool elementMatches(const HTMLElement&) const; 24private: 25 explicit HTMLDataListOptionsCollection(ContainerNode& ownerNode) 26 : HTMLCollection(ownerNode, DataListOptions, DoesNotOverrideItemAfter) 27 { } 28}; 29 30DEFINE_TYPE_CASTS(HTMLDataListOptionsCollection, LiveNodeListBase, collection, collection->type() == DataListOptions, collection.type() == DataListOptions); 31 32inline bool HTMLDataListOptionsCollection::elementMatches(const HTMLElement& element) const 33{ 34 if (isHTMLOptionElement(element)) { 35 const HTMLOptionElement& option = toHTMLOptionElement(element); 36 if (!option.isDisabledFormControl() && !option.value().isEmpty()) 37 return true; 38 } 39 return false; 40} 41 42} // namespace blink 43 44#endif // HTMLDataListOptionsCollection_h 45