Changeset 97135 in webkit


Ignore:
Timestamp:
Oct 11, 2011 1:45:38 AM (13 years ago)
Author:
tkent@chromium.org
Message:

Move m_listItems and m_recalcListItems from SelectElementData to HTMLSelectElement
https://bugs.webkit.org/show_bug.cgi?id=69812

Reviewed by Ryosuke Niwa.

Move SelectElementData::m_recalcListItems,
SelectElementData::m_listItems, and related functions of
SelectElementData class to HTMLSelectElement.

Non-const listItems() was removed because it is used only in
recalcListItemsInternal() and it can access m_listItems diretly.

Static recalcListItems() is changed to non-static, and renamed to
recalcListItemsInternal() in order to avoid confusion with the
existing recalcListItems().

No new tests, just a refactoring.

  • dom/SelectElement.cpp:

Move checkListItems() and listItems() to HTMLSelectElement.
(WebCore::SelectElementData::SelectElementData):
Remove Initialization of m_recalcListItems.

  • dom/SelectElement.h:

Move m_recalcListItems, m_listItems, and related functions to HTMLSelectElement.

  • html/HTMLSelectElement.cpp:

(WebCore::HTMLSelectElement::HTMLSelectElement):
Initializes m_recalcListItems.
(WebCore::HTMLSelectElement::recalcListItems):
Rename the static recalcListItems() to recalcListItemsInternal().
(WebCore::HTMLSelectElement::recalcListItemsIfNeeded):
Use m_recalcListItems directly.
(WebCore::HTMLSelectElement::nextSelectableListIndex):
Update a listItems() callsite.
(WebCore::HTMLSelectElement::previousSelectableListIndex): ditto.
(WebCore::HTMLSelectElement::firstSelectableListIndex): ditto.
(WebCore::HTMLSelectElement::lastSelectableListIndex): ditto.
(WebCore::HTMLSelectElement::nextSelectableListIndexPageAway): ditto.
(WebCore::HTMLSelectElement::saveLastSelection): ditto.
(WebCore::HTMLSelectElement::setActiveSelectionAnchorIndex): ditto.
(WebCore::HTMLSelectElement::updateListBoxSelection): ditto.
(WebCore::HTMLSelectElement::listBoxOnChange): ditto.
(WebCore::HTMLSelectElement::checkListItems):
Moved from SelectElementData.
(WebCore::HTMLSelectElement::listItems): ditto.
(WebCore::HTMLSelectElement::setRecalcListItems):
Use m_recalcListItems directly.
(WebCore::HTMLSelectElement::recalcListItemsInternal):

  • Make this non-static.
  • Renamed from recalcListItems() to avoid confilct with another recalcListItems().
  • Use m_recalcListItems and m_listItems directly.

(WebCore::HTMLSelectElement::selectedIndex):
Update a listItems() callsite.
(WebCore::HTMLSelectElement::setSelectedIndexInternal): ditto.
(WebCore::HTMLSelectElement::optionToListIndex): ditto.
(WebCore::HTMLSelectElement::listToOptionIndex): ditto.
(WebCore::HTMLSelectElement::deselectItemsWithoutValidation): ditto.
(WebCore::HTMLSelectElement::saveFormControlState):
Update callsites of listItems() and recalcListItems().
(WebCore::HTMLSelectElement::restoreFormControlState):
Update a listItems() callsite.
(WebCore::HTMLSelectElement::appendFormData): ditto.
(WebCore::HTMLSelectElement::reset): ditto.
(WebCore::HTMLSelectElement::menuListDefaultEventHandler): ditto.
(WebCore::HTMLSelectElement::updateSelectedState): ditto.
(WebCore::HTMLSelectElement::listBoxDefaultEventHandler): ditto.
(WebCore::HTMLSelectElement::lastSelectedListIndex): ditto.
(WebCore::HTMLSelectElement::typeAheadFind): ditto.
(WebCore::HTMLSelectElement::insertedIntoTree):
Update a recalcListItems() callsite.
(WebCore::HTMLSelectElement::accessKeySetSelectedIndex):
Update a listItems() callsite.
(WebCore::HTMLSelectElement::length): ditto.

  • html/HTMLSelectElement.h:

Move m_recalcListItems, m_listItems, and related functions from SelectElementData.

  • html/HTMLSelectElementWin.cpp:

(WebCore::HTMLSelectElement::platformHandleKeydownEvent):
Update a listItems() callsite.

Location:
trunk/Source/WebCore
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r97133 r97135  
     12011-10-11  Kent Tamura  <tkent@chromium.org>
     2
     3        Move m_listItems and m_recalcListItems from SelectElementData to HTMLSelectElement
     4        https://bugs.webkit.org/show_bug.cgi?id=69812
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        Move SelectElementData::m_recalcListItems,
     9        SelectElementData::m_listItems, and related functions of
     10        SelectElementData class to HTMLSelectElement.
     11
     12        Non-const listItems() was removed because it is used only in
     13        recalcListItemsInternal() and it can access m_listItems diretly.
     14
     15        Static recalcListItems() is changed to non-static, and renamed to
     16        recalcListItemsInternal() in order to avoid confusion with the
     17        existing recalcListItems().
     18
     19        No new tests, just a refactoring.
     20
     21        * dom/SelectElement.cpp:
     22        Move checkListItems() and listItems() to HTMLSelectElement.
     23        (WebCore::SelectElementData::SelectElementData):
     24        Remove Initialization of m_recalcListItems.
     25        * dom/SelectElement.h:
     26        Move m_recalcListItems, m_listItems, and related functions to HTMLSelectElement.
     27        * html/HTMLSelectElement.cpp:
     28        (WebCore::HTMLSelectElement::HTMLSelectElement):
     29        Initializes m_recalcListItems.
     30        (WebCore::HTMLSelectElement::recalcListItems):
     31        Rename the static recalcListItems() to recalcListItemsInternal().
     32        (WebCore::HTMLSelectElement::recalcListItemsIfNeeded):
     33        Use m_recalcListItems directly.
     34        (WebCore::HTMLSelectElement::nextSelectableListIndex):
     35        Update a listItems() callsite.
     36        (WebCore::HTMLSelectElement::previousSelectableListIndex): ditto.
     37        (WebCore::HTMLSelectElement::firstSelectableListIndex): ditto.
     38        (WebCore::HTMLSelectElement::lastSelectableListIndex): ditto.
     39        (WebCore::HTMLSelectElement::nextSelectableListIndexPageAway): ditto.
     40        (WebCore::HTMLSelectElement::saveLastSelection): ditto.
     41        (WebCore::HTMLSelectElement::setActiveSelectionAnchorIndex): ditto.
     42        (WebCore::HTMLSelectElement::updateListBoxSelection): ditto.
     43        (WebCore::HTMLSelectElement::listBoxOnChange): ditto.
     44        (WebCore::HTMLSelectElement::checkListItems):
     45        Moved from SelectElementData.
     46        (WebCore::HTMLSelectElement::listItems): ditto.
     47        (WebCore::HTMLSelectElement::setRecalcListItems):
     48        Use m_recalcListItems directly.
     49        (WebCore::HTMLSelectElement::recalcListItemsInternal):
     50        - Make this non-static.
     51        - Renamed from recalcListItems() to avoid confilct with another recalcListItems().
     52        - Use m_recalcListItems and m_listItems directly.
     53        (WebCore::HTMLSelectElement::selectedIndex):
     54        Update a listItems() callsite.
     55        (WebCore::HTMLSelectElement::setSelectedIndexInternal): ditto.
     56        (WebCore::HTMLSelectElement::optionToListIndex): ditto.
     57        (WebCore::HTMLSelectElement::listToOptionIndex): ditto.
     58        (WebCore::HTMLSelectElement::deselectItemsWithoutValidation): ditto.
     59        (WebCore::HTMLSelectElement::saveFormControlState):
     60        Update callsites of listItems() and recalcListItems().
     61        (WebCore::HTMLSelectElement::restoreFormControlState):
     62        Update a listItems() callsite.
     63        (WebCore::HTMLSelectElement::appendFormData): ditto.
     64        (WebCore::HTMLSelectElement::reset): ditto.
     65        (WebCore::HTMLSelectElement::menuListDefaultEventHandler): ditto.
     66        (WebCore::HTMLSelectElement::updateSelectedState): ditto.
     67        (WebCore::HTMLSelectElement::listBoxDefaultEventHandler): ditto.
     68        (WebCore::HTMLSelectElement::lastSelectedListIndex): ditto.
     69        (WebCore::HTMLSelectElement::typeAheadFind): ditto.
     70        (WebCore::HTMLSelectElement::insertedIntoTree):
     71        Update a recalcListItems() callsite.
     72        (WebCore::HTMLSelectElement::accessKeySetSelectedIndex):
     73        Update a listItems() callsite.
     74        (WebCore::HTMLSelectElement::length): ditto.
     75        * html/HTMLSelectElement.h:
     76        Move m_recalcListItems, m_listItems, and related functions from SelectElementData.
     77        * html/HTMLSelectElementWin.cpp:
     78        (WebCore::HTMLSelectElement::platformHandleKeydownEvent):
     79        Update a listItems() callsite.
     80
    1812011-10-11  Kenichi Ishibashi  <bashi@chromium.org>
    282
  • trunk/Source/WebCore/dom/SelectElement.cpp

    r97123 r97135  
    6464    , m_multiple(false)
    6565    , m_activeSelectionState(false)
    66     , m_recalcListItems(false)
    6766{
    6867}
     
    7271}
    7372
    74 void SelectElementData::checkListItems(const Element* element) const
    75 {
    76 #if !ASSERT_DISABLED
    77     Vector<Element*> items = m_listItems;
    78     HTMLSelectElement::recalcListItems(*const_cast<SelectElementData*>(this), element, false);
    79     ASSERT(items == m_listItems);
    80 #else
    81     UNUSED_PARAM(element);
    82 #endif
    8373}
    84 
    85 Vector<Element*>& SelectElementData::listItems(const Element* element)
    86 {
    87     if (m_recalcListItems)
    88         HTMLSelectElement::recalcListItems(*this, element);
    89     else
    90         checkListItems(element);
    91 
    92     return m_listItems;
    93 }
    94 
    95 const Vector<Element*>& SelectElementData::listItems(const Element* element) const
    96 {
    97     if (m_recalcListItems)
    98         HTMLSelectElement::recalcListItems(*const_cast<SelectElementData*>(this), element);
    99     else
    100         checkListItems(element);
    101 
    102     return m_listItems;
    103 }
    104 
    105 }
  • trunk/Source/WebCore/dom/SelectElement.h

    r97123 r97135  
    7474    Vector<bool>& cachedStateForActiveSelection() { return m_cachedStateForActiveSelection; }
    7575
    76     bool shouldRecalcListItems() const { return m_recalcListItems; }
    77     void setShouldRecalcListItems(bool value) { m_recalcListItems = value; }
    78 
    79     Vector<Element*>& rawListItems() { return m_listItems; }
    80     Vector<Element*>& listItems(const Element*);
    81     const Vector<Element*>& listItems(const Element*) const;
    82 
    8376    UChar repeatingChar() const { return m_repeatingChar; }
    8477    void setRepeatingChar(const UChar& value) { m_repeatingChar = value; }
     
    9386    void checkListItems(const Element*) const;
    9487
    95     Vector<Element*> m_listItems;
    9688    Vector<bool> m_lastOnChangeSelection;
    9789    Vector<bool> m_cachedStateForActiveSelection;
     
    110102    bool m_multiple;
    111103    bool m_activeSelectionState;
    112     bool m_recalcListItems;
    113104};
    114105
  • trunk/Source/WebCore/html/HTMLSelectElement.cpp

    r97123 r97135  
    7777HTMLSelectElement::HTMLSelectElement(const QualifiedName& tagName, Document* document, HTMLFormElement* form)
    7878    : HTMLFormControlElementWithState(tagName, document, form)
     79    , m_recalcListItems(false)
    7980{
    8081    ASSERT(hasTagName(selectTag));
     
    315316void HTMLSelectElement::recalcListItems(bool updateSelectedStates) const
    316317{
    317     recalcListItems(const_cast<SelectElementData&>(m_data), this, updateSelectedStates);
     318    const_cast<HTMLSelectElement*>(this)->recalcListItemsInternal(updateSelectedStates);
    318319}
    319320
    320321void HTMLSelectElement::recalcListItemsIfNeeded()
    321322{
    322     if (m_data.shouldRecalcListItems())
     323    if (m_recalcListItems)
    323324        recalcListItems();
    324325}
     
    457458int HTMLSelectElement::nextSelectableListIndex(int startIndex) const
    458459{
    459     return nextValidIndex(m_data.listItems(this), startIndex, SkipForwards, 1);
     460    return nextValidIndex(listItems(), startIndex, SkipForwards, 1);
    460461}
    461462
     
    463464{
    464465    if (startIndex == -1)
    465         startIndex = m_data.listItems(this).size();
    466     return nextValidIndex(m_data.listItems(this), startIndex, SkipBackwards, 1);
     466        startIndex = listItems().size();
     467    return nextValidIndex(listItems(), startIndex, SkipBackwards, 1);
    467468}
    468469
    469470int HTMLSelectElement::firstSelectableListIndex() const
    470471{
    471     const Vector<Element*>& items = m_data.listItems(this);
     472    const Vector<Element*>& items = listItems();
    472473    int index = nextValidIndex(items, items.size(), SkipBackwards, INT_MAX);
    473474    if (static_cast<unsigned>(index) == items.size())
     
    478479int HTMLSelectElement::lastSelectableListIndex() const
    479480{
    480     return nextValidIndex(m_data.listItems(this), -1, SkipForwards, INT_MAX);
     481    return nextValidIndex(listItems(), -1, SkipForwards, INT_MAX);
    481482}
    482483
     
    484485int HTMLSelectElement::nextSelectableListIndexPageAway(int startIndex, SkipDirection direction) const
    485486{
    486     const Vector<Element*>& items = m_data.listItems(this);
     487    const Vector<Element*>& items = listItems();
    487488    // Can't use data->size() because renderer forces a minimum size.
    488489    int pageSize = 0;
     
    527528    lastOnChangeSelection.clear();
    528529
    529     const Vector<Element*>& items = m_data.listItems(this);
     530    const Vector<Element*>& items = listItems();
    530531    for (unsigned i = 0; i < items.size(); ++i) {
    531532        OptionElement* optionElement = toOptionElement(items[i]);
     
    543544    cachedStateForActiveSelection.clear();
    544545
    545     const Vector<Element*>& items = m_data.listItems(this);
     546    const Vector<Element*>& items = listItems();
    546547    for (unsigned i = 0; i < items.size(); ++i) {
    547548        OptionElement* optionElement = toOptionElement(items[i]);
     
    558559{
    559560    ASSERT(renderer() && (renderer()->isListBox() || m_data.multiple()));
    560     ASSERT(!m_data.listItems(this).size() || m_data.activeSelectionAnchorIndex() >= 0);
     561    ASSERT(!listItems().size() || m_data.activeSelectionAnchorIndex() >= 0);
    561562
    562563    unsigned start = min(m_data.activeSelectionAnchorIndex(), m_data.activeSelectionEndIndex());
     
    564565    Vector<bool>& cachedStateForActiveSelection = m_data.cachedStateForActiveSelection();
    565566
    566     const Vector<Element*>& items = m_data.listItems(this);
     567    const Vector<Element*>& items = listItems();
    567568    for (unsigned i = 0; i < items.size(); ++i) {
    568569        OptionElement* optionElement = toOptionElement(items[i]);
     
    587588
    588589    Vector<bool>& lastOnChangeSelection = m_data.lastOnChangeSelection();
    589     const Vector<Element*>& items = m_data.listItems(this);
     590    const Vector<Element*>& items = listItems();
    590591
    591592    // If the cached selection list is empty, or the size has changed, then fire
     
    641642}
    642643
     644void HTMLSelectElement::checkListItems() const
     645{
     646#if !ASSERT_DISABLED
     647    Vector<Element*> items = m_listItems;
     648    const_cast<HTMLSelectElement*>(this)->recalcListItemsInternal(false);
     649    ASSERT(items == m_listItems);
     650#endif
     651}
     652
     653const Vector<Element*>& HTMLSelectElement::listItems() const
     654{
     655    if (m_recalcListItems)
     656        const_cast<HTMLSelectElement*>(this)->recalcListItemsInternal();
     657    else
     658        checkListItems();
     659
     660    return m_listItems;
     661}
     662
    643663void HTMLSelectElement::setRecalcListItems()
    644664{
    645     m_data.setShouldRecalcListItems(true);
     665    m_recalcListItems = true;
    646666    // Manual selection anchor is reset when manipulating the select programmatically.
    647667    m_data.setActiveSelectionAnchorIndex(-1);
     
    652672}
    653673
    654 void HTMLSelectElement::recalcListItems(SelectElementData& data, const Element* element, bool updateSelectedStates)
    655 {
    656     Vector<Element*>& listItems = data.rawListItems();
    657     listItems.clear();
    658 
    659     data.setShouldRecalcListItems(false);
     674void HTMLSelectElement::recalcListItemsInternal(bool updateSelectedStates)
     675{
     676    m_listItems.clear();
     677
     678    m_recalcListItems = false;
    660679
    661680    OptionElement* foundSelected = 0;
    662     for (Node* currentNode = element->firstChild(); currentNode;) {
     681    for (Node* currentNode = this->firstChild(); currentNode;) {
    663682        if (!currentNode->isElementNode()) {
    664             currentNode = currentNode->traverseNextSibling(element);
     683            currentNode = currentNode->traverseNextSibling(this);
    665684            continue;
    666685        }
     
    672691        // (http://www.w3.org/TR/html401/interact/forms.html#h-17.6)
    673692        if (isOptionGroupElement(current)) {
    674             listItems.append(current);
     693            m_listItems.append(current);
    675694            if (current->firstChild()) {
    676695                currentNode = current->firstChild();
     
    680699
    681700        if (OptionElement* optionElement = toOptionElement(current)) {
    682             listItems.append(current);
    683 
    684             if (updateSelectedStates && !data.multiple()) {
    685                 if (!foundSelected && (data.size() <= 1 || optionElement->selected())) {
     701            m_listItems.append(current);
     702
     703            if (updateSelectedStates && !m_data.multiple()) {
     704                if (!foundSelected && (m_data.size() <= 1 || optionElement->selected())) {
    686705                    foundSelected = optionElement;
    687706                    foundSelected->setSelectedState(true);
     
    694713
    695714        if (current->hasTagName(HTMLNames::hrTag))
    696             listItems.append(current);
     715            m_listItems.append(current);
    697716
    698717        // In conforming HTML code, only <optgroup> and <option> will be found
     
    702721        // handle this because such tags have already been removed from the
    703722        // <select>'s subtree at this point.
    704         currentNode = currentNode->traverseNextSibling(element);
     723        currentNode = currentNode->traverseNextSibling(this);
    705724    }
    706725}
     
    711730
    712731    // return the number of the first option selected
    713     const Vector<Element*>& items = m_data.listItems(this);
     732    const Vector<Element*>& items = listItems();
    714733    for (size_t i = 0; i < items.size(); ++i) {
    715734        if (OptionElement* optionElement = toOptionElement(items[i])) {
     
    730749        deselect = true;
    731750
    732     const Vector<Element*>& items = m_data.listItems(this);
     751    const Vector<Element*>& items = listItems();
    733752    int listIndex = optionToListIndex(optionIndex);
    734753
     
    773792int HTMLSelectElement::optionToListIndex(int optionIndex) const
    774793{
    775     const Vector<Element*>& items = m_data.listItems(this);
     794    const Vector<Element*>& items = listItems();
    776795    int listSize = static_cast<int>(items.size());
    777796    if (optionIndex < 0 || optionIndex >= listSize)
     
    792811int HTMLSelectElement::listToOptionIndex(int listIndex) const
    793812{
    794     const Vector<Element*>& items = m_data.listItems(this);
     813    const Vector<Element*>& items = listItems();
    795814    if (listIndex < 0 || listIndex >= static_cast<int>(items.size()) || !isOptionElement(items[listIndex]))
    796815        return -1;
     
    827846void HTMLSelectElement::deselectItemsWithoutValidation(Element* excludeElement)
    828847{
    829     const Vector<Element*>& items = m_data.listItems(this);
     848    const Vector<Element*>& items = listItems();
    830849    for (unsigned i = 0; i < items.size(); ++i) {
    831850        if (items[i] == excludeElement)
     
    839858bool HTMLSelectElement::saveFormControlState(String& value) const
    840859{
    841     const Vector<Element*>& items = m_data.listItems(this);
     860    const Vector<Element*>& items = listItems();
    842861    int length = items.size();
    843862
     
    856875void HTMLSelectElement::restoreFormControlState(const String& state)
    857876{
    858     recalcListItems(m_data, this);
    859 
    860     const Vector<Element*>& items = m_data.listItems(this);
     877    recalcListItems();
     878
     879    const Vector<Element*>& items = listItems();
    861880    int length = items.size();
    862881
     
    886905
    887906    bool successful = false;
    888     const Vector<Element*>& items = m_data.listItems(this);
     907    const Vector<Element*>& items = listItems();
    889908
    890909    for (unsigned i = 0; i < items.size(); ++i) {
     
    907926    OptionElement* selectedOption = 0;
    908927
    909     const Vector<Element*>& items = m_data.listItems(this);
     928    const Vector<Element*>& items = listItems();
    910929    for (unsigned i = 0; i < items.size(); ++i) {
    911930        OptionElement* optionElement = toOptionElement(items[i]);
     
    9811000        const String& keyIdentifier = static_cast<KeyboardEvent*>(event)->keyIdentifier();
    9821001        bool handled = true;
    983         const Vector<Element*>& listItems = m_data.listItems(this);
     1002        const Vector<Element*>& listItems = this->listItems();
    9841003        int listIndex = optionToListIndex(selectedIndex());
    9851004
     
    11091128    bool multiSelect = m_data.multiple() && multi && !shift;
    11101129
    1111     Element* clickedElement = m_data.listItems(this)[listIndex];
     1130    Element* clickedElement = listItems()[listIndex];
    11121131    OptionElement* option = toOptionElement(clickedElement);
    11131132    if (option) {
     
    11491168void HTMLSelectElement::listBoxDefaultEventHandler(Event* event)
    11501169{
    1151     const Vector<Element*>& listItems = m_data.listItems(this);
     1170    const Vector<Element*>& listItems = this->listItems();
    11521171
    11531172    if (event->type() == eventNames().mousedownEvent && event->isMouseEvent() && static_cast<MouseEvent*>(event)->button() == LeftButton) {
     
    13071326    unsigned index = 0;
    13081327    bool found = false;
    1309     const Vector<Element*>& items = m_data.listItems(this);
     1328    const Vector<Element*>& items = listItems();
    13101329    for (size_t i = 0; i < items.size(); ++i) {
    13111330        if (OptionElement* optionElement = toOptionElement(items[i])) {
     
    13631382    }
    13641383
    1365     const Vector<Element*>& items = m_data.listItems(this);
     1384    const Vector<Element*>& items = listItems();
    13661385    int itemCount = items.size();
    13671386    if (itemCount < 1)
     
    14011420    // items yet - but for innerHTML and related methods, this method is called
    14021421    // after the whole subtree is constructed.
    1403     recalcListItems(m_data, this, true);
     1422    recalcListItems(true);
    14041423    HTMLFormControlElementWithState::insertedIntoTree(deep);
    14051424}
     
    14121431   
    14131432    // if this index is already selected, unselect. otherwise update the selected index
    1414     const Vector<Element*>& items = m_data.listItems(this);
     1433    const Vector<Element*>& items = listItems();
    14151434    int listIndex = optionToListIndex(index);
    14161435    if (OptionElement* optionElement = (listIndex >= 0 ? toOptionElement(items[listIndex]) : 0)) {
     
    14331452    unsigned options = 0;
    14341453
    1435     const Vector<Element*>& items = m_data.listItems(this);
     1454    const Vector<Element*>& items = listItems();
    14361455    for (unsigned i = 0; i < items.size(); ++i) {
    14371456        if (isOptionElement(items[i]))
  • trunk/Source/WebCore/html/HTMLSelectElement.h

    r97123 r97135  
    3131#include "HTMLFormControlElement.h"
    3232#include "SelectElement.h"
     33#include <wtf/Vector.h>
    3334
    3435namespace WebCore {
     
    6768    void recalcListItemsIfNeeded();
    6869
    69     const Vector<Element*>& listItems() const { return m_data.listItems(this); }
     70    const Vector<Element*>& listItems() const;
    7071
    7172    virtual void accessKeyAction(bool sendToAnyElement);
     
    144145    bool hasPlaceholderLabelOption() const;
    145146
    146     static void recalcListItems(SelectElementData&, const Element*, bool updateSelectedStates = true);
     147    void checkListItems() const;
     148    void recalcListItemsInternal(bool updateSelectedStates = true);
    147149    void setSelectedIndexInternal(int optionIndex, bool deselect = true, bool fireOnChangeNow = false, bool userDrivenChange = true);
    148150    void deselectItemsWithoutValidation(Element* excludeElement = 0);
     
    154156    void listBoxDefaultEventHandler(Event*);
    155157    void setOptionsChangedOnRenderer();
    156     friend class SelectElementData;
    157158
    158159    enum SkipDirection {
     
    169170    SelectElementData m_data;
    170171    CollectionCache m_collectionInfo;
     172    Vector<Element*> m_listItems;
     173    bool m_recalcListItems;
    171174};
    172175
  • trunk/Source/WebCore/html/HTMLSelectElementWin.cpp

    r97123 r97135  
    4949    int index = selectedIndex();
    5050    ASSERT(index >= 0);
    51     ASSERT(index < m_data.listItems(this).size());
     51    ASSERT(index < listItems().size());
    5252    setSelectedIndexInternal(index);
    5353    event->setDefaultHandled();
Note: See TracChangeset for help on using the changeset viewer.