Ignore:
Timestamp:
Jan 31, 2007, 5:43:13 AM (18 years ago)
Author:
mjs
Message:

JavaScriptCore:

Reviewed by Mark with help from Lars.


  • added new ListHashSet class, which combines a hashtable and a linked list to provide a set that keeps elements in inserted order


This is to assist in fixing the following:
<rdar://problem/4751164> REGRESSION: Safari places text on incorrect button when returning to a page via back [10541]
http://bugs.webkit.org/show_bug.cgi?id=10541

  • JavaScriptCore.vcproj/WTF/WTF.vcproj:
  • JavaScriptCore.xcodeproj/project.pbxproj:
  • wtf/HashTable.h: (WTF::HashTable::find): (WTF::HashTable::contains): (WTF::::find): (WTF::::contains):
  • wtf/ListHashSet.h: Added. (WTF::ListHashSetNode::ListHashSetNode): (WTF::ListHashSetNodeHashFunctions::hash): (WTF::ListHashSetNodeHashFunctions::equal): (WTF::ListHashSetIterator::ListHashSetIterator): (WTF::ListHashSetIterator::get): (WTF::ListHashSetIterator::operator*): (WTF::ListHashSetIterator::operator->): (WTF::ListHashSetIterator::operator++): (WTF::ListHashSetIterator::operator--): (WTF::ListHashSetIterator::operator==): (WTF::ListHashSetIterator::operator!=): (WTF::ListHashSetIterator::operator const_iterator): (WTF::ListHashSetIterator::node): (WTF::ListHashSetConstIterator::ListHashSetConstIterator): (WTF::ListHashSetConstIterator::get): (WTF::ListHashSetConstIterator::operator*): (WTF::ListHashSetConstIterator::operator->): (WTF::ListHashSetConstIterator::operator++): (WTF::ListHashSetConstIterator::operator--): (WTF::ListHashSetConstIterator::operator==): (WTF::ListHashSetConstIterator::operator!=): (WTF::ListHashSetConstIterator::node): (WTF::ListHashSetTranslator::hash): (WTF::ListHashSetTranslator::equal): (WTF::ListHashSetTranslator::translate): (WTF::::ListHashSet): (WTF::::operator): (WTF::::~ListHashSet): (WTF::::size): (WTF::::capacity): (WTF::::isEmpty): (WTF::::begin): (WTF::::end): (WTF::::find): (WTF::::contains): (WTF::::add): (WTF::::remove): (WTF::::clear): (WTF::::unlinkAndDelete): (WTF::::appendNode): (WTF::::deleteAllNodes): (WTF::::makeIterator): (WTF::::makeConstIterator): (WTF::deleteAllValues):

WebCore:

Reviewed by Mark.

  • dom/Document.cpp: (WebCore::Document::formElementsState):
  • dom/Document.h:


I couldn't figure out the back/forward support in the tests enough
to make an automated test, but this maual test reproduces the
problem 100% without this patch:


  • manual-tests/back.html: Added.
  • manual-tests/form-control-madness.html: Added.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj

    r19087 r19302  
    8989                65621E6D089E859700760F35 /* property_slot.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 65621E6B089E859700760F35 /* property_slot.cpp */; };
    9090                65621E6E089E859700760F35 /* property_slot.h in Headers */ = {isa = PBXBuildFile; fileRef = 65621E6C089E859700760F35 /* property_slot.h */; settings = {ATTRIBUTES = (Private, ); }; };
     91                657EB7460B708F540063461B /* ListHashSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 657EB7450B708F540063461B /* ListHashSet.h */; settings = {ATTRIBUTES = (Private, ); }; };
    9192                657EEBC0094E445E008C9C7B /* HashCountedSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 657EEBBF094E445E008C9C7B /* HashCountedSet.h */; settings = {ATTRIBUTES = (Private, ); }; };
    9293                6580F796094070560082C219 /* PassRefPtr.h in Headers */ = {isa = PBXBuildFile; fileRef = 6580F795094070560082C219 /* PassRefPtr.h */; settings = {ATTRIBUTES = (Private, ); }; };
     
    525526                65621E6B089E859700760F35 /* property_slot.cpp */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.cpp.cpp; path = property_slot.cpp; sourceTree = "<group>"; tabWidth = 8; };
    526527                65621E6C089E859700760F35 /* property_slot.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = property_slot.h; sourceTree = "<group>"; tabWidth = 8; };
     528                657EB7450B708F540063461B /* ListHashSet.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = ListHashSet.h; sourceTree = "<group>"; };
    527529                657EEBBF094E445E008C9C7B /* HashCountedSet.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = HashCountedSet.h; sourceTree = "<group>"; tabWidth = 8; };
    528530                6580F795094070560082C219 /* PassRefPtr.h */ = {isa = PBXFileReference; fileEncoding = 30; indentWidth = 4; lastKnownFileType = sourcecode.c.h; path = PassRefPtr.h; sourceTree = "<group>"; tabWidth = 8; };
     
    888890                        isa = PBXGroup;
    889891                        children = (
     892                                657EB7450B708F540063461B /* ListHashSet.h */,
    890893                                E195678D09E7CF1200B89D13 /* unicode */,
    891894                                93AA4F770957251F0084B3A7 /* AlwaysInline.h */,
     
    12211224                                E11D51760B2E798D0056C188 /* StringExtras.h in Headers */,
    12221225                                146AAB2B0B66A84900E55F16 /* JSStringRefCF.h in Headers */,
     1226                                657EB7460B708F540063461B /* ListHashSet.h in Headers */,
    12231227                        );
    12241228                        runOnlyForDeploymentPostprocessing = 0;
Note: See TracChangeset for help on using the changeset viewer.