• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
11 namespace blink {
12 
13 class HTMLDataListOptionsCollection : public HTMLCollection {
14 public:
create(ContainerNode & ownerNode,CollectionType type)15     static PassRefPtrWillBeRawPtr<HTMLDataListOptionsCollection> create(ContainerNode& ownerNode, CollectionType type)
16     {
17         ASSERT_UNUSED(type, type == DataListOptions);
18         return adoptRefWillBeNoop(new HTMLDataListOptionsCollection(ownerNode));
19     }
20 
item(unsigned offset)21     HTMLOptionElement* item(unsigned offset) const { return toHTMLOptionElement(HTMLCollection::item(offset)); }
22 
23     bool elementMatches(const HTMLElement&) const;
24 private:
HTMLDataListOptionsCollection(ContainerNode & ownerNode)25     explicit HTMLDataListOptionsCollection(ContainerNode& ownerNode)
26         : HTMLCollection(ownerNode, DataListOptions, DoesNotOverrideItemAfter)
27     { }
28 };
29 
30 DEFINE_TYPE_CASTS(HTMLDataListOptionsCollection, LiveNodeListBase, collection, collection->type() == DataListOptions, collection.type() == DataListOptions);
31 
elementMatches(const HTMLElement & element)32 inline 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