diff -r 000000000000 -r dd21522fd290 webengine/osswebengine/WebKitTools/DrawTest/DrawTestDocument.m --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/webengine/osswebengine/WebKitTools/DrawTest/DrawTestDocument.m Mon Mar 30 12:54:55 2009 +0300 @@ -0,0 +1,151 @@ +/* + * Copyright (C) 2005 Apple Computer, Inc. All rights reserved. + * Copyright (C) 2006 Nefaur Khandker 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. + * + * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``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 COMPUTER, INC. OR + * 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 "DrawTestDocument.h" +#import "DrawTestView.h" +#import "DrawTestToolbarController.h" +#import +#import +#import + +@implementation DrawTestDocument + +- (id)initWithType:(NSString *)typeName error:(NSError **)outError +{ + if (outError) { + NSDictionary *errorInfo = [NSDictionary dictionaryWithObjectsAndKeys: + @"No document could be created.", NSLocalizedDescriptionKey, + @"New document creation not yet supported.", NSLocalizedFailureReasonErrorKey, + nil]; + *outError = [NSError errorWithDomain:NSCocoaErrorDomain code:0 userInfo:errorInfo]; + } + [self release]; + return nil; +} + +- (void)dealloc +{ + [toolbarController release]; + [super dealloc]; +} + +- (NSString *)windowNibName +{ + return @"DrawTestDocument"; +} + +- (BOOL)readFromFile:(NSString *)filename ofType:(NSString *)docType +{ + // TODO: Check the validity of the document before returning YES. + return YES; +} + +- (void)windowControllerDidLoadNib:(NSWindowController *)aController +{ + [super windowControllerDidLoadNib:aController]; + toolbarController = [[DrawTestToolbarController alloc] initWithDrawView:drawView]; + [drawView setDocument:[self fileURL]]; +} + +- (IBAction)dumpSVGToConsole:(id)sender +{ + WebDataSource* dataSource = [[drawView mainFrame] dataSource]; + NSLog(@"SVG Markup for file %@:\n%@", [self fileURL], [[dataSource representation] documentSource]); +} + +- (IBAction)openSourceForSelection:(id)sender +{ + // TODO: The "path" message (below) will not produce a valid pathname if we are dealing with a remote file. + NSString *filename = [[self fileURL] path]; + [[NSWorkspace sharedWorkspace] openFile:filename withApplication:@"TextEdit"]; +} + +- (NSData *)dataRepresentationOfType:(NSString *)aType +{ + WebDataSource* dataSource = [[drawView mainFrame] dataSource]; + return [dataSource data]; +} + +#pragma mark - +#pragma mark Debug Methods + +- (IBAction)toggleDebugDrawer:(id)sender +{ + [debugDrawer toggle:sender]; +} + +- (id)outlineView:(NSOutlineView *)outlineView child:(int)index ofItem:(id)item +{ + return nil; +} + +- (BOOL)outlineView:(NSOutlineView *)outlineView isItemExpandable:(id)item +{ + return NO; +} + +- (int)outlineView:(NSOutlineView *)outlineView numberOfChildrenOfItem:(id)item +{ + return 0; +} + +- (id)outlineView:(NSOutlineView *)outlineView objectValueForTableColumn:(NSTableColumn *)tableColumn byItem:(id)item +{ + return nil; +} + +- (IBAction)runWindowResizeTest:(id)sender +{ + NSWindow *window = [drawView window]; + NSScreen *screen = [window screen]; + float screenHeight = [screen visibleFrame].size.height; + NSRect originalFrame = [window frame]; + // initial setup + BOOL toolbarVisible = [[window toolbar] isVisible]; + if (toolbarVisible) [window toggleToolbarShown:self]; + [window setFrame:NSMakeRect(0,screenHeight-100,100,100) display:YES]; + + // grab time. + CFAbsoluteTime start = CFAbsoluteTimeGetCurrent(); + + // run test + for (int x = 0; x < 3; x++) { + for (float size = 100; size < 500.f; size += 20.f) { + [window setFrame:NSMakeRect(0, screenHeight-size, size, size) display:YES]; + } + } + + double elapsed = CFAbsoluteTimeGetCurrent() - start; + + // log + NSLog(@"Window resize test: %fs", elapsed); + + // restore + if (toolbarVisible) [window toggleToolbarShown:self]; + [window setFrame:originalFrame display:YES]; +} + +@end