18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* 25f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved. 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 James G. Speth (speth@end.com) 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006 Samuel Weinig (sam.weinig@gmail.com) 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met: 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer. 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * notice, this list of conditions and the following disclaimer in the 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * documentation and/or other materials provided with the distribution. 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 285f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian// This is lets our internals access DOMObject's _internal field while having 295f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian// it be private for clients outside WebKit. 305f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#define private public 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "DOMObject.h" 325f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#undef private 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 345f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#import "DOMNodeFilter.h" 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#import "DOMXPathNSResolver.h" 365f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#import <wtf/Forward.h> 378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace JSC { 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class JSObject; 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project namespace Bindings { 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class RootObject; 428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectnamespace WebCore { 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class NodeFilter; 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(XPATH) 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project class XPathNSResolver; 495f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif 508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@interface DOMNodeFilter : DOMObject <DOMNodeFilter> 538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@end 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#if ENABLE(XPATH) 568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@interface DOMNativeXPathNSResolver : DOMObject <DOMXPathNSResolver> 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project@end 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif // ENABLE(XPATH) 598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project// Helper functions for DOM wrappers and gluing to Objective-C 618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 625f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian// Create an NSMapTable mapping from pointers to ObjC objects held with zeroing weak references. 635f1ab04193ad0130ca8204aadaceae083aca9881Feng QianNSMapTable* createWrapperCache(); 648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 655f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianid createDOMWrapper(JSC::JSObject*, PassRefPtr<JSC::Bindings::RootObject> origin, PassRefPtr<JSC::Bindings::RootObject> current); 66635860845790a19bf50bbc51ba8fb66a96dde068The Android Open Source Project 675f1ab04193ad0130ca8204aadaceae083aca9881Feng QianNSObject* getDOMWrapper(DOMObjectInternal*); 685f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianvoid addDOMWrapper(NSObject* wrapper, DOMObjectInternal*); 695f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianvoid removeDOMWrapper(DOMObjectInternal*); 708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 715f1ab04193ad0130ca8204aadaceae083aca9881Feng Qiantemplate <class Source> 725f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianinline id getDOMWrapper(Source impl) 735f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{ 745f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian return getDOMWrapper(reinterpret_cast<DOMObjectInternal*>(impl)); 755f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 775f1ab04193ad0130ca8204aadaceae083aca9881Feng Qiantemplate <class Source> 785f1ab04193ad0130ca8204aadaceae083aca9881Feng Qianinline void addDOMWrapper(NSObject* wrapper, Source impl) 795f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian{ 805f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian addDOMWrapper(wrapper, reinterpret_cast<DOMObjectInternal*>(impl)); 815f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian} 828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 835f1ab04193ad0130ca8204aadaceae083aca9881Feng QianDOMNodeFilter *kit(WebCore::NodeFilter*); 845f1ab04193ad0130ca8204aadaceae083aca9881Feng QianWebCore::NodeFilter* core(DOMNodeFilter *); 858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 865f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#if ENABLE(XPATH) 875f1ab04193ad0130ca8204aadaceae083aca9881Feng QianDOMNativeXPathNSResolver *kit(WebCore::XPathNSResolver*); 885f1ab04193ad0130ca8204aadaceae083aca9881Feng QianWebCore::XPathNSResolver* core(DOMNativeXPathNSResolver *); 895f1ab04193ad0130ca8204aadaceae083aca9881Feng Qian#endif // ENABLE(XPATH) 90d0825bca7fe65beaee391d30da42e937db621564Steve Block 91d0825bca7fe65beaee391d30da42e937db621564Steve Blockinline NSTimeInterval kit(double msSinceEpoch) 92d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 93d0825bca7fe65beaee391d30da42e937db621564Steve Block return msSinceEpoch / 1000.0 - NSTimeIntervalSince1970; 94d0825bca7fe65beaee391d30da42e937db621564Steve Block} 95d0825bca7fe65beaee391d30da42e937db621564Steve Block 96d0825bca7fe65beaee391d30da42e937db621564Steve Blockinline double core(NSTimeInterval sec) 97d0825bca7fe65beaee391d30da42e937db621564Steve Block{ 98d0825bca7fe65beaee391d30da42e937db621564Steve Block return sec * 1000.0 + NSTimeIntervalSince1970; 99d0825bca7fe65beaee391d30da42e937db621564Steve Block} 100