Index: Source/core/dom/AttributeCollection.cpp |
diff --git a/Source/modules/webmidi/MIDIController.h b/Source/core/dom/AttributeCollection.cpp |
similarity index 51% |
copy from Source/modules/webmidi/MIDIController.h |
copy to Source/core/dom/AttributeCollection.cpp |
index 2aff8a39254987637d780d92baa29d0d79e64bf5..fb01fd30a2d686a8c1f9fdb8b0892888a2f8ebe5 100644 |
--- a/Source/modules/webmidi/MIDIController.h |
+++ b/Source/core/dom/AttributeCollection.cpp |
@@ -1,5 +1,7 @@ |
/* |
* Copyright (C) 2013 Google Inc. All rights reserved. |
+ * Copyright (C) 2014 Apple Inc. All rights reserved. |
+ * Copyright (C) 2014 Samsung Electronics. All rights reserved. |
* |
* Redistribution and use in source and binary forms, with or without |
* modification, are permitted provided that the following conditions are |
@@ -28,38 +30,45 @@ |
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
*/ |
-#ifndef MIDIController_h |
-#define MIDIController_h |
+#include "config.h" |
+#include "core/dom/AttributeCollection.h" |
-#include "core/frame/LocalFrame.h" |
-#include "platform/heap/Handle.h" |
+#include "core/dom/Attr.h" |
namespace WebCore { |
-class MIDIAccessInitializer; |
-class MIDIClient; |
+size_t AttributeCollection::findIndex(Attr* attr) const |
+{ |
+ // This relies on the fact that Attr's QualifiedName == the Attribute's name. |
+ const_iterator end = this->end(); |
+ unsigned index = 0; |
+ for (const_iterator it = begin(); it != end; ++it, ++index) { |
+ if (it->name() == attr->qualifiedName()) |
+ return index; |
+ } |
+ return kNotFound; |
+} |
-class MIDIController FINAL : public NoBaseWillBeGarbageCollectedFinalized<MIDIController>, public WillBeHeapSupplement<LocalFrame> { |
- WILL_BE_USING_GARBAGE_COLLECTED_MIXIN(MIDIController); |
-public: |
- virtual ~MIDIController(); |
- |
- void requestSysexPermission(MIDIAccessInitializer*); |
- void cancelSysexPermissionRequest(MIDIAccessInitializer*); |
- |
- static PassOwnPtrWillBeRawPtr<MIDIController> create(PassOwnPtr<MIDIClient>); |
- static const char* supplementName(); |
- static MIDIController* from(LocalFrame* frame) { return static_cast<MIDIController*>(WillBeHeapSupplement<LocalFrame>::from(frame, supplementName())); } |
- |
- virtual void trace(Visitor* visitor) OVERRIDE { WillBeHeapSupplement<LocalFrame>::trace(visitor); } |
- |
-protected: |
- explicit MIDIController(PassOwnPtr<MIDIClient>); |
- |
-private: |
- OwnPtr<MIDIClient> m_client; |
-}; |
+size_t AttributeCollection::findSlowCase(const AtomicString& name, bool shouldIgnoreAttributeCase) const |
+{ |
+ // Continue to checking case-insensitively and/or full namespaced names if necessary: |
+ const_iterator end = this->end(); |
+ unsigned index = 0; |
+ for (const_iterator it = begin(); it != end; ++it, ++index) { |
+ // FIXME: Why check the prefix? Namespace is all that should matter |
+ // and all HTML/SVG attributes have a null namespace! |
+ if (!it->name().hasPrefix()) { |
+ if (shouldIgnoreAttributeCase && equalIgnoringCase(name, it->localName())) |
+ return index; |
+ } else { |
+ // FIXME: Would be faster to do this comparison without calling toString, which |
+ // generates a temporary string by concatenation. But this branch is only reached |
+ // if the attribute name has a prefix, which is rare in HTML. |
+ if (equalPossiblyIgnoringCase(name, it->name().toString(), shouldIgnoreAttributeCase)) |
+ return index; |
+ } |
+ } |
+ return kNotFound; |
+} |
} // namespace WebCore |
- |
-#endif // MIDIController_h |