Bug 17497 - eliminate DeprecatedValueList
Summary: eliminate DeprecatedValueList
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Platform (show other bugs)
Version: 528+ (Nightly build)
Hardware: All OS X 10.5
: P2 Normal
Assignee: Darin Adler
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2008-02-23 00:59 PST by Darin Adler
Modified: 2008-12-13 14:59 PST (History)
2 users (show)

See Also:


Attachments
patch to do this for SegmentedString (7.67 KB, patch)
2008-02-23 01:05 PST, Darin Adler
no flags Details | Formatted Diff | Diff
patch (60.17 KB, patch)
2008-12-13 13:16 PST, Darin Adler
andersca: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Darin Adler 2008-02-23 00:59:23 PST
Need to get rid of this class.
Comment 1 Darin Adler 2008-02-23 01:05:23 PST
Created attachment 19290 [details]
patch to do this for SegmentedString
Comment 2 Sam Weinig 2008-02-23 14:26:44 PST
Comment on attachment 19290 [details]
patch to do this for SegmentedString

r=me, though I assume this requires the changes the to Deque first.
Comment 3 Darin Adler 2008-02-23 23:39:54 PST
Comment on attachment 19290 [details]
patch to do this for SegmentedString

Committed revision 30546.
Comment 4 Darin Adler 2008-02-24 23:02:21 PST
These are the three remaining clients:

    1) CSSMutableStyleDeclaration::m_values -- can be a Vector, I think
    2) Document::m_windowEventListeners -- Vector? ListHashSet?
    3) EventTargetNode::m_regdListeners  -- Vector? ListHashSet?
Comment 5 Anders Carlsson 2008-02-25 17:05:27 PST
I think that CSSMutableStyleDeclaration might be a great candidate for ListHashMap, something like

ListHashMap<int, CSSProperty>

(the item accessor will be O(n), but that is already the case)
Comment 6 Darin Adler 2008-12-13 13:16:25 PST
Created attachment 26003 [details]
patch
Comment 7 Anders Carlsson 2008-12-13 13:53:50 PST
Comment on attachment 26003 [details]
patch

>  #endif
> Index: WebCore/dom/EventTargetNode.cpp
> ===================================================================
> --- WebCore/dom/EventTargetNode.cpp	(revision 39276)
> +++ WebCore/dom/EventTargetNode.cpp	(working copy)
> +const RegisteredEventListeners& EventTargetNode::eventListeners() const
> +{
> +    if (hasRareData()) {
> +        if (RegisteredEventListeners* listeners = rareData()->listeners())
> +            return *listeners;
> +    }
> +    static const RegisteredEventListeners* emptyListenersVector = new RegisteredEventListeners;
> +    return *emptyListenersVector;

Clever!

>  void EventTargetNode::removeEventListener(const AtomicString& eventType, EventListener* listener, bool useCapture)
>  {
> -    if (!m_regdListeners)
> +    if (!hasRareData())
>          return;
>  
> -    RegisteredEventListenerList::Iterator end = m_regdListeners->end();
> -    for (RegisteredEventListenerList::Iterator it = m_regdListeners->begin(); it != end; ++it) {
> -        RegisteredEventListener& r = **it;
> +    RegisteredEventListeners* listeners = rareData()->listeners();
> +    if (!listeners)
> +        return;
> +
> +    size_t size = listeners->size();
> +    for (size_t i = 0; i < size; ++i) {
> +        RegisteredEventListener& r = *(*listeners)[i];

I prefer listeners->at(i).

>  void EventTargetNode::removeInlineEventListenerForType(const AtomicString& eventType)
>  {
> +
> +    size_t size = listeners->size();
> +    for (size_t i = 0; i < size; ++i) {
> +        RegisteredEventListener& r = *(*listeners)[i];
> +        if (r.eventType() != eventType || !r.listener()->isInline())
>              continue;
>

Same thing here.
  
> +
> +typedef Vector<RefPtr<RegisteredEventListener> > RegisteredEventListeners;
>

I think RegistereEventListenerVector is better here.
  
r=me!

I usually delete the files in a separate commit. Boy it feels great to see those red patches on webkit-changes ;)