diff options
Diffstat (limited to 'WebKitTools/DrawTest/TestController.m')
-rw-r--r-- | WebKitTools/DrawTest/TestController.m | 270 |
1 files changed, 0 insertions, 270 deletions
diff --git a/WebKitTools/DrawTest/TestController.m b/WebKitTools/DrawTest/TestController.m deleted file mode 100644 index 506920b..0000000 --- a/WebKitTools/DrawTest/TestController.m +++ /dev/null @@ -1,270 +0,0 @@ -/* - * Copyright (C) 2005 Apple Computer, Inc. All rights reserved. - * Copyright (C) 2006 Nefaur Khandker <nefaurk@gmail.com> 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 "TestController.h" -#import "SVGTest.h" -#import "TestViewerSplitView.h" -#import "ScalingImageView.h" -#import "DrawTestView.h" - -#import <WebKit/WebView.h> - -@interface NSArray (TestControllerAdditions) -- (id)firstObject; -@end - -@implementation NSArray (TestControllerAdditions) -- (id)firstObject -{ - if ([self count]) - return [self objectAtIndex:0]; - return nil; -} -@end - -static TestController *__sharedInstance = nil; - -@implementation TestController - -- (id)init -{ - if (self = [super init]) { - NSString *path = [[NSUserDefaults standardUserDefaults] objectForKey:@"TestDirectory"]; - BOOL isDirectory = NO; - if (![[NSFileManager defaultManager] fileExistsAtPath:path isDirectory:&isDirectory] || !isDirectory) { - path = [@"~" stringByStandardizingPath]; - } - [self setCurrentPath:path]; - } - return self; -} - -+ (void)initialize -{ - [self setKeys:[NSArray arrayWithObject:@"currentPath"] triggerChangeNotificationsForDependentKey:@"directoryHierarchy"]; - [self setKeys:[NSArray arrayWithObject:@"currentPath"] triggerChangeNotificationsForDependentKey:@"tests"]; -} - -+ (id)sharedController -{ - if (!__sharedInstance) { - __sharedInstance = [[self alloc] init]; - } - return __sharedInstance; -} - -- (void)loadNibIfNecessary -{ - if (!_testPanel) { - [NSBundle loadNibNamed:@"TestViewer" owner:self]; - } -} - -- (void)awakeFromNib -{ - [_testsTableView setTarget:self]; - [_testsTableView setDoubleAction:@selector(openTestViewerForSelection:)]; - _drawView = [[DrawTestView alloc] initWithFrame:NSZeroRect]; - _imageView = [[ScalingImageView alloc] initWithFrame:NSZeroRect]; - [_splitView addSubview:_drawView]; - [_splitView addSubview:_imageView]; -} - -- (IBAction)showTestsPanel:(id)sender -{ - [self loadNibIfNecessary]; - [_testPanel makeKeyAndOrderFront:sender]; -} - -- (IBAction)showTestWindow:(id)sender -{ - [self loadNibIfNecessary]; - [_testWindow makeKeyAndOrderFront:sender]; -} - -- (IBAction)showCompositeWindow:(id)sender -{ - [self loadNibIfNecessary]; - NSLog(@"showCompositeWindow: %@", _compositeWindow); - [_compositeWindow makeKeyAndOrderFront:sender]; -} - -- (IBAction)browse:(id)sender -{ - NSOpenPanel *openPanel = [NSOpenPanel openPanel]; - [openPanel setCanChooseDirectories:YES]; - [openPanel setCanChooseFiles:NO]; - [openPanel beginSheetForDirectory:nil file:nil modalForWindow:_testPanel modalDelegate:self didEndSelector:@selector(openPanelDidEnd:returnCode:contextInfo:) contextInfo:NULL]; -} - -- (void)openPanelDidEnd:(NSOpenPanel *)openPanel returnCode:(int)returnCode contextInfo:(void *)contextInfo -{ - if (returnCode == NSOKButton) { - NSArray *folders = [openPanel filenames]; - NSString *selectedFolder = [folders firstObject]; - [self setCurrentPath:selectedFolder]; - } -} - -- (IBAction)jumpToParentDirectory:(id)sender -{ - int index = [_parentDirectoryPopup indexOfSelectedItem]; - NSArray *components = [_currentPath pathComponents]; - NSArray *newComponents = [components subarrayWithRange:NSMakeRange(0, [components count] - index)]; - NSString *newPath = [NSString pathWithComponents:newComponents]; - [self setCurrentPath:newPath]; -} - -- (void)setSelectedTest:(SVGTest *)selectedTest -{ - id oldTest = _selectedTest; - _selectedTest = [selectedTest retain]; - [oldTest release]; - - if ([_testWindow isVisible]) { - [_testWindow setTitle:[NSString stringWithFormat:@"Test Viewer - %@", [_selectedTest name]]]; - [_drawView setDocument:[NSURL fileURLWithPath:[_selectedTest svgPath]]]; - [_imageView setImage:[_selectedTest image]]; - if ([_compositeWindow isVisible]) - [_compositeImageView setImage:[_selectedTest compositeImage]]; - } -} - -- (void)tableViewSelectionDidChange:(NSNotification *)aNotification -{ - [self setSelectedTest:[[_testsArrayController selectedObjects] firstObject]]; -} - -- (IBAction)openTestViewerForSelection:(id)sender -{ - [self showTestWindow:sender]; - [_drawView setDocument:[NSURL fileURLWithPath:[_selectedTest svgPath]]]; - [_imageView setImage:[_selectedTest image]]; -} - -- (IBAction)openSourceForSelection:(id)sender -{ - [[NSWorkspace sharedWorkspace] openFile:[_selectedTest svgPath] withApplication:@"TextEdit"]; -} - -- (IBAction)openSelectionInViewer:(id)sender -{ - [[NSWorkspace sharedWorkspace] openFile:[_selectedTest svgPath]]; -} - -- (NSString *)imagePathForSVGPath:(NSString *)svgPath -{ - // eventually this code will build an array instead... - - NSString *currentDirectory = [self currentPath]; - NSString *parentDirectory = [currentDirectory stringByDeletingLastPathComponent]; - - NSString *testName = [[svgPath lastPathComponent] stringByDeletingPathExtension]; - NSString *imageName, *imageDirectory, *imagePath; - - // first look in ../png/test.png -- SVG 1.1 baselines - // The SVG 1.1 spec has various different pngs, we should allow the - // tester to choose... - imageName = [[@"full-" stringByAppendingString:testName] stringByAppendingPathExtension:@"png"]; - imageDirectory = [parentDirectory stringByAppendingPathComponent:@"png"]; - imagePath = [imageDirectory stringByAppendingPathComponent:imageName]; - if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) return imagePath; - - // then look for ../name.png -- openclipart.org - imageName = [testName stringByAppendingPathExtension:@"png"]; - imageDirectory = parentDirectory; - imagePath = [imageDirectory stringByAppendingPathComponent:imageName]; - if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) return imagePath; - - // then look for ./name-w3c.png -- WebCore tests - imageName = [[testName stringByAppendingString:@"-w3c"] stringByAppendingPathExtension:@"png"]; - imageDirectory = currentDirectory; - imagePath = [imageDirectory stringByAppendingPathComponent:imageName]; - if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) return imagePath; - - // finally try name-baseline.png -- ksvg regression baselines - imageName = [[testName stringByAppendingString:@"-baseline"] stringByAppendingPathExtension:@"png"]; - imageDirectory = currentDirectory; - imagePath = [imageDirectory stringByAppendingPathComponent:imageName]; - if ([[NSFileManager defaultManager] fileExistsAtPath:imagePath]) return imagePath; - - return nil; -} - -- (NSArray *)tests -{ - if (!_tests) { - NSMutableArray *newTests = [[NSMutableArray alloc] init]; - NSArray *files = [[NSFileManager defaultManager] directoryContentsAtPath:[self currentPath]]; - NSString *file = nil; - foreacharray(file, files) { - if ([[file pathExtension] isEqualToString:@"svg"]) { - NSString *svgPath = [[self currentPath] stringByAppendingPathComponent:file]; - NSString *imagePath = [self imagePathForSVGPath:svgPath]; - [newTests addObject:[SVGTest testWithSVGPath:svgPath imagePath:imagePath]]; - } - } - [self setValue:newTests forKey:@"tests"]; - } - return _tests; -} - -- (NSArray *)directoryHierarchy -{ - // A hackish way to reverse an array. - return [[[_currentPath pathComponents] reverseObjectEnumerator] allObjects]; -} - -- (NSString *)currentPath -{ - return _currentPath; -} - -- (void)setCurrentPath:(NSString *)newPath -{ - if (![newPath isEqualToString:_currentPath]) { - [_currentPath release]; - _currentPath = [newPath copy]; - [self setValue:nil forKey:@"tests"]; - } - - [[NSUserDefaults standardUserDefaults] setObject:_currentPath forKey:@"TestDirectory"]; -} - -- (IBAction)toggleViewersScaleRule:(id)sender -{ -#if 0 - if ([_drawView imageScaling] == NSScaleProportionally) { - [_drawView setImageScaling:NSScaleNone]; - [_imageView setImageScaling:NSScaleNone]; - } else { - [_drawView setImageScaling:NSScaleProportionally]; - [_imageView setImageScaling:NSScaleProportionally]; - } -#endif -} - -@end |