| OLD | NEW | 
|     1 /* |     1 /* | 
|     2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) |     2  * Copyright (C) 1999 Lars Knoll (knoll@kde.org) | 
|     3  *           (C) 1999 Antti Koivisto (koivisto@kde.org) |     3  *           (C) 1999 Antti Koivisto (koivisto@kde.org) | 
|     4  *           (C) 2001 Dirk Mueller (mueller@kde.org) |     4  *           (C) 2001 Dirk Mueller (mueller@kde.org) | 
|     5  * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
      ights reserved. |     5  * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Apple Inc. All r
      ights reserved. | 
|     6  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) |     6  * Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies) | 
|     7  * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
      bile.com/) |     7  * Copyright (C) 2009 Torch Mobile Inc. All rights reserved. (http://www.torchmo
      bile.com/) | 
|     8  * |     8  * | 
|     9  * This library is free software; you can redistribute it and/or |     9  * This library is free software; you can redistribute it and/or | 
|    10  * modify it under the terms of the GNU Library General Public |    10  * modify it under the terms of the GNU Library General Public | 
| (...skipping 2058 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2069 { |  2069 { | 
|  2070     if (!hasRareData()) |  2070     if (!hasRareData()) | 
|  2071         return 0; |  2071         return 0; | 
|  2072     NodeMutationObserverData* data = rareData()->mutationObserverData(); |  2072     NodeMutationObserverData* data = rareData()->mutationObserverData(); | 
|  2073     if (!data) |  2073     if (!data) | 
|  2074         return 0; |  2074         return 0; | 
|  2075     return &data->transientRegistry; |  2075     return &data->transientRegistry; | 
|  2076 } |  2076 } | 
|  2077  |  2077  | 
|  2078 template<typename Registry> |  2078 template<typename Registry> | 
|  2079 static inline void collectMatchingObserversForMutation(HashMap<MutationObserver*
      , MutationRecordDeliveryOptions>& observers, Registry* registry, Node* target, M
      utationObserver::MutationType type, const QualifiedName* attributeName) |  2079 static inline void collectMatchingObserversForMutation(HashMap<MutationObserver*
      , MutationRecordDeliveryOptions>& observers, Registry* registry, Node& target, M
      utationObserver::MutationType type, const QualifiedName* attributeName) | 
|  2080 { |  2080 { | 
|  2081     if (!registry) |  2081     if (!registry) | 
|  2082         return; |  2082         return; | 
|  2083     for (typename Registry::iterator iter = registry->begin(); iter != registry-
      >end(); ++iter) { |  2083     for (typename Registry::iterator iter = registry->begin(); iter != registry-
      >end(); ++iter) { | 
|  2084         const MutationObserverRegistration& registration = **iter; |  2084         const MutationObserverRegistration& registration = **iter; | 
|  2085         if (registration.shouldReceiveMutationFrom(target, type, attributeName))
       { |  2085         if (registration.shouldReceiveMutationFrom(target, type, attributeName))
       { | 
|  2086             MutationRecordDeliveryOptions deliveryOptions = registration.deliver
      yOptions(); |  2086             MutationRecordDeliveryOptions deliveryOptions = registration.deliver
      yOptions(); | 
|  2087             HashMap<MutationObserver*, MutationRecordDeliveryOptions>::AddResult
       result = observers.add(registration.observer(), deliveryOptions); |  2087             HashMap<MutationObserver*, MutationRecordDeliveryOptions>::AddResult
       result = observers.add(®istration.observer(), deliveryOptions); | 
|  2088             if (!result.isNewEntry) |  2088             if (!result.isNewEntry) | 
|  2089                 result.storedValue->value |= deliveryOptions; |  2089                 result.storedValue->value |= deliveryOptions; | 
|  2090         } |  2090         } | 
|  2091     } |  2091     } | 
|  2092 } |  2092 } | 
|  2093  |  2093  | 
|  2094 void Node::getRegisteredMutationObserversOfType(HashMap<MutationObserver*, Mutat
      ionRecordDeliveryOptions>& observers, MutationObserver::MutationType type, const
       QualifiedName* attributeName) |  2094 void Node::getRegisteredMutationObserversOfType(HashMap<MutationObserver*, Mutat
      ionRecordDeliveryOptions>& observers, MutationObserver::MutationType type, const
       QualifiedName* attributeName) | 
|  2095 { |  2095 { | 
|  2096     ASSERT((type == MutationObserver::Attributes && attributeName) || !attribute
      Name); |  2096     ASSERT((type == MutationObserver::Attributes && attributeName) || !attribute
      Name); | 
|  2097     collectMatchingObserversForMutation(observers, mutationObserverRegistry(), t
      his, type, attributeName); |  2097     collectMatchingObserversForMutation(observers, mutationObserverRegistry(), *
      this, type, attributeName); | 
|  2098     collectMatchingObserversForMutation(observers, transientMutationObserverRegi
      stry(), this, type, attributeName); |  2098     collectMatchingObserversForMutation(observers, transientMutationObserverRegi
      stry(), *this, type, attributeName); | 
|  2099     for (Node* node = parentNode(); node; node = node->parentNode()) { |  2099     for (Node* node = parentNode(); node; node = node->parentNode()) { | 
|  2100         collectMatchingObserversForMutation(observers, node->mutationObserverReg
      istry(), this, type, attributeName); |  2100         collectMatchingObserversForMutation(observers, node->mutationObserverReg
      istry(), *this, type, attributeName); | 
|  2101         collectMatchingObserversForMutation(observers, node->transientMutationOb
      serverRegistry(), this, type, attributeName); |  2101         collectMatchingObserversForMutation(observers, node->transientMutationOb
      serverRegistry(), *this, type, attributeName); | 
|  2102     } |  2102     } | 
|  2103 } |  2103 } | 
|  2104  |  2104  | 
|  2105 void Node::registerMutationObserver(MutationObserver* observer, MutationObserver
      Options options, const HashSet<AtomicString>& attributeFilter) |  2105 void Node::registerMutationObserver(MutationObserver& observer, MutationObserver
      Options options, const HashSet<AtomicString>& attributeFilter) | 
|  2106 { |  2106 { | 
|  2107     MutationObserverRegistration* registration = 0; |  2107     MutationObserverRegistration* registration = 0; | 
|  2108     Vector<OwnPtr<MutationObserverRegistration> >& registry = ensureRareData().e
      nsureMutationObserverData().registry; |  2108     Vector<OwnPtr<MutationObserverRegistration> >& registry = ensureRareData().e
      nsureMutationObserverData().registry; | 
|  2109     for (size_t i = 0; i < registry.size(); ++i) { |  2109     for (size_t i = 0; i < registry.size(); ++i) { | 
|  2110         if (registry[i]->observer() == observer) { |  2110         if (®istry[i]->observer() == &observer) { | 
|  2111             registration = registry[i].get(); |  2111             registration = registry[i].get(); | 
|  2112             registration->resetObservation(options, attributeFilter); |  2112             registration->resetObservation(options, attributeFilter); | 
|  2113         } |  2113         } | 
|  2114     } |  2114     } | 
|  2115  |  2115  | 
|  2116     if (!registration) { |  2116     if (!registration) { | 
|  2117         registry.append(MutationObserverRegistration::create(observer, this, opt
      ions, attributeFilter)); |  2117         registry.append(MutationObserverRegistration::create(observer, *this, op
      tions, attributeFilter)); | 
|  2118         registration = registry.last().get(); |  2118         registration = registry.last().get(); | 
|  2119     } |  2119     } | 
|  2120  |  2120  | 
|  2121     document().addMutationObserverTypes(registration->mutationTypes()); |  2121     document().addMutationObserverTypes(registration->mutationTypes()); | 
|  2122 } |  2122 } | 
|  2123  |  2123  | 
|  2124 void Node::unregisterMutationObserver(MutationObserverRegistration* registration
      ) |  2124 void Node::unregisterMutationObserver(MutationObserverRegistration* registration
      ) | 
|  2125 { |  2125 { | 
|  2126     Vector<OwnPtr<MutationObserverRegistration> >* registry = mutationObserverRe
      gistry(); |  2126     Vector<OwnPtr<MutationObserverRegistration> >* registry = mutationObserverRe
      gistry(); | 
|  2127     ASSERT(registry); |  2127     ASSERT(registry); | 
| (...skipping 30 matching lines...) Expand all  Loading... | 
|  2158  |  2158  | 
|  2159 void Node::notifyMutationObserversNodeWillDetach() |  2159 void Node::notifyMutationObserversNodeWillDetach() | 
|  2160 { |  2160 { | 
|  2161     if (!document().hasMutationObservers()) |  2161     if (!document().hasMutationObservers()) | 
|  2162         return; |  2162         return; | 
|  2163  |  2163  | 
|  2164     for (Node* node = parentNode(); node; node = node->parentNode()) { |  2164     for (Node* node = parentNode(); node; node = node->parentNode()) { | 
|  2165         if (Vector<OwnPtr<MutationObserverRegistration> >* registry = node->muta
      tionObserverRegistry()) { |  2165         if (Vector<OwnPtr<MutationObserverRegistration> >* registry = node->muta
      tionObserverRegistry()) { | 
|  2166             const size_t size = registry->size(); |  2166             const size_t size = registry->size(); | 
|  2167             for (size_t i = 0; i < size; ++i) |  2167             for (size_t i = 0; i < size; ++i) | 
|  2168                 registry->at(i)->observedSubtreeNodeWillDetach(this); |  2168                 registry->at(i)->observedSubtreeNodeWillDetach(*this); | 
|  2169         } |  2169         } | 
|  2170  |  2170  | 
|  2171         if (HashSet<MutationObserverRegistration*>* transientRegistry = node->tr
      ansientMutationObserverRegistry()) { |  2171         if (HashSet<MutationObserverRegistration*>* transientRegistry = node->tr
      ansientMutationObserverRegistry()) { | 
|  2172             for (HashSet<MutationObserverRegistration*>::iterator iter = transie
      ntRegistry->begin(); iter != transientRegistry->end(); ++iter) |  2172             for (HashSet<MutationObserverRegistration*>::iterator iter = transie
      ntRegistry->begin(); iter != transientRegistry->end(); ++iter) | 
|  2173                 (*iter)->observedSubtreeNodeWillDetach(this); |  2173                 (*iter)->observedSubtreeNodeWillDetach(*this); | 
|  2174         } |  2174         } | 
|  2175     } |  2175     } | 
|  2176 } |  2176 } | 
|  2177  |  2177  | 
|  2178 void Node::handleLocalEvents(Event* event) |  2178 void Node::handleLocalEvents(Event* event) | 
|  2179 { |  2179 { | 
|  2180     if (!hasEventTargetData()) |  2180     if (!hasEventTargetData()) | 
|  2181         return; |  2181         return; | 
|  2182  |  2182  | 
|  2183     if (isDisabledFormControl(this) && event->isMouseEvent()) |  2183     if (isDisabledFormControl(this) && event->isMouseEvent()) | 
| (...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  2557         node->showTreeForThis(); |  2557         node->showTreeForThis(); | 
|  2558 } |  2558 } | 
|  2559  |  2559  | 
|  2560 void showNodePath(const WebCore::Node* node) |  2560 void showNodePath(const WebCore::Node* node) | 
|  2561 { |  2561 { | 
|  2562     if (node) |  2562     if (node) | 
|  2563         node->showNodePathForThis(); |  2563         node->showNodePathForThis(); | 
|  2564 } |  2564 } | 
|  2565  |  2565  | 
|  2566 #endif |  2566 #endif | 
| OLD | NEW |