Changeset 201782 in webkit
- Timestamp:
- Jun 7, 2016 6:31:17 PM (8 years ago)
- Location:
- trunk
- Files:
-
- 34 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/ChangeLog
r201776 r201782 1 2016-06-07 Keith Rollin <krollin@apple.com> 2 3 Remove all uses of PassRefPtr in WTF 4 https://bugs.webkit.org/show_bug.cgi?id=157596 5 <rdar://problem/26234391> 6 7 Reviewed by Chris Dumez. 8 9 Update calls to interfaces that no longer take or return PassRefPtrs. 10 11 * runtime/JSString.cpp: 12 (JSC::JSRopeString::resolveRope): 13 * runtime/JSString.h: 14 (JSC::JSString::JSString): 15 (JSC::jsSubstring): 16 * runtime/PrivateName.h: 17 (JSC::PrivateName::PrivateName): 18 * runtime/SmallStrings.cpp: 19 (JSC::SmallStringsStorage::SmallStringsStorage): 20 * runtime/StringConstructor.cpp: 21 (JSC::stringFromCharCodeSlowCase): 22 * runtime/StringPrototype.cpp: 23 (JSC::jsSpliceSubstrings): 24 (JSC::jsSpliceSubstringsWithSeparators): 25 (JSC::replaceUsingStringSearch): 26 (JSC::repeatCharacter): 27 (JSC::stringProtoFuncFontsize): 28 (JSC::stringProtoFuncLink): 29 (JSC::normalize): 30 1 31 2016-06-07 Saam barati <sbarati@apple.com> 2 32 -
trunk/Source/JavaScriptCore/jit/GCAwareJITStubRoutine.cpp
r199275 r201782 36 36 #include "SlotVisitor.h" 37 37 #include "Structure.h" 38 #include <wtf/RefPtr.h> 38 39 39 40 namespace JSC { … … 145 146 if (codeBlockForExceptionHandlers) { 146 147 RELEASE_ASSERT(JITCode::isOptimizingJIT(codeBlockForExceptionHandlers->jitType())); 147 return static_pointer_cast<JITStubRoutine>( 148 adoptRef(new GCAwareJITStubRoutineWithExceptionHandler(code, vm, owner, cells, codeBlockForExceptionHandlers, exceptionHandlerCallSiteIndex))); 148 return adoptRef(new GCAwareJITStubRoutineWithExceptionHandler(code, vm, owner, cells, codeBlockForExceptionHandlers, exceptionHandlerCallSiteIndex)); 149 149 } 150 150 151 if (cells.isEmpty()) { 152 return static_pointer_cast<JITStubRoutine>( 153 adoptRef(new GCAwareJITStubRoutine(code, vm))); 154 } 151 if (cells.isEmpty()) 152 return adoptRef(new GCAwareJITStubRoutine(code, vm)); 155 153 156 return static_pointer_cast<JITStubRoutine>( 157 adoptRef(new MarkingGCAwareJITStubRoutine(code, vm, owner, cells))); 154 return adoptRef(new MarkingGCAwareJITStubRoutine(code, vm, owner, cells)); 158 155 } 159 156 -
trunk/Source/JavaScriptCore/runtime/JSString.cpp
r197379 r201782 253 253 if (is8Bit()) { 254 254 LChar* buffer; 255 if ( RefPtr<StringImpl>newImpl = StringImpl::tryCreateUninitialized(m_length, buffer)) {255 if (auto newImpl = StringImpl::tryCreateUninitialized(m_length, buffer)) { 256 256 Heap::heap(this)->reportExtraMemoryAllocated(newImpl->cost()); 257 m_value = newImpl.release();257 m_value = WTFMove(newImpl); 258 258 } else { 259 259 outOfMemory(exec); … … 267 267 268 268 UChar* buffer; 269 if ( RefPtr<StringImpl>newImpl = StringImpl::tryCreateUninitialized(m_length, buffer)) {269 if (auto newImpl = StringImpl::tryCreateUninitialized(m_length, buffer)) { 270 270 Heap::heap(this)->reportExtraMemoryAllocated(newImpl->cost()); 271 m_value = newImpl.release();271 m_value = WTFMove(newImpl); 272 272 } else { 273 273 outOfMemory(exec); -
trunk/Source/JavaScriptCore/runtime/JSString.h
r200288 r201782 94 94 : JSCell(vm, vm.stringStructure.get()) 95 95 , m_flags(0) 96 , m_value( value)96 , m_value(RefPtr<StringImpl>(value)) 97 97 { 98 98 } … … 604 604 return vm->smallStrings.singleCharacterString(c); 605 605 } 606 return JSString::createHasOtherOwner(*vm, StringImpl::createSubstringSharingImpl( s.impl(), offset, length));606 return JSString::createHasOtherOwner(*vm, StringImpl::createSubstringSharingImpl(*s.impl(), offset, length)); 607 607 } 608 608 -
trunk/Source/JavaScriptCore/runtime/PrivateName.h
r198168 r201782 45 45 enum DescriptionTag { Description }; 46 46 explicit PrivateName(DescriptionTag, const String& description) 47 : m_uid(StringImpl::createSymbol( description.impl()))47 : m_uid(StringImpl::createSymbol(*description.impl())) 48 48 { 49 49 } -
trunk/Source/JavaScriptCore/runtime/SmallStrings.cpp
r191864 r201782 55 55 { 56 56 LChar* characterBuffer = 0; 57 RefPtr<StringImpl>baseString = StringImpl::createUninitialized(singleCharacterStringCount, characterBuffer);57 auto baseString = StringImpl::createUninitialized(singleCharacterStringCount, characterBuffer); 58 58 for (unsigned i = 0; i < singleCharacterStringCount; ++i) { 59 59 characterBuffer[i] = i; 60 m_reps[i] = AtomicStringImpl::add( PassRefPtr<StringImpl>(StringImpl::createSubstringSharingImpl(baseString, i, 1)).get());60 m_reps[i] = AtomicStringImpl::add(StringImpl::createSubstringSharingImpl(baseString.get(), i, 1).ptr()); 61 61 } 62 62 } -
trunk/Source/JavaScriptCore/runtime/StringConstructor.cpp
r201448 r201782 71 71 unsigned length = exec->argumentCount(); 72 72 UChar* buf; 73 PassRefPtr<StringImpl>impl = StringImpl::createUninitialized(length, buf);73 auto impl = StringImpl::createUninitialized(length, buf); 74 74 for (unsigned i = 0; i < length; ++i) 75 75 buf[i] = static_cast<UChar>(exec->uncheckedArgument(i).toUInt32(exec)); 76 return jsString(exec, impl);76 return jsString(exec, WTFMove(impl)); 77 77 } 78 78 -
trunk/Source/JavaScriptCore/runtime/StringPrototype.cpp
r201448 r201782 295 295 return sourceVal; 296 296 // We could call String::substringSharingImpl(), but this would result in redundant checks. 297 return jsString(exec, StringImpl::createSubstringSharingImpl( source.impl(), std::max(0, position), std::min(sourceSize, length)));297 return jsString(exec, StringImpl::createSubstringSharingImpl(*source.impl(), std::max(0, position), std::min(sourceSize, length))); 298 298 } 299 299 … … 308 308 LChar* buffer; 309 309 const LChar* sourceData = source.characters8(); 310 RefPtr<StringImpl>impl = StringImpl::tryCreateUninitialized(totalLength, buffer);310 auto impl = StringImpl::tryCreateUninitialized(totalLength, buffer); 311 311 if (!impl) 312 312 return throwOutOfMemoryError(exec); … … 320 320 } 321 321 322 return jsString(exec, impl.release());322 return jsString(exec, WTFMove(impl)); 323 323 } 324 324 … … 326 326 const UChar* sourceData = source.characters16(); 327 327 328 RefPtr<StringImpl>impl = StringImpl::tryCreateUninitialized(totalLength, buffer);328 auto impl = StringImpl::tryCreateUninitialized(totalLength, buffer); 329 329 if (!impl) 330 330 return throwOutOfMemoryError(exec); … … 338 338 } 339 339 340 return jsString(exec, impl.release());340 return jsString(exec, WTFMove(impl)); 341 341 } 342 342 … … 350 350 return sourceVal; 351 351 // We could call String::substringSharingImpl(), but this would result in redundant checks. 352 return jsString(exec, StringImpl::createSubstringSharingImpl( source.impl(), std::max(0, position), std::min(sourceSize, length)));352 return jsString(exec, StringImpl::createSubstringSharingImpl(*source.impl(), std::max(0, position), std::min(sourceSize, length))); 353 353 } 354 354 … … 372 372 const LChar* sourceData = source.characters8(); 373 373 374 RefPtr<StringImpl>impl = StringImpl::tryCreateUninitialized(totalLength.unsafeGet(), buffer);374 auto impl = StringImpl::tryCreateUninitialized(totalLength.unsafeGet(), buffer); 375 375 if (!impl) 376 376 return throwOutOfMemoryError(exec); … … 393 393 } 394 394 395 return jsString(exec, impl.release());395 return jsString(exec, WTFMove(impl)); 396 396 } 397 397 398 398 UChar* buffer; 399 RefPtr<StringImpl>impl = StringImpl::tryCreateUninitialized(totalLength.unsafeGet(), buffer);399 auto impl = StringImpl::tryCreateUninitialized(totalLength.unsafeGet(), buffer); 400 400 if (!impl) 401 401 return throwOutOfMemoryError(exec); … … 424 424 } 425 425 426 return jsString(exec, impl.release());426 return jsString(exec, WTFMove(impl)); 427 427 } 428 428 … … 723 723 724 724 StringImpl* stringImpl = string.impl(); 725 String leftPart(StringImpl::createSubstringSharingImpl( stringImpl, 0, matchStart));725 String leftPart(StringImpl::createSubstringSharingImpl(*stringImpl, 0, matchStart)); 726 726 727 727 size_t matchEnd = matchStart + searchString.impl()->length(); … … 730 730 731 731 size_t leftLength = stringImpl->length() - matchEnd; 732 String rightPart(StringImpl::createSubstringSharingImpl( stringImpl, matchEnd, leftLength));732 String rightPart(StringImpl::createSubstringSharingImpl(*stringImpl, matchEnd, leftLength)); 733 733 return JSValue::encode(JSC::jsString(exec, leftPart, middlePart, rightPart)); 734 734 } … … 752 752 { 753 753 CharacterType* buffer = nullptr; 754 RefPtr<StringImpl>impl = StringImpl::tryCreateUninitialized(repeatCount, buffer);754 auto impl = StringImpl::tryCreateUninitialized(repeatCount, buffer); 755 755 if (!impl) 756 756 return throwOutOfMemoryError(exec); … … 758 758 std::fill_n(buffer, repeatCount, character); 759 759 760 return jsString(exec, impl.release());760 return jsString(exec, WTFMove(impl)); 761 761 } 762 762 … … 765 765 { 766 766 CharacterType* buffer = nullptr; 767 RefPtr<StringImpl>impl = StringImpl::tryCreateUninitialized(repeatCount, buffer);767 auto impl = StringImpl::tryCreateUninitialized(repeatCount, buffer); 768 768 if (!impl) 769 769 return throwOutOfMemoryError(&exec), nullptr; … … 771 771 std::fill_n(buffer, repeatCount, character); 772 772 773 return jsString(&exec, impl.release());773 return jsString(&exec, WTFMove(impl)); 774 774 } 775 775 … … 1573 1573 // FIXME: Should we have an 8-bit version of this code path too? Or maybe only an 8-bit version? 1574 1574 UChar* buffer; 1575 PassRefPtr<StringImpl>impl = StringImpl::tryCreateUninitialized(bufferSize, buffer);1575 auto impl = StringImpl::tryCreateUninitialized(bufferSize, buffer); 1576 1576 if (!impl) 1577 1577 return JSValue::encode(jsUndefined()); … … 1599 1599 buffer[20 + stringSize] = 't'; 1600 1600 buffer[21 + stringSize] = '>'; 1601 return JSValue::encode(jsNontrivialString(exec, impl));1601 return JSValue::encode(jsNontrivialString(exec, WTFMove(impl))); 1602 1602 } 1603 1603 … … 1642 1642 // FIXME: Should we have an 8-bit version of this code path too? Or maybe only an 8-bit version? 1643 1643 UChar* buffer; 1644 PassRefPtr<StringImpl>impl = StringImpl::tryCreateUninitialized(bufferSize, buffer);1644 auto impl = StringImpl::tryCreateUninitialized(bufferSize, buffer); 1645 1645 if (!impl) 1646 1646 return JSValue::encode(jsUndefined()); … … 1662 1662 buffer[13 + linkTextSize + stringSize] = 'a'; 1663 1663 buffer[14 + linkTextSize + stringSize] = '>'; 1664 return JSValue::encode(jsNontrivialString(exec, impl));1664 return JSValue::encode(jsNontrivialString(exec, WTFMove(impl))); 1665 1665 } 1666 1666 … … 1879 1879 1880 1880 UChar* buffer = nullptr; 1881 RefPtr<StringImpl>impl = StringImpl::tryCreateUninitialized(normalizedStringLength, buffer);1881 auto impl = StringImpl::tryCreateUninitialized(normalizedStringLength, buffer); 1882 1882 if (!impl) 1883 1883 return throwOutOfMemoryError(exec); … … 1888 1888 return throwTypeError(exec); 1889 1889 1890 return jsString(exec, impl.release());1890 return jsString(exec, WTFMove(impl)); 1891 1891 } 1892 1892 -
trunk/Source/WTF/ChangeLog
r201756 r201782 1 2016-06-07 Keith Rollin <krollin@apple.com> 2 3 Remove all uses of PassRefPtr in WTF 4 https://bugs.webkit.org/show_bug.cgi?id=157596 5 <rdar://problem/26234391> 6 7 Reviewed by Chris Dumez. 8 9 Remove/update most interfaces that take or return PassRefPtrs. 10 Remaining references include those in non-Cocoa implementations and 11 those required for continued compatibility with modules that still use 12 PassRefPtrs (specifically: Forward.h, RefPtr interoperability, 13 SizeLimits.h, WorkQueue (Windows) DispatchQueueEfl, 14 DispatchWorkItemEfl, and PassRefPtr itself). 15 16 Update calls to interfaces that no longer take or return PassRefPtrs. 17 18 Update adoptRef(T*) to return a RefPtr instead of a PassRefPtr and 19 move it to RefPtr.h from PassRefPtr.h. 20 21 * wtf/MetaAllocator.cpp: 22 (WTF::MetaAllocator::allocate): 23 * wtf/MetaAllocator.h: 24 * wtf/ParallelJobsGeneric.h: 25 (WTF::ParallelEnvironment::ThreadPrivate::create): 26 * wtf/text/AtomicStringImpl.cpp: 27 (WTF::HashAndUTF8CharactersTranslator::translate): 28 (WTF::SubstringTranslator::translate): 29 * wtf/text/CString.cpp: 30 (WTF::CStringBuffer::createUninitialized): 31 * wtf/text/CString.h: 32 * wtf/text/StringBuilder.cpp: 33 (WTF::StringBuilder::reifyString): 34 (WTF::StringBuilder::resize): 35 (WTF::StringBuilder::reallocateBuffer<LChar>): 36 (WTF::StringBuilder::reallocateBuffer<UChar>): 37 * wtf/text/StringImpl.cpp: 38 (WTF::StringImpl::reallocateInternal): 39 (WTF::StringImpl::reallocate): 40 (WTF::StringImpl::create8BitIfPossible): 41 (WTF::StringImpl::createSymbol): 42 (WTF::StringImpl::createNullSymbol): 43 (WTF::StringImpl::convertToLowercaseWithoutLocale): 44 (WTF::StringImpl::convertToUppercaseWithoutLocale): 45 (WTF::StringImpl::convertToLowercaseWithLocale): 46 (WTF::StringImpl::convertToUppercaseWithLocale): 47 (WTF::StringImpl::convertASCIICase): 48 * wtf/text/StringImpl.h: 49 (WTF::StringImpl::StringImpl): 50 (WTF::StringImpl::createSubstringSharingImpl): 51 (WTF::StringImpl::tryCreateUninitialized): 52 (WTF::StringImpl::extractFoldedStringInSymbol): 53 * wtf/text/SymbolRegistry.cpp: 54 (WTF::SymbolRegistry::symbolForKey): 55 * wtf/text/WTFString.cpp: 56 (WTF::String::substringSharingImpl): 57 * wtf/text/WTFString.h: 58 (WTF::String::String): Deleted. 59 * wtf/text/cf/StringImplCF.cpp: 60 1 61 2016-06-07 Yusuke Suzuki <utatane.tea@gmail.com> 2 62 -
trunk/Source/WTF/wtf/MetaAllocator.cpp
r194840 r201782 149 149 } 150 150 151 PassRefPtr<MetaAllocatorHandle> MetaAllocator::allocate(size_t sizeInBytes, void* ownerUID)151 RefPtr<MetaAllocatorHandle> MetaAllocator::allocate(size_t sizeInBytes, void* ownerUID) 152 152 { 153 153 LockHolder locker(&m_lock); 154 154 155 155 if (!sizeInBytes) 156 return 0;156 return nullptr; 157 157 158 158 sizeInBytes = roundUp(sizeInBytes); … … 165 165 start = allocateNewSpace(numberOfPages); 166 166 if (!start) 167 return 0;167 return nullptr; 168 168 169 169 ASSERT(numberOfPages >= requestedNumberOfPages); … … 187 187 #endif 188 188 189 MetaAllocatorHandle* handle = new MetaAllocatorHandle(this, start, sizeInBytes, ownerUID);189 auto handle = adoptRef(*new MetaAllocatorHandle(this, start, sizeInBytes, ownerUID)); 190 190 191 191 if (UNLIKELY(!!m_tracker)) 192 m_tracker->notify(handle );193 194 return adoptRef(handle);192 m_tracker->notify(handle.ptr()); 193 194 return WTFMove(handle); 195 195 } 196 196 -
trunk/Source/WTF/wtf/MetaAllocator.h
r194840 r201782 69 69 WTF_EXPORT_PRIVATE virtual ~MetaAllocator(); 70 70 71 WTF_EXPORT_PRIVATE PassRefPtr<MetaAllocatorHandle> allocate(size_t sizeInBytes, void* ownerUID);71 WTF_EXPORT_PRIVATE RefPtr<MetaAllocatorHandle> allocate(size_t sizeInBytes, void* ownerUID); 72 72 73 73 void trackAllocations(MetaAllocatorTracker* tracker) -
trunk/Source/WTF/wtf/ParallelJobsGeneric.h
r188594 r201782 67 67 void waitForFinish(); 68 68 69 static PassRefPtr<ThreadPrivate> create()69 static Ref<ThreadPrivate> create() 70 70 { 71 return adoptRef( new ThreadPrivate());71 return adoptRef(*new ThreadPrivate()); 72 72 } 73 73 -
trunk/Source/WTF/wtf/PassRefPtr.h
r184316 r201782 22 22 #define WTF_PassRefPtr_h 23 23 24 #include <wtf/GetPtr.h>25 24 #include <wtf/Ref.h> 26 25 … … 29 28 template<typename T> class RefPtr; 30 29 template<typename T> class PassRefPtr; 31 template<typename T> PassRefPtr<T> adoptRef(T*);32 30 33 31 template<typename T> ALWAYS_INLINE void refIfNotNull(T* ptr) … … 60 58 template<typename U> PassRefPtr(const RefPtr<U>&); 61 59 template<typename U> PassRefPtr(Ref<U>&& reference) : m_ptr(&reference.leakRef()) { } 60 template<typename U> PassRefPtr(RefPtr<U>&& reference) : m_ptr(reference.leakRef()) { } 62 61 63 62 T* get() const { return m_ptr; } … … 74 73 operator UnspecifiedBoolType() const { return m_ptr ? &PassRefPtr::m_ptr : nullptr; } 75 74 76 friend PassRefPtr adoptRef<T>(T*);75 template<typename V, typename U> friend PassRefPtr<V> static_pointer_cast(const PassRefPtr<U>&); 77 76 78 77 private: … … 146 145 return a != b.get(); 147 146 } 148 149 template<typename T> inline PassRefPtr<T> adoptRef(T*p)147 148 template<typename V, typename U> inline PassRefPtr<V> static_pointer_cast(const PassRefPtr<U>& p) 150 149 { 151 adopted(p); 152 return PassRefPtr<T>(p, PassRefPtr<T>::Adopt); 153 } 154 155 template<typename T, typename U> inline PassRefPtr<T> static_pointer_cast(const PassRefPtr<U>& p) 156 { 157 return adoptRef(static_cast<T*>(p.leakRef())); 150 return PassRefPtr<V>(static_cast<V*>(p.leakRef()), PassRefPtr<V>::Adopt); 158 151 } 159 152 … … 165 158 166 159 using WTF::PassRefPtr; 167 using WTF::adoptRef;168 160 using WTF::static_pointer_cast; 169 161 -
trunk/Source/WTF/wtf/RefPtr.h
r201013 r201782 32 32 namespace WTF { 33 33 34 template<typename T> class RefPtr; 35 template<typename T> RefPtr<T> adoptRef(T*); 36 34 37 enum HashTableDeletedValueType { HashTableDeletedValue }; 35 38 … … 63 66 T* get() const { return m_ptr; } 64 67 65 PassRefPtr<T> release() { PassRefPtr<T> tmp = adoptRef(m_ptr); m_ptr = nullptr; return tmp; } 68 // FIXME: Remove release() and change all call sites to call WTFMove(). 69 RefPtr<T> release() { RefPtr<T> tmp = adoptRef(m_ptr); m_ptr = nullptr; return tmp; } 66 70 Ref<T> releaseNonNull() { ASSERT(m_ptr); Ref<T> tmp(adoptRef(*m_ptr)); m_ptr = nullptr; return tmp; } 67 71 … … 99 103 100 104 private: 105 friend RefPtr adoptRef<T>(T*); 106 107 enum AdoptTag { Adopt }; 108 RefPtr(T* ptr, AdoptTag) : m_ptr(ptr) { } 109 101 110 T* m_ptr; 102 111 }; … … 229 238 }; 230 239 240 template<typename T> inline RefPtr<T> adoptRef(T* p) 241 { 242 adopted(p); 243 return RefPtr<T>(p, RefPtr<T>::Adopt); 244 } 245 231 246 } // namespace WTF 232 247 233 248 using WTF::RefPtr; 249 using WTF::adoptRef; 234 250 using WTF::static_pointer_cast; 235 251 -
trunk/Source/WTF/wtf/text/AtomicStringImpl.cpp
r200626 r201782 220 220 { 221 221 UChar* target; 222 RefPtr<StringImpl>newString = StringImpl::createUninitialized(buffer.utf16Length, target);222 auto newString = StringImpl::createUninitialized(buffer.utf16Length, target); 223 223 224 224 bool isAllASCII; … … 230 230 newString = StringImpl::create(buffer.characters, buffer.length); 231 231 232 location = newString.leakRef();232 location = &newString.leakRef(); 233 233 location->setHash(hash); 234 234 location->setIsAtomic(true); … … 285 285 static void translate(StringImpl*& location, const SubstringLocation& buffer, unsigned hash) 286 286 { 287 location = &StringImpl::createSubstringSharingImpl( buffer.baseString, buffer.start, buffer.length).leakRef();287 location = &StringImpl::createSubstringSharingImpl(*buffer.baseString, buffer.start, buffer.length).leakRef(); 288 288 location->setHash(hash); 289 289 location->setIsAtomic(true); -
trunk/Source/WTF/wtf/text/CString.cpp
r200626 r201782 33 33 namespace WTF { 34 34 35 PassRefPtr<CStringBuffer> CStringBuffer::createUninitialized(size_t length)35 Ref<CStringBuffer> CStringBuffer::createUninitialized(size_t length) 36 36 { 37 37 RELEASE_ASSERT(length < (std::numeric_limits<unsigned>::max() - sizeof(CStringBuffer))); … … 40 40 size_t size = sizeof(CStringBuffer) + length + 1; 41 41 CStringBuffer* stringBuffer = static_cast<CStringBuffer*>(fastMalloc(size)); 42 return adoptRef( new (NotNull, stringBuffer) CStringBuffer(length));42 return adoptRef(*new (NotNull, stringBuffer) CStringBuffer(length)); 43 43 } 44 44 … … 77 77 return m_buffer->mutableData(); 78 78 } 79 79 80 80 CString CString::newUninitialized(size_t length, char*& characterBuffer) 81 81 { -
trunk/Source/WTF/wtf/text/CString.h
r165676 r201782 29 29 #include <wtf/HashFunctions.h> 30 30 #include <wtf/HashTraits.h> 31 #include <wtf/ PassRefPtr.h>31 #include <wtf/Ref.h> 32 32 #include <wtf/RefCounted.h> 33 33 … … 44 44 friend class CString; 45 45 46 static PassRefPtr<CStringBuffer> createUninitialized(size_t length);46 static Ref<CStringBuffer> createUninitialized(size_t length); 47 47 48 48 CStringBuffer(size_t length) : m_length(length) { } -
trunk/Source/WTF/wtf/text/StringBuilder.cpp
r201121 r201782 60 60 m_string = m_buffer.get(); 61 61 else 62 m_string = StringImpl::createSubstringSharingImpl( m_buffer, 0, m_length);62 m_string = StringImpl::createSubstringSharingImpl(*m_buffer, 0, m_length); 63 63 } 64 64 … … 89 89 ASSERT(newSize < m_string.length()); 90 90 m_length = newSize; 91 m_string = StringImpl::createSubstringSharingImpl( m_string.impl(), 0, newSize);91 m_string = StringImpl::createSubstringSharingImpl(*m_string.impl(), 0, newSize); 92 92 } 93 93 … … 148 148 149 149 if (m_buffer->hasOneRef()) 150 m_buffer = StringImpl::reallocate(m_buffer.release (), requiredLength, m_bufferCharacters8);150 m_buffer = StringImpl::reallocate(m_buffer.releaseNonNull(), requiredLength, m_bufferCharacters8); 151 151 else 152 152 allocateBuffer(m_buffer->characters8(), requiredLength); … … 163 163 allocateBufferUpConvert(m_buffer->characters8(), requiredLength); 164 164 else if (m_buffer->hasOneRef()) 165 m_buffer = StringImpl::reallocate(m_buffer.release (), requiredLength, m_bufferCharacters16);165 m_buffer = StringImpl::reallocate(m_buffer.releaseNonNull(), requiredLength, m_bufferCharacters16); 166 166 else 167 167 allocateBuffer(m_buffer->characters16(), requiredLength); -
trunk/Source/WTF/wtf/text/StringImpl.cpp
r198168 r201782 205 205 206 206 template <typename CharType> 207 inline Ref<StringImpl> StringImpl::reallocateInternal( PassRefPtr<StringImpl>originalString, unsigned length, CharType*& data)208 { 207 inline Ref<StringImpl> StringImpl::reallocateInternal(Ref<StringImpl>&& originalString, unsigned length, CharType*& data) 208 { 209 209 ASSERT(originalString->hasOneRef()); 210 210 ASSERT(originalString->bufferOwnership() == BufferInternal); … … 220 220 221 221 originalString->~StringImpl(); 222 StringImpl* string = static_cast<StringImpl*>(fastRealloc(originalString.leakRef(), allocationSize<CharType>(length)));222 auto* string = static_cast<StringImpl*>(fastRealloc(&originalString.leakRef(), allocationSize<CharType>(length))); 223 223 224 224 data = string->tailPointer<CharType>(); … … 226 226 } 227 227 228 Ref<StringImpl> StringImpl::reallocate( PassRefPtr<StringImpl>originalString, unsigned length, LChar*& data)228 Ref<StringImpl> StringImpl::reallocate(Ref<StringImpl>&& originalString, unsigned length, LChar*& data) 229 229 { 230 230 ASSERT(originalString->is8Bit()); 231 return reallocateInternal( originalString, length, data);232 } 233 234 Ref<StringImpl> StringImpl::reallocate( PassRefPtr<StringImpl>originalString, unsigned length, UChar*& data)231 return reallocateInternal(WTFMove(originalString), length, data); 232 } 233 234 Ref<StringImpl> StringImpl::reallocate(Ref<StringImpl>&& originalString, unsigned length, UChar*& data) 235 235 { 236 236 ASSERT(!originalString->is8Bit()); 237 return reallocateInternal( originalString, length, data);237 return reallocateInternal(WTFMove(originalString), length, data); 238 238 } 239 239 … … 266 266 267 267 LChar* data; 268 RefPtr<StringImpl>string = createUninitializedInternalNonEmpty(length, data);268 auto string = createUninitializedInternalNonEmpty(length, data); 269 269 270 270 for (size_t i = 0; i < length; ++i) { … … 274 274 } 275 275 276 return string .releaseNonNull();276 return string; 277 277 } 278 278 … … 292 292 } 293 293 294 Ref<SymbolImpl> StringImpl::createSymbol( PassRefPtr<StringImpl>rep)295 { 296 StringImpl* ownerRep = (rep->bufferOwnership() == BufferSubstring) ? rep->substringBuffer() : rep.get();294 Ref<SymbolImpl> StringImpl::createSymbol(StringImpl& rep) 295 { 296 auto* ownerRep = (rep.bufferOwnership() == BufferSubstring) ? rep.substringBuffer() : &rep; 297 297 298 298 // We allocate a buffer that contains … … 301 301 // 3. the pointer to the symbol registry 302 302 // 4. the placeholder for symbol aware hash value (allocated size is pointer size, but only 4 bytes are used) 303 StringImpl* stringImpl = static_cast<StringImpl*>(fastMalloc(allocationSize<StringImpl*>(3)));304 if (rep ->is8Bit())305 return adoptRef(static_cast<SymbolImpl&>(*new (NotNull, stringImpl) StringImpl(CreateSymbol, rep ->m_data8, rep->length(),ownerRep)));306 return adoptRef(static_cast<SymbolImpl&>(*new (NotNull, stringImpl) StringImpl(CreateSymbol, rep ->m_data16, rep->length(),ownerRep)));303 auto* stringImpl = static_cast<StringImpl*>(fastMalloc(allocationSize<StringImpl*>(3))); 304 if (rep.is8Bit()) 305 return adoptRef(static_cast<SymbolImpl&>(*new (NotNull, stringImpl) StringImpl(CreateSymbol, rep.m_data8, rep.length(), *ownerRep))); 306 return adoptRef(static_cast<SymbolImpl&>(*new (NotNull, stringImpl) StringImpl(CreateSymbol, rep.m_data16, rep.length(), *ownerRep))); 307 307 } 308 308 309 309 Ref<SymbolImpl> StringImpl::createNullSymbol() 310 310 { 311 return createSymbol( null());311 return createSymbol(*null()); 312 312 } 313 313 … … 428 428 // Do a slower implementation for cases that include non-ASCII characters. 429 429 UChar* data16; 430 RefPtr<StringImpl>newImpl = createUninitializedInternalNonEmpty(m_length, data16);430 auto newImpl = createUninitializedInternalNonEmpty(m_length, data16); 431 431 432 432 UErrorCode status = U_ZERO_ERROR; 433 433 int32_t realLength = u_strToLower(data16, length, m_data16, m_length, "", &status); 434 434 if (U_SUCCESS(status) && realLength == length) 435 return newImpl .releaseNonNull();435 return newImpl; 436 436 437 437 newImpl = createUninitialized(realLength, data16); … … 440 440 if (U_FAILURE(status)) 441 441 return *this; 442 return newImpl .releaseNonNull();442 return newImpl; 443 443 } 444 444 … … 456 456 if (is8Bit()) { 457 457 LChar* data8; 458 RefPtr<StringImpl>newImpl = createUninitialized(m_length, data8);458 auto newImpl = createUninitialized(m_length, data8); 459 459 460 460 // Do a faster loop for the case where all the characters are ASCII. … … 473 473 } 474 474 if (!(ored & ~0x7F)) 475 return newImpl .releaseNonNull();475 return newImpl; 476 476 477 477 // Do a slower implementation for cases that include non-ASCII Latin-1 characters. … … 495 495 496 496 if (!numberSharpSCharacters) 497 return newImpl .releaseNonNull();497 return newImpl; 498 498 499 499 // We have numberSSCharacters sharp-s characters, but none of the other special characters. … … 513 513 } 514 514 515 return newImpl .releaseNonNull();515 return newImpl; 516 516 } 517 517 … … 521 521 522 522 UChar* data16; 523 RefPtr<StringImpl>newImpl = createUninitialized(m_length, data16);523 auto newImpl = createUninitialized(m_length, data16); 524 524 525 525 // Do a faster loop for the case where all the characters are ASCII. … … 531 531 } 532 532 if (!(ored & ~0x7F)) 533 return newImpl .releaseNonNull();533 return newImpl; 534 534 535 535 // Do a slower implementation for cases that include non-ASCII characters. … … 537 537 int32_t realLength = u_strToUpper(data16, length, source16, m_length, "", &status); 538 538 if (U_SUCCESS(status) && realLength == length) 539 return newImpl .releaseNonNull();539 return newImpl; 540 540 newImpl = createUninitialized(realLength, data16); 541 541 status = U_ZERO_ERROR; … … 543 543 if (U_FAILURE(status)) 544 544 return *this; 545 return newImpl .releaseNonNull();545 return newImpl; 546 546 } 547 547 … … 579 579 const UChar* source16 = upconvertedCharacters; 580 580 UChar* data16; 581 RefPtr<StringImpl>newString = createUninitialized(length, data16);581 auto newString = createUninitialized(length, data16); 582 582 UErrorCode status = U_ZERO_ERROR; 583 583 int realLength = u_strToLower(data16, length, source16, length, "tr", &status); 584 584 if (U_SUCCESS(status) && realLength == length) 585 return newString .releaseNonNull();585 return newString; 586 586 newString = createUninitialized(realLength, data16); 587 587 status = U_ZERO_ERROR; … … 589 589 if (U_FAILURE(status)) 590 590 return *this; 591 return newString .releaseNonNull();591 return newString; 592 592 } 593 593 … … 610 610 const UChar* source16 = upconvertedCharacters; 611 611 UChar* data16; 612 RefPtr<StringImpl>newString = createUninitialized(length, data16);612 auto newString = createUninitialized(length, data16); 613 613 UErrorCode status = U_ZERO_ERROR; 614 614 int realLength = u_strToUpper(data16, length, source16, length, "tr", &status); 615 615 if (U_SUCCESS(status) && realLength == length) 616 return newString .releaseNonNull();616 return newString; 617 617 newString = createUninitialized(realLength, data16); 618 618 status = U_ZERO_ERROR; … … 620 620 if (U_FAILURE(status)) 621 621 return *this; 622 return newString .releaseNonNull();622 return newString; 623 623 } 624 624 … … 722 722 SlowPath: 723 723 CharacterType* newData; 724 Ref<StringImpl>newImpl = createUninitializedInternalNonEmpty(length, newData);724 auto newImpl = createUninitializedInternalNonEmpty(length, newData); 725 725 for (unsigned i = 0; i < failingIndex; ++i) 726 726 newData[i] = data[i]; -
trunk/Source/WTF/wtf/text/StringImpl.h
r198168 r201782 266 266 267 267 // Used to create new strings that are a substring of an existing 8-bit StringImpl (BufferSubstring) 268 StringImpl(const LChar* characters, unsigned length, PassRefPtr<StringImpl>base)268 StringImpl(const LChar* characters, unsigned length, Ref<StringImpl>&& base) 269 269 : m_refCount(s_refCountIncrement) 270 270 , m_length(length) … … 277 277 ASSERT(base->bufferOwnership() != BufferSubstring); 278 278 279 substringBuffer() = base.leakRef();279 substringBuffer() = &base.leakRef(); 280 280 281 281 STRING_STATS_ADD_8BIT_STRING2(m_length, true); … … 283 283 284 284 // Used to create new strings that are a substring of an existing 16-bit StringImpl (BufferSubstring) 285 StringImpl(const UChar* characters, unsigned length, PassRefPtr<StringImpl>base)285 StringImpl(const UChar* characters, unsigned length, Ref<StringImpl>&& base) 286 286 : m_refCount(s_refCountIncrement) 287 287 , m_length(length) … … 294 294 ASSERT(base->bufferOwnership() != BufferSubstring); 295 295 296 substringBuffer() = base.leakRef();296 substringBuffer() = &base.leakRef(); 297 297 298 298 STRING_STATS_ADD_16BIT_STRING2(m_length, true); … … 301 301 enum CreateSymbolTag { CreateSymbol }; 302 302 // Used to create new symbol strings that holds existing 8-bit [[Description]] string as a substring buffer (BufferSubstring). 303 StringImpl(CreateSymbolTag, const LChar* characters, unsigned length, PassRefPtr<StringImpl>base)303 StringImpl(CreateSymbolTag, const LChar* characters, unsigned length, Ref<StringImpl>&& base) 304 304 : m_refCount(s_refCountIncrement) 305 305 , m_length(length) … … 311 311 ASSERT(base->bufferOwnership() != BufferSubstring); 312 312 313 substringBuffer() = base.leakRef();313 substringBuffer() = &base.leakRef(); 314 314 symbolRegistry() = nullptr; 315 315 hashForSymbol() = nextHashForSymbol(); … … 319 319 320 320 // Used to create new symbol strings that holds existing 16-bit [[Description]] string as a substring buffer (BufferSubstring). 321 StringImpl(CreateSymbolTag, const UChar* characters, unsigned length, PassRefPtr<StringImpl>base)321 StringImpl(CreateSymbolTag, const UChar* characters, unsigned length, Ref<StringImpl>&& base) 322 322 : m_refCount(s_refCountIncrement) 323 323 , m_length(length) … … 329 329 ASSERT(base->bufferOwnership() != BufferSubstring); 330 330 331 substringBuffer() = base.leakRef();331 substringBuffer() = &base.leakRef(); 332 332 symbolRegistry() = nullptr; 333 333 hashForSymbol() = nextHashForSymbol(); … … 353 353 ALWAYS_INLINE static Ref<StringImpl> create(const char* s) { return create(reinterpret_cast<const LChar*>(s)); } 354 354 355 static ALWAYS_INLINE Ref<StringImpl> createSubstringSharingImpl(PassRefPtr<StringImpl> rep, unsigned offset, unsigned length) 356 { 357 ASSERT(rep); 358 ASSERT(length <= rep->length()); 355 static ALWAYS_INLINE Ref<StringImpl> createSubstringSharingImpl(StringImpl& rep, unsigned offset, unsigned length) 356 { 357 ASSERT(length <= rep.length()); 359 358 360 359 if (!length) 361 360 return *empty(); 362 361 363 StringImpl* ownerRep = (rep->bufferOwnership() == BufferSubstring) ? rep->substringBuffer() : rep.get();362 auto* ownerRep = ((rep.bufferOwnership() == BufferSubstring) ? rep.substringBuffer() : &rep); 364 363 365 364 // We allocate a buffer that contains both the StringImpl struct as well as the pointer to the owner string. 366 StringImpl* stringImpl = static_cast<StringImpl*>(fastMalloc(allocationSize<StringImpl*>(1)));367 if (rep ->is8Bit())368 return adoptRef(*new (NotNull, stringImpl) StringImpl(rep ->m_data8 + offset, length,ownerRep));369 return adoptRef(*new (NotNull, stringImpl) StringImpl(rep ->m_data16 + offset, length,ownerRep));365 auto* stringImpl = static_cast<StringImpl*>(fastMalloc(allocationSize<StringImpl*>(1))); 366 if (rep.is8Bit()) 367 return adoptRef(*new (NotNull, stringImpl) StringImpl(rep.m_data8 + offset, length, *ownerRep)); 368 return adoptRef(*new (NotNull, stringImpl) StringImpl(rep.m_data16 + offset, length, *ownerRep)); 370 369 } 371 370 … … 388 387 WTF_EXPORT_STRING_API static Ref<StringImpl> createUninitialized(unsigned length, LChar*& data); 389 388 WTF_EXPORT_STRING_API static Ref<StringImpl> createUninitialized(unsigned length, UChar*& data); 390 template <typename T> static ALWAYS_INLINE PassRefPtr<StringImpl> tryCreateUninitialized(unsigned length, T*& output)389 template <typename T> static ALWAYS_INLINE RefPtr<StringImpl> tryCreateUninitialized(unsigned length, T*& output) 391 390 { 392 391 if (!length) { 393 output = 0;392 output = nullptr; 394 393 return empty(); 395 394 } 396 395 397 396 if (length > ((std::numeric_limits<unsigned>::max() - sizeof(StringImpl)) / sizeof(T))) { 398 output = 0;399 return 0;397 output = nullptr; 398 return nullptr; 400 399 } 401 400 StringImpl* resultImpl; 402 401 if (!tryFastMalloc(allocationSize<T>(length)).getValue(resultImpl)) { 403 output = 0;404 return 0;402 output = nullptr; 403 return nullptr; 405 404 } 406 405 output = resultImpl->tailPointer<T>(); … … 410 409 411 410 WTF_EXPORT_STRING_API static Ref<SymbolImpl> createNullSymbol(); 412 WTF_EXPORT_STRING_API static Ref<SymbolImpl> createSymbol( PassRefPtr<StringImpl>rep);413 414 // Reallocate the StringImpl. The originalString must be only owned by the PassRefPtr,411 WTF_EXPORT_STRING_API static Ref<SymbolImpl> createSymbol(StringImpl& rep); 412 413 // Reallocate the StringImpl. The originalString must be only owned by the Ref, 415 414 // and the buffer ownership must be BufferInternal. Just like the input pointer of realloc(), 416 415 // the originalString can't be used after this function. 417 static Ref<StringImpl> reallocate( PassRefPtr<StringImpl>originalString, unsigned length, LChar*& data);418 static Ref<StringImpl> reallocate( PassRefPtr<StringImpl>originalString, unsigned length, UChar*& data);416 static Ref<StringImpl> reallocate(Ref<StringImpl>&& originalString, unsigned length, LChar*& data); 417 static Ref<StringImpl> reallocate(Ref<StringImpl>&& originalString, unsigned length, UChar*& data); 419 418 420 419 static unsigned flagsOffset() { return OBJECT_OFFSETOF(StringImpl, m_hashAndFlags); } … … 766 765 ASSERT(substringBuffer()); 767 766 ASSERT(!substringBuffer()->isSymbol()); 768 return createSubstringSharingImpl( this, 0, length());767 return createSubstringSharingImpl(*this, 0, length()); 769 768 } 770 769 … … 861 860 template <typename CharType> static Ref<StringImpl> createUninitializedInternal(unsigned, CharType*&); 862 861 template <typename CharType> static Ref<StringImpl> createUninitializedInternalNonEmpty(unsigned, CharType*&); 863 template <typename CharType> static Ref<StringImpl> reallocateInternal( PassRefPtr<StringImpl>, unsigned, CharType*&);862 template <typename CharType> static Ref<StringImpl> reallocateInternal(Ref<StringImpl>&&, unsigned, CharType*&); 864 863 template <typename CharType> static Ref<StringImpl> createInternal(const CharType*, unsigned); 865 864 WTF_EXPORT_PRIVATE NEVER_INLINE unsigned hashSlowCase() const; -
trunk/Source/WTF/wtf/text/SymbolRegistry.cpp
r184828 r201782 41 41 return *static_cast<SymbolImpl*>(addResult.iterator->impl()); 42 42 43 Ref<SymbolImpl> symbol = StringImpl::createSymbol(rep.impl());43 auto symbol = StringImpl::createSymbol(*rep.impl()); 44 44 symbol->symbolRegistry() = this; 45 45 *addResult.iterator = SymbolRegistryKey(&symbol.get()); -
trunk/Source/WTF/wtf/text/WTFString.cpp
r200626 r201782 333 333 if (!offset && length == stringLength) 334 334 return *this; 335 return String(StringImpl::createSubstringSharingImpl( m_impl, offset, length));335 return String(StringImpl::createSubstringSharingImpl(*m_impl, offset, length)); 336 336 } 337 337 -
trunk/Source/WTF/wtf/text/WTFString.h
r201594 r201782 108 108 String(StringImpl&); 109 109 String(StringImpl*); 110 String(PassRefPtr<StringImpl>);111 110 String(Ref<StringImpl>&&); 112 111 String(RefPtr<StringImpl>&&); … … 528 527 529 528 inline String::String(StringImpl* impl) 530 : m_impl(impl)531 {532 }533 534 inline String::String(PassRefPtr<StringImpl> impl)535 529 : m_impl(impl) 536 530 { -
trunk/Source/WTF/wtf/text/cf/StringImplCF.cpp
r193378 r201782 26 26 #include <CoreFoundation/CoreFoundation.h> 27 27 #include <wtf/MainThread.h> 28 #include <wtf/PassRefPtr.h>29 28 #include <wtf/RetainPtr.h> 30 29 #include <wtf/Threading.h> -
trunk/Source/WebCore/ChangeLog
r201777 r201782 1 2016-06-07 Keith Rollin <krollin@apple.com> 2 3 Remove all uses of PassRefPtr in WTF 4 https://bugs.webkit.org/show_bug.cgi?id=157596 5 <rdar://problem/26234391> 6 7 Reviewed by Chris Dumez. 8 9 Update calls to interfaces that no longer take or return PassRefPtrs. 10 11 No new tests: no new functionality so changes are covered by existing 12 tests. 13 14 * css/CSSPrimitiveValue.cpp: 15 (WebCore::CSSPrimitiveValue::formatNumberValue): 16 * dom/Document.cpp: 17 (WebCore::Document::displayStringModifiedByEncoding): 18 * xml/XPathGrammar.y: 19 1 20 2016-06-07 Myles C. Maxfield <mmaxfield@apple.com> 2 21 -
trunk/Source/WebCore/css/CSSPrimitiveValue.cpp
r201690 r201782 1045 1045 unsigned bufferLength = decimal.bufferLengthForStringDecimal() + suffixLength; 1046 1046 LChar* buffer; 1047 Ref<StringImpl>string = StringImpl::createUninitialized(bufferLength, buffer);1047 auto string = StringImpl::createUninitialized(bufferLength, buffer); 1048 1048 1049 1049 unsigned length = decimal.toStringDecimal(buffer, bufferLength); -
trunk/Source/WebCore/dom/Document.cpp
r201753 r201782 5511 5511 { 5512 5512 if (m_decoder) 5513 return m_decoder->encoding().displayString(str.impl()) ;5513 return m_decoder->encoding().displayString(str.impl()).get(); 5514 5514 return str; 5515 5515 } -
trunk/Source/WebCore/html/canvas/WebGL2RenderingContext.cpp
r200298 r201782 1837 1837 return getBooleanArrayParameter(pname); 1838 1838 case GraphicsContext3D::COMPRESSED_TEXTURE_FORMATS: 1839 return WebGLGetInfo( Uint32Array::create(m_compressedTextureFormats.data(), m_compressedTextureFormats.size()).release());1839 return WebGLGetInfo(PassRefPtr<Uint32Array>(Uint32Array::create(m_compressedTextureFormats.data(), m_compressedTextureFormats.size()))); 1840 1840 case GraphicsContext3D::CULL_FACE: 1841 1841 return getBooleanParameter(pname); -
trunk/Source/WebCore/html/canvas/WebGLRenderingContext.cpp
r200298 r201782 956 956 return getBooleanArrayParameter(pname); 957 957 case GraphicsContext3D::COMPRESSED_TEXTURE_FORMATS: 958 return WebGLGetInfo( Uint32Array::create(m_compressedTextureFormats.data(), m_compressedTextureFormats.size()).release());958 return WebGLGetInfo(PassRefPtr<Uint32Array>(Uint32Array::create(m_compressedTextureFormats.data(), m_compressedTextureFormats.size()))); 959 959 case GraphicsContext3D::CULL_FACE: 960 960 return getBooleanParameter(pname); -
trunk/Source/WebCore/html/canvas/WebGLRenderingContextBase.cpp
r200789 r201782 2511 2511 if (length == 1) 2512 2512 return WebGLGetInfo(value[0]); 2513 return WebGLGetInfo( Float32Array::create(value, length).release());2513 return WebGLGetInfo(PassRefPtr<Float32Array>(Float32Array::create(value, length))); 2514 2514 } 2515 2515 case GraphicsContext3D::INT: { … … 2521 2521 if (length == 1) 2522 2522 return WebGLGetInfo(value[0]); 2523 return WebGLGetInfo( Int32Array::create(value, length).release());2523 return WebGLGetInfo(PassRefPtr<Int32Array>(Int32Array::create(value, length))); 2524 2524 } 2525 2525 case GraphicsContext3D::BOOL: { … … 2617 2617 return WebGLGetInfo(state.type); 2618 2618 case GraphicsContext3D::CURRENT_VERTEX_ATTRIB: 2619 return WebGLGetInfo( Float32Array::create(m_vertexAttribValue[index].value, 4).release());2619 return WebGLGetInfo(PassRefPtr<Float32Array>(Float32Array::create(m_vertexAttribValue[index].value, 4))); 2620 2620 default: 2621 2621 synthesizeGLError(GraphicsContext3D::INVALID_ENUM, "getVertexAttrib", "invalid parameter name"); … … 3965 3965 notImplemented(); 3966 3966 } 3967 return WebGLGetInfo( Float32Array::create(value, length).release());3967 return WebGLGetInfo(PassRefPtr<Float32Array>(Float32Array::create(value, length))); 3968 3968 } 3969 3969 … … 3984 3984 notImplemented(); 3985 3985 } 3986 return WebGLGetInfo( Int32Array::create(value, length).release());3986 return WebGLGetInfo(PassRefPtr<Int32Array>(Int32Array::create(value, length))); 3987 3987 } 3988 3988 -
trunk/Source/WebCore/platform/animation/TimingFunction.h
r201759 r201782 28 28 #include <wtf/PassRefPtr.h> 29 29 #include <wtf/RefCounted.h> 30 #include <wtf/RefPtr.h> 30 31 31 32 namespace WebCore { -
trunk/Source/WebKit2/Platform/IPC/HandleMessage.h
r194496 r201782 142 142 143 143 RefPtr<typename T::DelayedReply> delayedReply = adoptRef(new typename T::DelayedReply(&connection, WTFMove(replyEncoder))); 144 callMemberFunction(WTFMove(arguments), delayedReply.release(), object, function);144 callMemberFunction(WTFMove(arguments), PassRefPtr<typename T::DelayedReply>(WTFMove(delayedReply)), object, function); 145 145 } 146 146 -
trunk/Tools/ChangeLog
r201760 r201782 1 2016-06-07 Keith Rollin <krollin@apple.com> 2 3 Remove all uses of PassRefPtr in WTF 4 https://bugs.webkit.org/show_bug.cgi?id=157596 5 <rdar://problem/26234391> 6 7 Reviewed by Chris Dumez. 8 9 Update calls to interfaces that no longer take or return PassRefPtrs. 10 11 * TestWebKitAPI/Tests/WTF/StringImpl.cpp: 12 (TestWebKitAPI::stringFromUTF8): 13 (TestWebKitAPI::TEST): 14 1 15 2016-06-07 Per Arne Vollan <pvollan@apple.com> 2 16 -
trunk/Tools/TestWebKitAPI/Tests/WTF/StringImpl.cpp
r198168 r201782 34 34 { 35 35 // Constructor using the template to determine the size. 36 RefPtr<StringImpl>stringWithTemplate = StringImpl::createFromLiteral("Template Literal");36 auto stringWithTemplate = StringImpl::createFromLiteral("Template Literal"); 37 37 ASSERT_EQ(strlen("Template Literal"), stringWithTemplate->length()); 38 38 ASSERT_TRUE(equal(stringWithTemplate.get(), "Template Literal")); … … 41 41 // Constructor taking the size explicitely. 42 42 const char* programmaticStringData = "Explicit Size Literal"; 43 RefPtr<StringImpl>programmaticString = StringImpl::createFromLiteral(programmaticStringData, strlen(programmaticStringData));43 auto programmaticString = StringImpl::createFromLiteral(programmaticStringData, strlen(programmaticStringData)); 44 44 ASSERT_EQ(strlen(programmaticStringData), programmaticString->length()); 45 45 ASSERT_TRUE(equal(programmaticString.get(), programmaticStringData)); … … 49 49 // Constructor without explicit size. 50 50 const char* stringWithoutLengthLiteral = "No Size Literal"; 51 RefPtr<StringImpl>programmaticStringNoLength = StringImpl::createFromLiteral(stringWithoutLengthLiteral);51 auto programmaticStringNoLength = StringImpl::createFromLiteral(stringWithoutLengthLiteral); 52 52 ASSERT_EQ(strlen(stringWithoutLengthLiteral), programmaticStringNoLength->length()); 53 53 ASSERT_TRUE(equal(programmaticStringNoLength.get(), stringWithoutLengthLiteral)); … … 58 58 TEST(WTF, StringImplReplaceWithLiteral) 59 59 { 60 RefPtr<StringImpl>testStringImpl = StringImpl::createFromLiteral("1224");60 auto testStringImpl = StringImpl::createFromLiteral("1224"); 61 61 ASSERT_TRUE(testStringImpl->is8Bit()); 62 62 … … 102 102 TEST(WTF, StringImplEqualIgnoringASCIICaseBasic) 103 103 { 104 RefPtr<StringImpl>a = StringImpl::createFromLiteral("aBcDeFG");105 RefPtr<StringImpl>b = StringImpl::createFromLiteral("ABCDEFG");106 RefPtr<StringImpl>c = StringImpl::createFromLiteral("abcdefg");104 auto a = StringImpl::createFromLiteral("aBcDeFG"); 105 auto b = StringImpl::createFromLiteral("ABCDEFG"); 106 auto c = StringImpl::createFromLiteral("abcdefg"); 107 107 const char d[] = "aBcDeFG"; 108 RefPtr<StringImpl>empty = StringImpl::create(reinterpret_cast<const LChar*>(""));109 RefPtr<StringImpl>shorter = StringImpl::createFromLiteral("abcdef");110 RefPtr<StringImpl>different = StringImpl::createFromLiteral("abcrefg");108 auto empty = StringImpl::create(reinterpret_cast<const LChar*>("")); 109 auto shorter = StringImpl::createFromLiteral("abcdef"); 110 auto different = StringImpl::createFromLiteral("abcrefg"); 111 111 112 112 // Identity. 113 ASSERT_TRUE(equalIgnoringASCIICase(a. get(), a.get()));114 ASSERT_TRUE(equalIgnoringASCIICase(b. get(), b.get()));115 ASSERT_TRUE(equalIgnoringASCIICase(c. get(), c.get()));116 ASSERT_TRUE(equalIgnoringASCIICase(a. get(), d));117 ASSERT_TRUE(equalIgnoringASCIICase(b. get(), d));118 ASSERT_TRUE(equalIgnoringASCIICase(c. get(), d));113 ASSERT_TRUE(equalIgnoringASCIICase(a.ptr(), a.ptr())); 114 ASSERT_TRUE(equalIgnoringASCIICase(b.ptr(), b.ptr())); 115 ASSERT_TRUE(equalIgnoringASCIICase(c.ptr(), c.ptr())); 116 ASSERT_TRUE(equalIgnoringASCIICase(a.ptr(), d)); 117 ASSERT_TRUE(equalIgnoringASCIICase(b.ptr(), d)); 118 ASSERT_TRUE(equalIgnoringASCIICase(c.ptr(), d)); 119 119 120 120 // Transitivity. 121 ASSERT_TRUE(equalIgnoringASCIICase(a. get(), b.get()));122 ASSERT_TRUE(equalIgnoringASCIICase(b. get(), c.get()));123 ASSERT_TRUE(equalIgnoringASCIICase(a. get(), c.get()));121 ASSERT_TRUE(equalIgnoringASCIICase(a.ptr(), b.ptr())); 122 ASSERT_TRUE(equalIgnoringASCIICase(b.ptr(), c.ptr())); 123 ASSERT_TRUE(equalIgnoringASCIICase(a.ptr(), c.ptr())); 124 124 125 125 // Negative cases. 126 ASSERT_FALSE(equalIgnoringASCIICase(a. get(), empty.get()));127 ASSERT_FALSE(equalIgnoringASCIICase(b. get(), empty.get()));128 ASSERT_FALSE(equalIgnoringASCIICase(c. get(), empty.get()));129 ASSERT_FALSE(equalIgnoringASCIICase(a. get(), shorter.get()));130 ASSERT_FALSE(equalIgnoringASCIICase(b. get(), shorter.get()));131 ASSERT_FALSE(equalIgnoringASCIICase(c. get(), shorter.get()));132 ASSERT_FALSE(equalIgnoringASCIICase(a. get(), different.get()));133 ASSERT_FALSE(equalIgnoringASCIICase(b. get(), different.get()));134 ASSERT_FALSE(equalIgnoringASCIICase(c. get(), different.get()));135 ASSERT_FALSE(equalIgnoringASCIICase(empty. get(), d));136 ASSERT_FALSE(equalIgnoringASCIICase(shorter. get(), d));137 ASSERT_FALSE(equalIgnoringASCIICase(different. get(), d));126 ASSERT_FALSE(equalIgnoringASCIICase(a.ptr(), empty.ptr())); 127 ASSERT_FALSE(equalIgnoringASCIICase(b.ptr(), empty.ptr())); 128 ASSERT_FALSE(equalIgnoringASCIICase(c.ptr(), empty.ptr())); 129 ASSERT_FALSE(equalIgnoringASCIICase(a.ptr(), shorter.ptr())); 130 ASSERT_FALSE(equalIgnoringASCIICase(b.ptr(), shorter.ptr())); 131 ASSERT_FALSE(equalIgnoringASCIICase(c.ptr(), shorter.ptr())); 132 ASSERT_FALSE(equalIgnoringASCIICase(a.ptr(), different.ptr())); 133 ASSERT_FALSE(equalIgnoringASCIICase(b.ptr(), different.ptr())); 134 ASSERT_FALSE(equalIgnoringASCIICase(c.ptr(), different.ptr())); 135 ASSERT_FALSE(equalIgnoringASCIICase(empty.ptr(), d)); 136 ASSERT_FALSE(equalIgnoringASCIICase(shorter.ptr(), d)); 137 ASSERT_FALSE(equalIgnoringASCIICase(different.ptr(), d)); 138 138 } 139 139 140 140 TEST(WTF, StringImplEqualIgnoringASCIICaseWithNull) 141 141 { 142 RefPtr<StringImpl>reference = StringImpl::createFromLiteral("aBcDeFG");142 auto reference = StringImpl::createFromLiteral("aBcDeFG"); 143 143 StringImpl* nullStringImpl = nullptr; 144 ASSERT_FALSE(equalIgnoringASCIICase(nullStringImpl, reference. get()));145 ASSERT_FALSE(equalIgnoringASCIICase(reference. get(), nullStringImpl));144 ASSERT_FALSE(equalIgnoringASCIICase(nullStringImpl, reference.ptr())); 145 ASSERT_FALSE(equalIgnoringASCIICase(reference.ptr(), nullStringImpl)); 146 146 ASSERT_TRUE(equalIgnoringASCIICase(nullStringImpl, nullStringImpl)); 147 147 } … … 149 149 TEST(WTF, StringImplEqualIgnoringASCIICaseWithEmpty) 150 150 { 151 RefPtr<StringImpl>a = StringImpl::create(reinterpret_cast<const LChar*>(""));152 RefPtr<StringImpl>b = StringImpl::create(reinterpret_cast<const LChar*>(""));153 ASSERT_TRUE(equalIgnoringASCIICase(a. get(), b.get()));154 ASSERT_TRUE(equalIgnoringASCIICase(b. get(), a.get()));155 } 156 157 static Ref Ptr<StringImpl> stringFromUTF8(const char* characters)158 { 159 return String::fromUTF8(characters). impl();151 auto a = StringImpl::create(reinterpret_cast<const LChar*>("")); 152 auto b = StringImpl::create(reinterpret_cast<const LChar*>("")); 153 ASSERT_TRUE(equalIgnoringASCIICase(a.ptr(), b.ptr())); 154 ASSERT_TRUE(equalIgnoringASCIICase(b.ptr(), a.ptr())); 155 } 156 157 static Ref<StringImpl> stringFromUTF8(const char* characters) 158 { 159 return String::fromUTF8(characters).releaseImpl().releaseNonNull(); 160 160 } 161 161 162 162 TEST(WTF, StringImplEqualIgnoringASCIICaseWithLatin1Characters) 163 163 { 164 RefPtr<StringImpl>a = stringFromUTF8("aBcéeFG");165 RefPtr<StringImpl>b = stringFromUTF8("ABCÉEFG");166 RefPtr<StringImpl>c = stringFromUTF8("ABCéEFG");167 RefPtr<StringImpl>d = stringFromUTF8("abcéefg");164 auto a = stringFromUTF8("aBcéeFG"); 165 auto b = stringFromUTF8("ABCÉEFG"); 166 auto c = stringFromUTF8("ABCéEFG"); 167 auto d = stringFromUTF8("abcéefg"); 168 168 const char e[] = "aBcéeFG"; 169 169 170 170 // Identity. 171 ASSERT_TRUE(equalIgnoringASCIICase(a. get(), a.get()));172 ASSERT_TRUE(equalIgnoringASCIICase(b. get(), b.get()));173 ASSERT_TRUE(equalIgnoringASCIICase(c. get(), c.get()));174 ASSERT_TRUE(equalIgnoringASCIICase(d. get(), d.get()));171 ASSERT_TRUE(equalIgnoringASCIICase(a.ptr(), a.ptr())); 172 ASSERT_TRUE(equalIgnoringASCIICase(b.ptr(), b.ptr())); 173 ASSERT_TRUE(equalIgnoringASCIICase(c.ptr(), c.ptr())); 174 ASSERT_TRUE(equalIgnoringASCIICase(d.ptr(), d.ptr())); 175 175 176 176 // All combination. 177 ASSERT_FALSE(equalIgnoringASCIICase(a. get(), b.get()));178 ASSERT_TRUE(equalIgnoringASCIICase(a. get(), c.get()));179 ASSERT_TRUE(equalIgnoringASCIICase(a. get(), d.get()));180 ASSERT_FALSE(equalIgnoringASCIICase(b. get(), c.get()));181 ASSERT_FALSE(equalIgnoringASCIICase(b. get(), d.get()));182 ASSERT_TRUE(equalIgnoringASCIICase(c. get(), d.get()));183 ASSERT_FALSE(equalIgnoringASCIICase(a. get(), e));184 ASSERT_FALSE(equalIgnoringASCIICase(b. get(), e));185 ASSERT_FALSE(equalIgnoringASCIICase(c. get(), e));186 ASSERT_FALSE(equalIgnoringASCIICase(d. get(), e));177 ASSERT_FALSE(equalIgnoringASCIICase(a.ptr(), b.ptr())); 178 ASSERT_TRUE(equalIgnoringASCIICase(a.ptr(), c.ptr())); 179 ASSERT_TRUE(equalIgnoringASCIICase(a.ptr(), d.ptr())); 180 ASSERT_FALSE(equalIgnoringASCIICase(b.ptr(), c.ptr())); 181 ASSERT_FALSE(equalIgnoringASCIICase(b.ptr(), d.ptr())); 182 ASSERT_TRUE(equalIgnoringASCIICase(c.ptr(), d.ptr())); 183 ASSERT_FALSE(equalIgnoringASCIICase(a.ptr(), e)); 184 ASSERT_FALSE(equalIgnoringASCIICase(b.ptr(), e)); 185 ASSERT_FALSE(equalIgnoringASCIICase(c.ptr(), e)); 186 ASSERT_FALSE(equalIgnoringASCIICase(d.ptr(), e)); 187 187 } 188 188 189 189 TEST(WTF, StringImplFindIgnoringASCIICaseBasic) 190 190 { 191 RefPtr<StringImpl>referenceA = stringFromUTF8("aBcéeFG");192 RefPtr<StringImpl>referenceB = stringFromUTF8("ABCÉEFG");191 auto referenceA = stringFromUTF8("aBcéeFG"); 192 auto referenceB = stringFromUTF8("ABCÉEFG"); 193 193 194 194 // Search the exact string. 195 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(referenceA. get()));196 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(referenceB. get()));195 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(referenceA.ptr())); 196 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(referenceB.ptr())); 197 197 198 198 // A and B are distinct by the non-ascii character é/É. 199 EXPECT_EQ(static_cast<size_t>(notFound), referenceA->findIgnoringASCIICase(referenceB. get()));200 EXPECT_EQ(static_cast<size_t>(notFound), referenceB->findIgnoringASCIICase(referenceA. get()));199 EXPECT_EQ(static_cast<size_t>(notFound), referenceA->findIgnoringASCIICase(referenceB.ptr())); 200 EXPECT_EQ(static_cast<size_t>(notFound), referenceB->findIgnoringASCIICase(referenceA.ptr())); 201 201 202 202 // Find the prefix. 203 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("a"). get()));204 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(stringFromUTF8("abcé"). get()));205 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("A"). get()));206 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(stringFromUTF8("ABCé"). get()));207 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("a"). get()));208 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(stringFromUTF8("abcÉ"). get()));209 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("A"). get()));210 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(stringFromUTF8("ABCÉ"). get()));203 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("a").ptr())); 204 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(stringFromUTF8("abcé").ptr())); 205 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("A").ptr())); 206 EXPECT_EQ(static_cast<size_t>(0), referenceA->findIgnoringASCIICase(stringFromUTF8("ABCé").ptr())); 207 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("a").ptr())); 208 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(stringFromUTF8("abcÉ").ptr())); 209 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("A").ptr())); 210 EXPECT_EQ(static_cast<size_t>(0), referenceB->findIgnoringASCIICase(stringFromUTF8("ABCÉ").ptr())); 211 211 212 212 // Not a prefix. 213 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("x"). get()));214 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("accé"). get()));215 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("abcÉ"). get()));216 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("X"). get()));217 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("ABDé"). get()));218 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("ABCÉ"). get()));219 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("y"). get()));220 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("accÉ"). get()));221 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("abcé"). get()));222 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("Y"). get()));223 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("ABdÉ"). get()));224 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("ABCé"). get()));213 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("x").ptr())); 214 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("accé").ptr())); 215 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("abcÉ").ptr())); 216 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("X").ptr())); 217 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("ABDé").ptr())); 218 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("ABCÉ").ptr())); 219 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("y").ptr())); 220 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("accÉ").ptr())); 221 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("abcé").ptr())); 222 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("Y").ptr())); 223 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("ABdÉ").ptr())); 224 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("ABCé").ptr())); 225 225 226 226 // Find the infix. 227 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("cée"). get()));228 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("ée"). get()));229 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("cé"). get()));230 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("c"). get()));231 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("é"). get()));232 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("Cée"). get()));233 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("éE"). get()));234 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("Cé"). get()));235 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("C"). get()));236 237 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("cÉe"). get()));238 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("Ée"). get()));239 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("cÉ"). get()));240 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("c"). get()));241 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("É"). get()));242 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("CÉe"). get()));243 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("ÉE"). get()));244 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("CÉ"). get()));245 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("C"). get()));227 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("cée").ptr())); 228 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("ée").ptr())); 229 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("cé").ptr())); 230 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("c").ptr())); 231 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("é").ptr())); 232 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("Cée").ptr())); 233 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("éE").ptr())); 234 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("Cé").ptr())); 235 EXPECT_EQ(static_cast<size_t>(2), referenceA->findIgnoringASCIICase(stringFromUTF8("C").ptr())); 236 237 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("cÉe").ptr())); 238 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("Ée").ptr())); 239 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("cÉ").ptr())); 240 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("c").ptr())); 241 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("É").ptr())); 242 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("CÉe").ptr())); 243 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("ÉE").ptr())); 244 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("CÉ").ptr())); 245 EXPECT_EQ(static_cast<size_t>(2), referenceB->findIgnoringASCIICase(stringFromUTF8("C").ptr())); 246 246 247 247 // Not an infix. 248 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("céd"). get()));249 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("Ée"). get()));250 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("bé"). get()));251 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("x"). get()));252 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("É"). get()));253 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("CÉe"). get()));254 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("éd"). get()));255 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("CÉ"). get()));256 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("Y"). get()));257 258 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("cée"). get()));259 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("Éc"). get()));260 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("cé"). get()));261 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("W"). get()));262 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("é"). get()));263 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("bÉe"). get()));264 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("éE"). get()));265 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("BÉ"). get()));266 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("z"). get()));248 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("céd").ptr())); 249 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("Ée").ptr())); 250 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("bé").ptr())); 251 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("x").ptr())); 252 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("É").ptr())); 253 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("CÉe").ptr())); 254 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("éd").ptr())); 255 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("CÉ").ptr())); 256 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("Y").ptr())); 257 258 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("cée").ptr())); 259 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("Éc").ptr())); 260 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("cé").ptr())); 261 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("W").ptr())); 262 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("é").ptr())); 263 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("bÉe").ptr())); 264 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("éE").ptr())); 265 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("BÉ").ptr())); 266 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("z").ptr())); 267 267 268 268 // Find the suffix. 269 EXPECT_EQ(static_cast<size_t>(6), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("g"). get()));270 EXPECT_EQ(static_cast<size_t>(4), referenceA->findIgnoringASCIICase(stringFromUTF8("efg"). get()));271 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("éefg"). get()));272 EXPECT_EQ(static_cast<size_t>(6), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("G"). get()));273 EXPECT_EQ(static_cast<size_t>(4), referenceA->findIgnoringASCIICase(stringFromUTF8("EFG"). get()));274 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("éEFG"). get()));275 276 EXPECT_EQ(static_cast<size_t>(6), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("g"). get()));277 EXPECT_EQ(static_cast<size_t>(4), referenceB->findIgnoringASCIICase(stringFromUTF8("efg"). get()));278 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("Éefg"). get()));279 EXPECT_EQ(static_cast<size_t>(6), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("G"). get()));280 EXPECT_EQ(static_cast<size_t>(4), referenceB->findIgnoringASCIICase(stringFromUTF8("EFG"). get()));281 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("ÉEFG"). get()));269 EXPECT_EQ(static_cast<size_t>(6), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("g").ptr())); 270 EXPECT_EQ(static_cast<size_t>(4), referenceA->findIgnoringASCIICase(stringFromUTF8("efg").ptr())); 271 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("éefg").ptr())); 272 EXPECT_EQ(static_cast<size_t>(6), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("G").ptr())); 273 EXPECT_EQ(static_cast<size_t>(4), referenceA->findIgnoringASCIICase(stringFromUTF8("EFG").ptr())); 274 EXPECT_EQ(static_cast<size_t>(3), referenceA->findIgnoringASCIICase(stringFromUTF8("éEFG").ptr())); 275 276 EXPECT_EQ(static_cast<size_t>(6), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("g").ptr())); 277 EXPECT_EQ(static_cast<size_t>(4), referenceB->findIgnoringASCIICase(stringFromUTF8("efg").ptr())); 278 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("Éefg").ptr())); 279 EXPECT_EQ(static_cast<size_t>(6), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("G").ptr())); 280 EXPECT_EQ(static_cast<size_t>(4), referenceB->findIgnoringASCIICase(stringFromUTF8("EFG").ptr())); 281 EXPECT_EQ(static_cast<size_t>(3), referenceB->findIgnoringASCIICase(stringFromUTF8("ÉEFG").ptr())); 282 282 283 283 // Not a suffix. 284 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("X"). get()));285 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("edg"). get()));286 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("Éefg"). get()));287 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("w"). get()));288 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("dFG"). get()));289 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("ÉEFG"). get()));290 291 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("Z"). get()));292 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("ffg"). get()));293 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("éefg"). get()));294 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("r"). get()));295 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("EgG"). get()));296 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("éEFG"). get()));284 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("X").ptr())); 285 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("edg").ptr())); 286 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("Éefg").ptr())); 287 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(StringImpl::createFromLiteral("w").ptr())); 288 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("dFG").ptr())); 289 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceA->findIgnoringASCIICase(stringFromUTF8("ÉEFG").ptr())); 290 291 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("Z").ptr())); 292 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("ffg").ptr())); 293 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("éefg").ptr())); 294 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(StringImpl::createFromLiteral("r").ptr())); 295 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("EgG").ptr())); 296 EXPECT_EQ(static_cast<size_t>(WTF::notFound), referenceB->findIgnoringASCIICase(stringFromUTF8("éEFG").ptr())); 297 297 } 298 298 299 299 TEST(WTF, StringImplFindIgnoringASCIICaseWithValidOffset) 300 300 { 301 RefPtr<StringImpl>reference = stringFromUTF8("ABCÉEFGaBcéeFG");302 EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(stringFromUTF8("ABC"). get(), 0));303 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(stringFromUTF8("ABC"). get(), 1));304 EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ"). get(), 0));305 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ"). get(), 1));306 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(stringFromUTF8("ABCé"). get(), 0));307 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(stringFromUTF8("ABCé"). get(), 1));301 auto reference = stringFromUTF8("ABCÉEFGaBcéeFG"); 302 EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(stringFromUTF8("ABC").ptr(), 0)); 303 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(stringFromUTF8("ABC").ptr(), 1)); 304 EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").ptr(), 0)); 305 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").ptr(), 1)); 306 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(stringFromUTF8("ABCé").ptr(), 0)); 307 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(stringFromUTF8("ABCé").ptr(), 1)); 308 308 } 309 309 310 310 TEST(WTF, StringImplFindIgnoringASCIICaseWithInvalidOffset) 311 311 { 312 RefPtr<StringImpl>reference = stringFromUTF8("ABCÉEFGaBcéeFG");313 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABC"). get(), 15));314 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABC"). get(), 16));315 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ"). get(), 17));316 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ"). get(), 42));317 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ"). get(), std::numeric_limits<unsigned>::max()));312 auto reference = stringFromUTF8("ABCÉEFGaBcéeFG"); 313 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABC").ptr(), 15)); 314 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABC").ptr(), 16)); 315 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").ptr(), 17)); 316 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").ptr(), 42)); 317 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(stringFromUTF8("ABCÉ").ptr(), std::numeric_limits<unsigned>::max())); 318 318 } 319 319 320 320 TEST(WTF, StringImplFindIgnoringASCIICaseOnNull) 321 321 { 322 RefPtr<StringImpl>reference = stringFromUTF8("ABCÉEFG");322 auto reference = stringFromUTF8("ABCÉEFG"); 323 323 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(nullptr)); 324 324 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(nullptr, 0)); … … 332 332 TEST(WTF, StringImplFindIgnoringASCIICaseOnEmpty) 333 333 { 334 RefPtr<StringImpl>reference = stringFromUTF8("ABCÉEFG");335 RefPtr<StringImpl>empty = StringImpl::create(reinterpret_cast<const LChar*>(""));336 EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(empty. get()));337 EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(empty. get(), 0));338 EXPECT_EQ(static_cast<size_t>(3), reference->findIgnoringASCIICase(empty. get(), 3));339 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty. get(), 7));340 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty. get(), 8));341 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty. get(), 42));342 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty. get(), std::numeric_limits<unsigned>::max()));334 auto reference = stringFromUTF8("ABCÉEFG"); 335 auto empty = StringImpl::create(reinterpret_cast<const LChar*>("")); 336 EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(empty.ptr())); 337 EXPECT_EQ(static_cast<size_t>(0), reference->findIgnoringASCIICase(empty.ptr(), 0)); 338 EXPECT_EQ(static_cast<size_t>(3), reference->findIgnoringASCIICase(empty.ptr(), 3)); 339 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty.ptr(), 7)); 340 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty.ptr(), 8)); 341 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty.ptr(), 42)); 342 EXPECT_EQ(static_cast<size_t>(7), reference->findIgnoringASCIICase(empty.ptr(), std::numeric_limits<unsigned>::max())); 343 343 } 344 344 345 345 TEST(WTF, StringImplFindIgnoringASCIICaseWithPatternLongerThanReference) 346 346 { 347 RefPtr<StringImpl>reference = stringFromUTF8("ABCÉEFG");348 RefPtr<StringImpl>pattern = stringFromUTF8("XABCÉEFG");349 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(pattern. get()));350 EXPECT_EQ(static_cast<size_t>(1), pattern->findIgnoringASCIICase(reference. get()));347 auto reference = stringFromUTF8("ABCÉEFG"); 348 auto pattern = stringFromUTF8("XABCÉEFG"); 349 EXPECT_EQ(static_cast<size_t>(WTF::notFound), reference->findIgnoringASCIICase(pattern.ptr())); 350 EXPECT_EQ(static_cast<size_t>(1), pattern->findIgnoringASCIICase(reference.ptr())); 351 351 } 352 352 353 353 TEST(WTF, StringImplStartsWithIgnoringASCIICaseBasic) 354 354 { 355 RefPtr<StringImpl>reference = stringFromUTF8("aBcéX");356 RefPtr<StringImpl>referenceEquivalent = stringFromUTF8("AbCéx");355 auto reference = stringFromUTF8("aBcéX"); 356 auto referenceEquivalent = stringFromUTF8("AbCéx"); 357 357 358 358 // Identity. 359 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(reference. get()));360 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*reference. get()));361 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(referenceEquivalent. get()));362 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*referenceEquivalent. get()));363 ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(reference. get()));364 ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(*reference. get()));365 ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(referenceEquivalent. get()));366 ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(*referenceEquivalent. get()));359 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(reference.ptr())); 360 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*reference.ptr())); 361 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(referenceEquivalent.ptr())); 362 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*referenceEquivalent.ptr())); 363 ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(reference.ptr())); 364 ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(*reference.ptr())); 365 ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(referenceEquivalent.ptr())); 366 ASSERT_TRUE(referenceEquivalent->startsWithIgnoringASCIICase(*referenceEquivalent.ptr())); 367 367 368 368 // Proper prefixes. 369 RefPtr<StringImpl>aLower = StringImpl::createFromLiteral("a");370 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(aLower. get()));371 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*aLower. get()));372 RefPtr<StringImpl>aUpper = StringImpl::createFromLiteral("A");373 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(aUpper. get()));374 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*aUpper. get()));375 376 RefPtr<StringImpl>abcLower = StringImpl::createFromLiteral("abc");377 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcLower. get()));378 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcLower. get()));379 RefPtr<StringImpl>abcUpper = StringImpl::createFromLiteral("ABC");380 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcUpper. get()));381 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcUpper. get()));382 383 RefPtr<StringImpl>abcAccentLower = stringFromUTF8("abcé");384 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcAccentLower. get()));385 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcAccentLower. get()));386 RefPtr<StringImpl>abcAccentUpper = stringFromUTF8("ABCé");387 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcAccentUpper. get()));388 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcAccentUpper. get()));369 auto aLower = StringImpl::createFromLiteral("a"); 370 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(aLower.ptr())); 371 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*aLower.ptr())); 372 auto aUpper = StringImpl::createFromLiteral("A"); 373 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(aUpper.ptr())); 374 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*aUpper.ptr())); 375 376 auto abcLower = StringImpl::createFromLiteral("abc"); 377 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcLower.ptr())); 378 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcLower.ptr())); 379 auto abcUpper = StringImpl::createFromLiteral("ABC"); 380 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcUpper.ptr())); 381 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcUpper.ptr())); 382 383 auto abcAccentLower = stringFromUTF8("abcé"); 384 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcAccentLower.ptr())); 385 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcAccentLower.ptr())); 386 auto abcAccentUpper = stringFromUTF8("ABCé"); 387 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(abcAccentUpper.ptr())); 388 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*abcAccentUpper.ptr())); 389 389 390 390 // Negative cases. 391 RefPtr<StringImpl>differentFirstChar = stringFromUTF8("bBcéX");392 RefPtr<StringImpl>differentFirstCharProperPrefix = stringFromUTF8("CBcé");393 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(differentFirstChar. get()));394 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*differentFirstChar. get()));395 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(differentFirstCharProperPrefix. get()));396 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*differentFirstCharProperPrefix. get()));397 398 RefPtr<StringImpl>uppercaseAccent = stringFromUTF8("aBcÉX");399 RefPtr<StringImpl>uppercaseAccentProperPrefix = stringFromUTF8("aBcÉX");400 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(uppercaseAccent. get()));401 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*uppercaseAccent. get()));402 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(uppercaseAccentProperPrefix. get()));403 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*uppercaseAccentProperPrefix. get()));391 auto differentFirstChar = stringFromUTF8("bBcéX"); 392 auto differentFirstCharProperPrefix = stringFromUTF8("CBcé"); 393 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(differentFirstChar.ptr())); 394 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*differentFirstChar.ptr())); 395 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(differentFirstCharProperPrefix.ptr())); 396 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*differentFirstCharProperPrefix.ptr())); 397 398 auto uppercaseAccent = stringFromUTF8("aBcÉX"); 399 auto uppercaseAccentProperPrefix = stringFromUTF8("aBcÉX"); 400 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(uppercaseAccent.ptr())); 401 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*uppercaseAccent.ptr())); 402 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(uppercaseAccentProperPrefix.ptr())); 403 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(*uppercaseAccentProperPrefix.ptr())); 404 404 } 405 405 406 406 TEST(WTF, StringImplStartsWithIgnoringASCIICaseWithNull) 407 407 { 408 RefPtr<StringImpl>reference = StringImpl::createFromLiteral("aBcDeFG");408 auto reference = StringImpl::createFromLiteral("aBcDeFG"); 409 409 ASSERT_FALSE(reference->startsWithIgnoringASCIICase(nullptr)); 410 410 411 RefPtr<StringImpl>empty = StringImpl::create(reinterpret_cast<const LChar*>(""));411 auto empty = StringImpl::create(reinterpret_cast<const LChar*>("")); 412 412 ASSERT_FALSE(empty->startsWithIgnoringASCIICase(nullptr)); 413 413 } … … 415 415 TEST(WTF, StringImplStartsWithIgnoringASCIICaseWithEmpty) 416 416 { 417 RefPtr<StringImpl>reference = StringImpl::createFromLiteral("aBcDeFG");418 RefPtr<StringImpl>empty = StringImpl::create(reinterpret_cast<const LChar*>(""));419 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(empty. get()));420 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*empty. get()));421 ASSERT_TRUE(empty->startsWithIgnoringASCIICase(empty. get()));422 ASSERT_TRUE(empty->startsWithIgnoringASCIICase(*empty. get()));423 ASSERT_FALSE(empty->startsWithIgnoringASCIICase(reference. get()));424 ASSERT_FALSE(empty->startsWithIgnoringASCIICase(*reference. get()));417 auto reference = StringImpl::createFromLiteral("aBcDeFG"); 418 auto empty = StringImpl::create(reinterpret_cast<const LChar*>("")); 419 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(empty.ptr())); 420 ASSERT_TRUE(reference->startsWithIgnoringASCIICase(*empty.ptr())); 421 ASSERT_TRUE(empty->startsWithIgnoringASCIICase(empty.ptr())); 422 ASSERT_TRUE(empty->startsWithIgnoringASCIICase(*empty.ptr())); 423 ASSERT_FALSE(empty->startsWithIgnoringASCIICase(reference.ptr())); 424 ASSERT_FALSE(empty->startsWithIgnoringASCIICase(*reference.ptr())); 425 425 } 426 426 … … 442 442 TEST(WTF, StringImplEndsWithIgnoringASCIICaseBasic) 443 443 { 444 RefPtr<StringImpl>reference = stringFromUTF8("XÉCbA");445 RefPtr<StringImpl>referenceEquivalent = stringFromUTF8("xÉcBa");444 auto reference = stringFromUTF8("XÉCbA"); 445 auto referenceEquivalent = stringFromUTF8("xÉcBa"); 446 446 447 447 // Identity. 448 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(reference. get()));449 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*reference. get()));450 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(referenceEquivalent. get()));451 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*referenceEquivalent. get()));452 ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(reference. get()));453 ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(*reference. get()));454 ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(referenceEquivalent. get()));455 ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(*referenceEquivalent. get()));448 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(reference.ptr())); 449 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*reference.ptr())); 450 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(referenceEquivalent.ptr())); 451 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*referenceEquivalent.ptr())); 452 ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(reference.ptr())); 453 ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(*reference.ptr())); 454 ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(referenceEquivalent.ptr())); 455 ASSERT_TRUE(referenceEquivalent->endsWithIgnoringASCIICase(*referenceEquivalent.ptr())); 456 456 457 457 // Proper suffixes. 458 RefPtr<StringImpl>aLower = StringImpl::createFromLiteral("a");459 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(aLower. get()));460 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*aLower. get()));461 RefPtr<StringImpl>aUpper = StringImpl::createFromLiteral("a");462 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(aUpper. get()));463 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*aUpper. get()));464 465 RefPtr<StringImpl>abcLower = StringImpl::createFromLiteral("cba");466 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcLower. get()));467 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcLower. get()));468 RefPtr<StringImpl>abcUpper = StringImpl::createFromLiteral("CBA");469 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcUpper. get()));470 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcUpper. get()));471 472 RefPtr<StringImpl>abcAccentLower = stringFromUTF8("Écba");473 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcAccentLower. get()));474 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcAccentLower. get()));475 RefPtr<StringImpl>abcAccentUpper = stringFromUTF8("ÉCBA");476 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcAccentUpper. get()));477 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcAccentUpper. get()));458 auto aLower = StringImpl::createFromLiteral("a"); 459 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(aLower.ptr())); 460 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*aLower.ptr())); 461 auto aUpper = StringImpl::createFromLiteral("a"); 462 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(aUpper.ptr())); 463 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*aUpper.ptr())); 464 465 auto abcLower = StringImpl::createFromLiteral("cba"); 466 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcLower.ptr())); 467 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcLower.ptr())); 468 auto abcUpper = StringImpl::createFromLiteral("CBA"); 469 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcUpper.ptr())); 470 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcUpper.ptr())); 471 472 auto abcAccentLower = stringFromUTF8("Écba"); 473 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcAccentLower.ptr())); 474 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcAccentLower.ptr())); 475 auto abcAccentUpper = stringFromUTF8("ÉCBA"); 476 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(abcAccentUpper.ptr())); 477 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*abcAccentUpper.ptr())); 478 478 479 479 // Negative cases. 480 RefPtr<StringImpl>differentLastChar = stringFromUTF8("XÉCbB");481 RefPtr<StringImpl>differentLastCharProperSuffix = stringFromUTF8("ÉCbb");482 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(differentLastChar. get()));483 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*differentLastChar. get()));484 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(differentLastCharProperSuffix. get()));485 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*differentLastCharProperSuffix. get()));486 487 RefPtr<StringImpl>lowercaseAccent = stringFromUTF8("aBcéX");488 RefPtr<StringImpl>loweraseAccentProperSuffix = stringFromUTF8("aBcéX");489 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(lowercaseAccent. get()));490 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*lowercaseAccent. get()));491 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(loweraseAccentProperSuffix. get()));492 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*loweraseAccentProperSuffix. get()));480 auto differentLastChar = stringFromUTF8("XÉCbB"); 481 auto differentLastCharProperSuffix = stringFromUTF8("ÉCbb"); 482 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(differentLastChar.ptr())); 483 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*differentLastChar.ptr())); 484 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(differentLastCharProperSuffix.ptr())); 485 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*differentLastCharProperSuffix.ptr())); 486 487 auto lowercaseAccent = stringFromUTF8("aBcéX"); 488 auto loweraseAccentProperSuffix = stringFromUTF8("aBcéX"); 489 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(lowercaseAccent.ptr())); 490 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*lowercaseAccent.ptr())); 491 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(loweraseAccentProperSuffix.ptr())); 492 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(*loweraseAccentProperSuffix.ptr())); 493 493 } 494 494 495 495 TEST(WTF, StringImplEndsWithIgnoringASCIICaseWithNull) 496 496 { 497 RefPtr<StringImpl>reference = StringImpl::createFromLiteral("aBcDeFG");497 auto reference = StringImpl::createFromLiteral("aBcDeFG"); 498 498 ASSERT_FALSE(reference->endsWithIgnoringASCIICase(nullptr)); 499 499 500 RefPtr<StringImpl>empty = StringImpl::create(reinterpret_cast<const LChar*>(""));500 auto empty = StringImpl::create(reinterpret_cast<const LChar*>("")); 501 501 ASSERT_FALSE(empty->endsWithIgnoringASCIICase(nullptr)); 502 502 } … … 504 504 TEST(WTF, StringImplEndsWithIgnoringASCIICaseWithEmpty) 505 505 { 506 RefPtr<StringImpl>reference = StringImpl::createFromLiteral("aBcDeFG");507 RefPtr<StringImpl>empty = StringImpl::create(reinterpret_cast<const LChar*>(""));508 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(empty. get()));509 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*empty. get()));510 ASSERT_TRUE(empty->endsWithIgnoringASCIICase(empty. get()));511 ASSERT_TRUE(empty->endsWithIgnoringASCIICase(*empty. get()));512 ASSERT_FALSE(empty->endsWithIgnoringASCIICase(reference. get()));513 ASSERT_FALSE(empty->endsWithIgnoringASCIICase(*reference. get()));506 auto reference = StringImpl::createFromLiteral("aBcDeFG"); 507 auto empty = StringImpl::create(reinterpret_cast<const LChar*>("")); 508 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(empty.ptr())); 509 ASSERT_TRUE(reference->endsWithIgnoringASCIICase(*empty.ptr())); 510 ASSERT_TRUE(empty->endsWithIgnoringASCIICase(empty.ptr())); 511 ASSERT_TRUE(empty->endsWithIgnoringASCIICase(*empty.ptr())); 512 ASSERT_FALSE(empty->endsWithIgnoringASCIICase(reference.ptr())); 513 ASSERT_FALSE(empty->endsWithIgnoringASCIICase(*reference.ptr())); 514 514 } 515 515 516 516 TEST(WTF, StringImplCreateNullSymbol) 517 517 { 518 RefPtr<StringImpl>reference = StringImpl::createNullSymbol();518 auto reference = StringImpl::createNullSymbol(); 519 519 ASSERT_TRUE(reference->isSymbol()); 520 520 ASSERT_TRUE(reference->isNullSymbol()); 521 521 ASSERT_FALSE(reference->isAtomic()); 522 522 ASSERT_EQ(0u, reference->length()); 523 ASSERT_TRUE(equal(reference. get(), ""));523 ASSERT_TRUE(equal(reference.ptr(), "")); 524 524 } 525 525 526 526 TEST(WTF, StringImplCreateSymbol) 527 527 { 528 RefPtr<StringImpl>original = stringFromUTF8("original");529 RefPtr<StringImpl>reference = StringImpl::createSymbol(original);528 auto original = stringFromUTF8("original"); 529 auto reference = StringImpl::createSymbol(original); 530 530 ASSERT_TRUE(reference->isSymbol()); 531 531 ASSERT_FALSE(reference->isNullSymbol()); … … 534 534 ASSERT_FALSE(original->isAtomic()); 535 535 ASSERT_EQ(original->length(), reference->length()); 536 ASSERT_TRUE(equal(reference. get(), "original"));537 538 RefPtr<StringImpl>empty = stringFromUTF8("");539 RefPtr<StringImpl>emptyReference = StringImpl::createSymbol(empty);536 ASSERT_TRUE(equal(reference.ptr(), "original")); 537 538 auto empty = stringFromUTF8(""); 539 auto emptyReference = StringImpl::createSymbol(empty); 540 540 ASSERT_TRUE(emptyReference->isSymbol()); 541 541 ASSERT_FALSE(emptyReference->isNullSymbol()); … … 545 545 ASSERT_TRUE(empty->isAtomic()); 546 546 ASSERT_EQ(empty->length(), emptyReference->length()); 547 ASSERT_TRUE(equal(emptyReference. get(), ""));547 ASSERT_TRUE(equal(emptyReference.ptr(), "")); 548 548 } 549 549 550 550 TEST(WTF, StringImplSymbolToAtomicString) 551 551 { 552 RefPtr<StringImpl>original = stringFromUTF8("original");553 RefPtr<StringImpl>reference = StringImpl::createSymbol(original);552 auto original = stringFromUTF8("original"); 553 auto reference = StringImpl::createSymbol(original); 554 554 ASSERT_TRUE(reference->isSymbol()); 555 555 ASSERT_FALSE(reference->isAtomic()); 556 556 557 RefPtr<StringImpl> atomic = AtomicStringImpl::add(reference.get());557 auto atomic = AtomicStringImpl::add(reference.ptr()); 558 558 ASSERT_TRUE(atomic->isAtomic()); 559 559 ASSERT_FALSE(atomic->isSymbol()); … … 564 564 TEST(WTF, StringImplNullSymbolToAtomicString) 565 565 { 566 RefPtr<StringImpl>reference = StringImpl::createNullSymbol();566 auto reference = StringImpl::createNullSymbol(); 567 567 ASSERT_TRUE(reference->isSymbol()); 568 568 ASSERT_FALSE(reference->isAtomic()); 569 569 570 RefPtr<StringImpl> atomic = AtomicStringImpl::add(reference.get());570 auto atomic = AtomicStringImpl::add(reference.ptr()); 571 571 ASSERT_TRUE(atomic->isAtomic()); 572 572 ASSERT_FALSE(atomic->isSymbol());
Note: See TracChangeset
for help on using the changeset viewer.