18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 20bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch * Copyright (C) 2008, 2009 Apple Inc. All Rights Reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "WebTextIterator.h" 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "DOMNodeInternal.h" 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "DOMRangeInternal.h" 30635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#import "WebTypesInternal.h" 31635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#import <JavaScriptCore/Vector.h> 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import <WebCore/TextIterator.h> 33635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#import <WebCore/WebCoreObjCExtras.h> 3421939df44de1705786c545cd1bf519d47250322dBen Murdoch#import <runtime/InitializeThreading.h> 3521939df44de1705786c545cd1bf519d47250322dBen Murdoch#import <wtf/Threading.h> 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 37635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Projectusing namespace JSC; 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectusing namespace WebCore; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 40635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project@interface WebTextIteratorPrivate : NSObject { 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@public 42635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project OwnPtr<TextIterator> _textIterator; 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@end 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@implementation WebTextIteratorPrivate 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 48635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project+ (void)initialize 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 5021939df44de1705786c545cd1bf519d47250322dBen Murdoch JSC::initializeThreading(); 5121939df44de1705786c545cd1bf519d47250322dBen Murdoch WTF::initializeMainThreadToProcessMainThread(); 52635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#ifndef BUILDING_ON_TIGER 53635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project WebCoreObjCFinalizeOnMainThread(self); 54635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project#endif 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@end 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@implementation WebTextIterator 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)dealloc 628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project [_private release]; 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project [super dealloc]; 658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (id)initWithRange:(DOMRange *)range 688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project self = [super init]; 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if (!self) 718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return self; 728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project _private = [[WebTextIteratorPrivate alloc] init]; 740bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch _private->_textIterator.set(new TextIterator(core(range))); 758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return self; 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project- (void)advance 798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 80635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project _private->_textIterator->advance(); 818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 83635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (BOOL)atEnd 848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 85635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return _private->_textIterator->atEnd(); 868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 88635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (DOMRange *)currentRange 898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 900bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return kit(_private->_textIterator->range().get()); 918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 93635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (const unichar *)currentTextPointer 948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 95635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return _private->_textIterator->characters(); 96635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 97635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 98635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (NSUInteger)currentTextLength 99635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 100635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return _private->_textIterator->length(); 101635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 102635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 103635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project@end 104635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 105635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project@implementation WebTextIterator (WebTextIteratorDeprecated) 106635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 107635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (DOMNode *)currentNode 108635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 1090bf48ef3be53ddaa52bbead65dfd75bf90e7a2b5Ben Murdoch return kit(_private->_textIterator->node()); 110635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project} 111635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 112635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project- (NSString *)currentText 113635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project{ 114635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project return [NSString stringWithCharacters:_private->_textIterator->characters() length:_private->_textIterator->length()]; 1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@end 118