WebKitTools/DumpRenderTree/mac/ObjCController.m
changeset 2 303757a437d3
parent 0 4f2f89ce4247
--- a/WebKitTools/DumpRenderTree/mac/ObjCController.m	Fri Sep 17 09:02:29 2010 +0300
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,266 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Inc. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1.  Redistributions of source code must retain the above copyright
- *     notice, this list of conditions and the following disclaimer. 
- * 2.  Redistributions in binary form must reproduce the above copyright
- *     notice, this list of conditions and the following disclaimer in the
- *     documentation and/or other materials provided with the distribution. 
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission. 
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
- * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
- * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
- * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
- * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
- * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
- * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#import "config.h"
-#import "ObjCController.h"
-
-#import <JavaScriptCore/JavaScriptCore.h>
-#import <WebKit/DOMAbstractView.h>
-#import <WebKit/WebScriptObject.h>
-#import <WebKit/WebView.h>
-#import <pthread.h>
-#import <wtf/Assertions.h>
-
-// Remove this once hasWebScriptKey has been made public.
-@interface WebScriptObject (StagedForPublic)
-- (BOOL)hasWebScriptKey:(NSString *)name;
-@end
-
-static void* runJavaScriptThread(void* arg)
-{
-    JSGlobalContextRef ctx = JSGlobalContextCreate(0);
-    JSStringRef scriptRef = JSStringCreateWithUTF8CString("'Hello World!'");
-
-    JSValueRef exception = 0;
-    JSEvaluateScript(ctx, scriptRef, 0, 0, 1, &exception);
-    ASSERT(!exception);
-
-    JSGlobalContextRelease(ctx);
-    JSStringRelease(scriptRef);
-    
-    return 0;
-}
-
-@implementation ObjCController
-
-+ (BOOL)isSelectorExcludedFromWebScript:(SEL)aSelector
-{
-    if (0
-            || aSelector == @selector(classNameOf:)
-            || aSelector == @selector(objectOfClass:)
-            || aSelector == @selector(arrayOfString)
-            || aSelector == @selector(identityIsEqual::)
-            || aSelector == @selector(longLongRoundTrip:)
-            || aSelector == @selector(unsignedLongLongRoundTrip:)
-            || aSelector == @selector(testWrapperRoundTripping:)
-            || aSelector == @selector(accessStoredWebScriptObject)
-            || aSelector == @selector(storeWebScriptObject:)
-            || aSelector == @selector(testValueForKey)
-            || aSelector == @selector(testHasWebScriptKey:)
-            || aSelector == @selector(testArray)
-        )
-        return NO;
-    return YES;
-}
-
-+ (NSString *)webScriptNameForSelector:(SEL)aSelector
-{
-    if (aSelector == @selector(classNameOf:))
-        return @"className";
-    if (aSelector == @selector(objectOfClass:))
-        return @"objectOfClass";
-    if (aSelector == @selector(arrayOfString))
-        return @"arrayOfString";
-    if (aSelector == @selector(identityIsEqual::))
-        return @"identityIsEqual";
-    if (aSelector == @selector(longLongRoundTrip:))
-        return @"longLongRoundTrip";
-    if (aSelector == @selector(unsignedLongLongRoundTrip:))
-        return @"unsignedLongLongRoundTrip";
-    if (aSelector == @selector(testWrapperRoundTripping:))
-        return @"testWrapperRoundTripping";
-    if (aSelector == @selector(storeWebScriptObject:))
-        return @"storeWebScriptObject";
-    if (aSelector == @selector(testValueForKey))
-        return @"testValueForKey";
-    if (aSelector == @selector(testHasWebScriptKey:))
-        return @"testHasWebScriptKey";
-    if (aSelector == @selector(testArray))
-        return @"testArray";
-
-    return nil;
-}
-
-- (NSString *)classNameOf:(id)object
-{
-    if (!object)
-        return @"nil";
-    return NSStringFromClass([object class]);
-}
-
-- (id)objectOfClass:(NSString *)aClass
-{
-    if ([aClass isEqualToString:@"NSNull"])
-        return [NSNull null];
-    if ([aClass isEqualToString:@"WebUndefined"])
-        return [WebUndefined undefined];
-    if ([aClass isEqualToString:@"NSCFBoolean"])
-        return [NSNumber numberWithBool:true];
-    if ([aClass isEqualToString:@"NSCFNumber"])
-        return [NSNumber numberWithInt:1];
-    if ([aClass isEqualToString:@"NSCFString"])
-        return @"";
-    if ([aClass isEqualToString:@"WebScriptObject"])
-        return self;
-    if ([aClass isEqualToString:@"NSArray"])
-        return [NSArray array];
-
-    return nil;
-}
-
-- (NSArray *)arrayOfString
-{
-    NSString *strings[3];
-    strings[0] = @"one";
-    strings[1] = @"two";
-    strings[2] = @"three";
-    NSArray *array = [NSArray arrayWithObjects:strings count:3];
-    return array;
-}
-
-- (BOOL)identityIsEqual:(WebScriptObject *)a :(WebScriptObject *)b
-{
-    if ([a isKindOfClass:[NSString class]] && [b isKindOfClass:[NSString class]])
-        return [(NSString *)a isEqualToString:(NSString *)b];
-    return a == b;
-}
-
-- (long long)longLongRoundTrip:(long long)num
-{
-    return num;
-}
-
-- (unsigned long long)unsignedLongLongRoundTrip:(unsigned long long)num
-{
-    return num;
-}
-
-- (void)testValueForKey
-{
-    ASSERT(storedWebScriptObject);
-    
-    @try {
-        [storedWebScriptObject valueForKey:@"ThisKeyDoesNotExist"];
-    } @catch (NSException *e) {
-    }
-
-    pthread_t pthread;
-    pthread_create(&pthread, 0, &runJavaScriptThread, 0);
-    pthread_join(pthread, 0);
-}
-
-- (BOOL)testHasWebScriptKey:(NSString *)key
-{
-    ASSERT(storedWebScriptObject);
-    return [storedWebScriptObject hasWebScriptKey:key];
-}
-
-- (BOOL)testWrapperRoundTripping:(WebScriptObject *)webScriptObject
-{
-    JSObjectRef jsObject = [webScriptObject JSObject];
-
-    if (!jsObject)
-        return false;
-
-    if (!webScriptObject)
-        return false;
-
-    if ([[webScriptObject evaluateWebScript:@"({ })"] class] != [webScriptObject class])
-        return false;
-
-    [webScriptObject setValue:[NSNumber numberWithInt:666] forKey:@"key"];
-    if (![[webScriptObject valueForKey:@"key"] isKindOfClass:[NSNumber class]] ||
-        ![[webScriptObject valueForKey:@"key"] isEqualToNumber:[NSNumber numberWithInt:666]])
-        return false;
-
-    [webScriptObject removeWebScriptKey:@"key"];
-    @try {
-        if ([webScriptObject valueForKey:@"key"])
-            return false;
-    } @catch(NSException *exception) {
-        // NSObject throws an exception if the key doesn't exist.
-    }
-
-    [webScriptObject setWebScriptValueAtIndex:0 value:webScriptObject];
-    if ([webScriptObject webScriptValueAtIndex:0] != webScriptObject)
-        return false;
-
-    if ([[webScriptObject stringRepresentation] isEqualToString:@"[Object object]"])
-        return false;
-
-    if ([webScriptObject callWebScriptMethod:@"returnThis" withArguments:nil] != webScriptObject)
-        return false;
-
-    return true;
-}
-
-- (void)accessStoredWebScriptObject
-{
-#if !ASSERT_DISABLED
-    BOOL isWindowObject = [storedWebScriptObject isKindOfClass:[DOMAbstractView class]];
-    JSObjectRef jsObject = [storedWebScriptObject JSObject];
-    ASSERT((jsObject && isWindowObject) || (!jsObject && !isWindowObject));
-#endif
-    [storedWebScriptObject callWebScriptMethod:@"" withArguments:nil];
-    [storedWebScriptObject evaluateWebScript:@""];
-    [storedWebScriptObject setValue:[WebUndefined undefined] forKey:@"key"];
-    [storedWebScriptObject valueForKey:@"key"];
-    [storedWebScriptObject removeWebScriptKey:@"key"];
-    [storedWebScriptObject stringRepresentation];
-    [storedWebScriptObject webScriptValueAtIndex:0];
-    [storedWebScriptObject setWebScriptValueAtIndex:0 value:[WebUndefined undefined]];
-    [storedWebScriptObject setException:@"exception"];
-}
-
-- (void)storeWebScriptObject:(WebScriptObject *)webScriptObject
-{
-    if (webScriptObject == storedWebScriptObject)
-        return;
-
-    [storedWebScriptObject release];
-    storedWebScriptObject = [webScriptObject retain];
-}
-
-- (NSArray *)testArray
-{
-    return [NSArray array];
-}
-
-- (void)dealloc
-{
-    [storedWebScriptObject release];
-    [super dealloc];
-}
-
-- (id)invokeUndefinedMethodFromWebScript:(NSString *)name withArguments:(NSArray *)args
-{
-    // FIXME: Perhaps we should log that this has been called.
-    return nil;
-}
-
-@end