Reviewed by Tim Hatcher.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Oct 2006 04:48:08 +0000 (04:48 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 31 Oct 2006 04:48:08 +0000 (04:48 +0000)
        * DumpRenderTree/DumpRenderTree.m: Changed to allocate a local pasteboard.
        This should make our buildbot tests no longer need a pasteboard server.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@17468 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKitTools/ChangeLog
WebKitTools/DumpRenderTree/DumpRenderTree.h
WebKitTools/DumpRenderTree/DumpRenderTree.m
WebKitTools/DumpRenderTree/UIDelegate.h
WebKitTools/DumpRenderTree/UIDelegate.m

index 841007559b719d7ca2acee01b1c39b3951780834..9f51d425b27944576b564fa3bec869b7e4e79d1e 100644 (file)
@@ -1,3 +1,10 @@
+2006-10-30  Darin Adler  <darin@apple.com>
+
+        Reviewed by Tim Hatcher.
+
+        * DumpRenderTree/DumpRenderTree.m: Changed to allocate a local pasteboard.
+        This should make our buildbot tests no longer need a pasteboard server.
+
 2006-10-30  Geoffrey Garen  <ggaren@apple.com>
 
         Reviewed by Beth.
index ea5cc6bc665f35bfed7b336f14976ccbaff924d4..92551f1c4efa17051ff2ff216234a79ec3e98fb3 100644 (file)
@@ -29,6 +29,7 @@
 @class DumpRenderTreeDraggingInfo;
 @class WebFrame;
 
+extern BOOL windowIsKey;
 extern WebFrame *frame;
 extern DumpRenderTreeDraggingInfo *draggingInfo;
 
index b8554c2488d2c4b26edfab0ebfbcd06c3eba91b9..711745785d4be62352221126268386d82ebf0480 100644 (file)
@@ -56,6 +56,7 @@
 #import <WebKit/WebView.h>
 #import <getopt.h>
 #import <malloc/malloc.h>
+#import <CoreFoundation/CFPasteboard.h>
 #import <objc/objc-runtime.h>                       // for class_poseAs
 
 #define COMMON_DIGEST_FOR_OPENSSL
 @interface LayoutTestController : NSObject
 @end
 
+@interface LocalPasteboard : NSPasteboard
+{
+    NSMutableArray *typesArray;
+    NSMutableSet *typesSet;
+    NSMutableDictionary *dataByType;
+    int changeCount;
+}
+@end
+
 BOOL windowIsKey = YES;
 WebFrame *frame = 0;
 
@@ -280,7 +290,7 @@ int main(int argc, const char *argv[])
         sharedColorSpace = CGColorSpaceCreateDeviceRGB();
     }
     
-    localPasteboard = [NSPasteboard pasteboardWithUniqueName];
+    localPasteboard = [(LocalPasteboard *)NSAllocateObject([LocalPasteboard class], 0, 0) init];
     navigationController = [[NavigationController alloc] init];
 
     NSRect rect = NSMakeRect(0, 0, maxViewWidth, maxViewHeight);
@@ -377,7 +387,7 @@ int main(int argc, const char *argv[])
     [editingDelegate release];
     [uiDelegate release];
     
-    [localPasteboard releaseGlobally];
+    [localPasteboard release];
     localPasteboard = nil;
     
     [navigationController release];
@@ -1020,6 +1030,123 @@ static NSString *md5HashStringForBitmap(CGImageRef bitmap)
 
 @end
 
+@implementation LocalPasteboard
+
+- (id)init
+{
+    typesArray = [[NSMutableArray alloc] init];
+    typesSet = [[NSMutableSet alloc] init];
+    dataByType = [[NSMutableDictionary alloc] init];
+    return self;
+}
+
+- (void)dealloc
+{
+    [typesArray release];
+    [typesSet release];
+    [dataByType release];
+    [super dealloc];
+}
+
+- (NSString *)name
+{
+    return nil;
+}
+
+- (void)releaseGlobally
+{
+}
+
+- (int)declareTypes:(NSArray *)newTypes owner:(id)newOwner
+{
+    [typesArray removeAllObjects];
+    [typesSet removeAllObjects];
+    [dataByType removeAllObjects];
+    return [self addTypes:newTypes owner:newOwner];
+}
+
+- (int)addTypes:(NSArray *)newTypes owner:(id)newOwner
+{
+    unsigned count = [newTypes count];
+    unsigned i;
+    for (i = 0; i < count; ++i) {
+        NSString *type = [newTypes objectAtIndex:i];
+        NSString *setType = [typesSet member:type];
+        if (!setType) {
+            setType = [type copy];
+            [typesArray addObject:setType];
+            [typesSet addObject:setType];
+            [setType release];
+        }
+        if (newOwner)
+            [newOwner pasteboard:self provideDataForType:setType];
+    }
+    return ++changeCount;
+}
+
+- (int)changeCount
+{
+    return changeCount;
+}
+
+- (NSArray *)types
+{
+    return typesArray;
+}
+
+- (NSString *)availableTypeFromArray:(NSArray *)types
+{
+    unsigned count = [types count];
+    unsigned i;
+    for (i = 0; i < count; ++i) {
+        NSString *type = [types objectAtIndex:i];
+        NSString *setType = [typesSet member:type];
+        if (setType)
+            return setType;
+    }
+    return nil;
+}
+
+- (BOOL)setData:(NSData *)data forType:(NSString *)dataType
+{
+    if (data == nil)
+        data = [NSData data];
+    if (![typesSet containsObject:dataType])
+        return NO;
+    [dataByType setObject:data forKey:dataType];
+    ++changeCount;
+    return YES;
+}
+
+- (NSData *)dataForType:(NSString *)dataType
+{
+    return [dataByType objectForKey:dataType];
+}
+
+- (BOOL)setPropertyList:(id)propertyList forType:(NSString *)dataType;
+{
+    CFDataRef data = NULL;
+    if (propertyList)
+        data = CFPropertyListCreateXMLData(NULL, propertyList);
+    BOOL result = [self setData:(NSData *)data forType:dataType];
+    if (data)
+        CFRelease(data);
+    return result;
+}
+
+- (BOOL)setString:(NSString *)string forType:(NSString *)dataType
+{
+    CFDataRef data = NULL;
+    if (string)
+        data = CFPasteboardCreateDataForString(NULL, (CFStringRef)string);
+    BOOL result = [self setData:(NSData *)data forType:dataType];
+    if (data)
+        CFRelease(data);
+    return result;
+}
+
+@end
+
 @implementation DumpRenderTreeWindow
 
 - (BOOL)isKeyWindow
index e332889695eada157382547b011c7457b4a0e8e7..e9cdbd7c07b320c9af228156b406be23b4745080 100644 (file)
  
 #import <Cocoa/Cocoa.h>
 
-@class WebFrame;
-
-@interface UIDelegate : NSObject {
-
-}
-
+@interface UIDelegate : NSObject
 @end
-
-extern NSPoint lastMousePosition;
-extern BOOL windowIsKey;
-extern WebFrame *frame;
index 47da97db8faae3b697c1debd5d76873664c9c746..fb7e2404ba0567b5e34e3300a6ca30e5bbb67b89 100644 (file)
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-
 #import "UIDelegate.h"
 
+#import "DumpRenderTree.h"
 #import "DumpRenderTreeDraggingInfo.h"
+#import "EventSendingController.h"
 #import <WebKit/WebFramePrivate.h>
 #import <WebKit/WebHTMLViewPrivate.h>
 #import <WebKit/WebView.h>