From 1ecebbcaccd95ad0f60d5f67685867a26b505b3e Mon Sep 17 00:00:00 2001 From: dmaclach Date: Tue, 13 Nov 2018 11:19:10 -0800 Subject: Remove GTMLoginItems (#196) This functionality is no longer supported on OS X. Use a LaunchAgent, XPCService or the ServiceManagement APIs instead. --- AppKit/GTMLoginItems.h | 88 ----------- AppKit/GTMLoginItems.m | 342 ------------------------------------------ AppKit/GTMLoginItemsTest.m | 138 ----------------- GTM.xcodeproj/project.pbxproj | 12 -- 4 files changed, 580 deletions(-) delete mode 100644 AppKit/GTMLoginItems.h delete mode 100644 AppKit/GTMLoginItems.m delete mode 100644 AppKit/GTMLoginItemsTest.m diff --git a/AppKit/GTMLoginItems.h b/AppKit/GTMLoginItems.h deleted file mode 100644 index 1e2015f..0000000 --- a/AppKit/GTMLoginItems.h +++ /dev/null @@ -1,88 +0,0 @@ -// -// GTMLoginItems.h -// -// Copyright 2007-2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#import -#import "GTMDefines.h" - -/// Login items key constants, used as keys in |+loginItems| -// -// Item name -GTM_EXTERN NSString * const kGTMLoginItemsNameKey; -// Item path -GTM_EXTERN NSString * const kGTMLoginItemsPathKey; -// Hidden (NSNumber bool) -GTM_EXTERN NSString * const kGTMLoginItemsHiddenKey; - -/// GTMLoginItems -// -/// A helper class to manipulate the user's Login Items. -@interface GTMLoginItems : NSObject - -/// Obtain a complete list of all login items. -// -// Returns: -// Autoreleased array of dictionaries keyed with kGTMLoginItemsPathKey, etc. -// -+ (NSArray *)loginItems:(NSError **)errorInfo; - -/// Check if the given path is in the current user's Login Items -// -// Args: -// path: path to the application -// -// Returns: -// YES if the path is in the Login Items -// -+ (BOOL)pathInLoginItems:(NSString *)path; - -/// Check if the given name is in the current user's Login Items -// -// Args: -// name: name to the application -// -// Returns: -// YES if the name is in the Login Items -// -+ (BOOL)itemWithNameInLoginItems:(NSString *)name; - -/// Add the given path to the current user's Login Items. Does nothing if the -/// path is already there. -// -// Args: -// path: path to add -// hide: Set to YES to have the item launch hidden -// -+ (void)addPathToLoginItems:(NSString *)path hide:(BOOL)hide; - -/// Remove the given path from the current user's Login Items. Does nothing if -/// the path is not there. -// -// Args: -// path: the path to remove -// -+ (void)removePathFromLoginItems:(NSString *)path; - -/// Remove the given item name from the current user's Login Items. Does nothing -/// if no item with that name is present. -// -// Args: -// name: name of the item to remove -// -+ (void)removeItemWithNameFromLoginItems:(NSString *)name; - -@end diff --git a/AppKit/GTMLoginItems.m b/AppKit/GTMLoginItems.m deleted file mode 100644 index cd45418..0000000 --- a/AppKit/GTMLoginItems.m +++ /dev/null @@ -1,342 +0,0 @@ -// -// GTMLoginItems.m -// Based on AELoginItems from DTS. -// -// Copyright 2007-2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#import "GTMLoginItems.h" -#import "GTMDefines.h" - -#include - -// Exposed constants -NSString * const kGTMLoginItemsNameKey = @"Name"; -NSString * const kGTMLoginItemsPathKey = @"Path"; -NSString * const kGTMLoginItemsHiddenKey = @"Hide"; - -// kLSSharedFileListLoginItemHidden is supported on -// 10.5, but missing from the 10.5 headers. -// http://openradar.appspot.com/6482251 -#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6 -static NSString * const kLSSharedFileListLoginItemHidden = - @"com.apple.loginitem.HideOnLaunch"; -#endif // MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6 - -@interface GTMLoginItems (PrivateMethods) -+ (NSInteger)indexOfLoginItemWithValue:(id)value - forKey:(NSString *)key - loginItems:(NSArray *)items; -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -+ (LSSharedFileListRef)loginItemsFileListRef; -+ (NSArray *)loginItemsArrayForFileListRef:(LSSharedFileListRef)fileListRef; -#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -+ (BOOL)compileAndRunScript:(NSString *)script - withError:(NSError **)errorInfo; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -@end - -@implementation GTMLoginItems (PrivateMethods) - -+ (NSInteger)indexOfLoginItemWithValue:(id)value - forKey:(NSString *)key - loginItems:(NSArray *)items { - if (!value || !key || !items) return NSNotFound; - NSDictionary *item = nil; - NSInteger found = -1; - for (item in items) { - ++found; - id itemValue = [item objectForKey:key]; - if (itemValue && [itemValue isEqual:value]) { - return found; - } - } - return NSNotFound; -} - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -+ (LSSharedFileListRef)loginItemsFileListRef { - LSSharedFileListRef loginItemsRef = - LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL); - return (LSSharedFileListRef)GTMCFAutorelease(loginItemsRef); -} - -+ (NSArray *)loginItemsArrayForFileListRef:(LSSharedFileListRef)fileListRef { - UInt32 seedValue; - CFArrayRef filelistArrayRef = LSSharedFileListCopySnapshot(fileListRef, - &seedValue); - return GTMCFAutorelease(filelistArrayRef); -} - -#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -+ (BOOL)compileAndRunScript:(NSString *)script - withError:(NSError **)errorInfo { - if ([script length] == 0) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-90 userInfo:nil]; - return NO; - // COV_NF_END - } - NSAppleScript *query = [[[NSAppleScript alloc] initWithSource:script] autorelease]; - NSDictionary *errDict = nil; - if ( ![query compileAndReturnError:&errDict]) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-91 userInfo:errDict]; - return NO; - // COV_NF_END - } - NSAppleEventDescriptor *scriptResult = [query executeAndReturnError:&errDict]; - if (!scriptResult) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-92 userInfo:errDict]; - return NO; - // COV_NF_END - } - // we don't process the result - return YES; -} - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -@end - -@implementation GTMLoginItems - -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -+ (NSArray*)loginItems:(NSError **)errorInfo { - // get the login items from LaunchServices - LSSharedFileListRef loginItemsRef = [self loginItemsFileListRef]; - if (!loginItemsRef) { - // COV_NF_START - no real way to test this - if (errorInfo) { - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" - code:-1 - userInfo:nil]; - } - return nil; - // COV_NF_END - } - NSArray *fileList = [self loginItemsArrayForFileListRef:loginItemsRef]; - - // build our results - NSMutableArray *result = [NSMutableArray array]; - for (id fileItem in fileList) { - LSSharedFileListItemRef itemRef = (LSSharedFileListItemRef)fileItem; - // name - NSMutableDictionary *item = [NSMutableDictionary dictionary]; - CFStringRef nameRef = LSSharedFileListItemCopyDisplayName(itemRef); - if (nameRef) { - [item setObject:[(NSString *)nameRef stringByDeletingPathExtension] - forKey:kGTMLoginItemsNameKey]; - CFRelease(nameRef); - } - // path - CFURLRef urlRef = NULL; - if (LSSharedFileListItemResolve(itemRef, 0, &urlRef, NULL) == noErr) { - if (urlRef) { - NSString *path = [(NSURL *)urlRef path]; - if (path) { - [item setObject:path forKey:kGTMLoginItemsPathKey]; - } - CFRelease(urlRef); - } - } - // hidden - CFBooleanRef hiddenRef = LSSharedFileListItemCopyProperty(itemRef, - (CFStringRef)kLSSharedFileListLoginItemHidden); - if (hiddenRef) { - if (hiddenRef == kCFBooleanTrue) { - [item setObject:[NSNumber numberWithBool:YES] - forKey:kGTMLoginItemsHiddenKey]; - } - CFRelease(hiddenRef); - } - [result addObject:item]; - } - - return result; -} - -#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -+ (NSArray*)loginItems:(NSError **)errorInfo { - NSDictionary *errDict = nil; - // get the script compiled and saved off - static NSAppleScript *query = nil; - if (!query) { - NSString *querySource = @"tell application \"System Events\" to get properties of login items"; - query = [[NSAppleScript alloc] initWithSource:querySource]; - if ( ![query compileAndReturnError:&errDict]) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-1 userInfo:errDict]; - [query release]; - query = nil; - return nil; - // COV_NF_END - } - } - // run the script - NSAppleEventDescriptor *scriptResult = [query executeAndReturnError:&errDict]; - if (!scriptResult) { - // COV_NF_START - no real way to test this - if (errorInfo) - *errorInfo = [NSError errorWithDomain:@"GTMLoginItems" code:-2 userInfo:errDict]; - return nil; - // COV_NF_END - } - // build our results - NSMutableArray *result = [NSMutableArray array]; - NSInteger count = [scriptResult numberOfItems]; - for (NSInteger i = 0; i < count; ++i) { - NSAppleEventDescriptor *aeItem = [scriptResult descriptorAtIndex:i+1]; - NSAppleEventDescriptor *hidn = [aeItem descriptorForKeyword:kAEHidden]; - NSAppleEventDescriptor *nam = [aeItem descriptorForKeyword:pName]; - NSAppleEventDescriptor *ppth = [aeItem descriptorForKeyword:'ppth']; - NSMutableDictionary *item = [NSMutableDictionary dictionary]; - if (hidn && [hidn booleanValue]) { - [item setObject:[NSNumber numberWithBool:YES] forKey:kGTMLoginItemsHiddenKey]; - } - if (nam) { - NSString *name = [nam stringValue]; - if (name) { - [item setObject:name forKey:kGTMLoginItemsNameKey]; - } - } - if (ppth) { - NSString *path = [ppth stringValue]; - if (path) { - [item setObject:path forKey:kGTMLoginItemsPathKey]; - } - } - [result addObject:item]; - } - - return result; -} - -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - -+ (BOOL)pathInLoginItems:(NSString *)path { - NSArray *loginItems = [self loginItems:nil]; - NSInteger itemIndex = [self indexOfLoginItemWithValue:path - forKey:kGTMLoginItemsPathKey - loginItems:loginItems]; - return (itemIndex != NSNotFound) ? YES : NO; -} - -+ (BOOL)itemWithNameInLoginItems:(NSString *)name { - NSArray *loginItems = [self loginItems:nil]; - NSInteger itemIndex = [self indexOfLoginItemWithValue:name - forKey:kGTMLoginItemsNameKey - loginItems:loginItems]; - return (itemIndex != NSNotFound) ? YES : NO; -} - -+ (void)addPathToLoginItems:(NSString*)path hide:(BOOL)hide { - if (!path) return; - // make sure it isn't already there - if ([self pathInLoginItems:path]) return; - // now append it -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - NSURL *url = [NSURL fileURLWithPath:path]; - if (url) { - LSSharedFileListRef loginItemsRef = [self loginItemsFileListRef]; - if (loginItemsRef) { - NSDictionary *setProperties = - [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:hide] - forKey:(id)kLSSharedFileListLoginItemHidden]; - LSSharedFileListItemRef itemRef = - LSSharedFileListInsertItemURL(loginItemsRef, - kLSSharedFileListItemLast, NULL, NULL, - (CFURLRef)url, - (CFDictionaryRef)setProperties, NULL); - if (itemRef) CFRelease(itemRef); - } - } -#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - NSString *scriptSource = - [NSString stringWithFormat: - @"tell application \"System Events\" to make new login item with properties { path:\"%s\", hidden:%s } at end", - [path UTF8String], - (hide ? "yes" : "no")]; - [self compileAndRunScript:scriptSource withError:nil]; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -} - -+ (void)removePathFromLoginItems:(NSString*)path { - if ([path length] == 0) return; -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - NSURL *url = [NSURL fileURLWithPath:path]; - LSSharedFileListRef loginItemsRef = [self loginItemsFileListRef]; - if (loginItemsRef) { - NSArray *fileList = [self loginItemsArrayForFileListRef:loginItemsRef]; - for (id item in fileList) { - LSSharedFileListItemRef itemRef = (LSSharedFileListItemRef)item; - CFURLRef urlRef = NULL; - if (LSSharedFileListItemResolve(itemRef, 0, &urlRef, NULL) == noErr) { - if (urlRef) { - if (CFEqual(urlRef, (CFURLRef)url)) { - LSSharedFileListItemRemove(loginItemsRef, itemRef); - } - CFRelease(urlRef); - } - } - } - } -#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - NSString *scriptSource = - [NSString stringWithFormat: - @"tell application \"System Events\" to delete (login items whose path is \"%s\")", - [path UTF8String]]; - [self compileAndRunScript:scriptSource withError:nil]; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -} - -+ (void)removeItemWithNameFromLoginItems:(NSString *)name { - if ([name length] == 0) return; -#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - LSSharedFileListRef loginItemsRef = [self loginItemsFileListRef]; - if (loginItemsRef) { - NSArray *fileList = [self loginItemsArrayForFileListRef:loginItemsRef]; - for (id item in fileList) { - LSSharedFileListItemRef itemRef = (LSSharedFileListItemRef)item; - CFStringRef itemNameRef = LSSharedFileListItemCopyDisplayName(itemRef); - if (itemNameRef) { - NSString *itemName = - [(NSString *)itemNameRef stringByDeletingPathExtension]; - if ([itemName isEqual:name]) { - LSSharedFileListItemRemove(loginItemsRef, itemRef); - } - CFRelease(itemNameRef); - } - } - } -#else // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 - NSString *scriptSource = - [NSString stringWithFormat: - @"tell application \"System Events\" to delete (login items whose name is \"%s\")", - [name UTF8String]]; - [self compileAndRunScript:scriptSource withError:nil]; -#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -} - -@end diff --git a/AppKit/GTMLoginItemsTest.m b/AppKit/GTMLoginItemsTest.m deleted file mode 100644 index 3784edb..0000000 --- a/AppKit/GTMLoginItemsTest.m +++ /dev/null @@ -1,138 +0,0 @@ -// -// GTMLoginItemsTest.m -// -// Copyright 2006-2008 Google Inc. -// -// Licensed under the Apache License, Version 2.0 (the "License"); you may not -// use this file except in compliance with the License. You may obtain a copy -// of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT -// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the -// License for the specific language governing permissions and limitations under -// the License. -// - -#import "GTMSenTestCase.h" -#import "GTMLoginItems.h" - - // we don't really run this test because if someone had it in some automated - // tests, then if something did fail, it could leave things in the login items - // on the computer which could be a nasty surprise. -#define MODIFICATION_TESTS_ENABLED 0 - - -@interface GTMLoginItemsTest : GTMTestCase -@end - -static BOOL ItemsListHasPath(NSArray *items, NSString *path) { - NSDictionary *item = nil; - for (item in items) { - NSString *itemPath = [item objectForKey:kGTMLoginItemsPathKey]; - if (itemPath && [itemPath isEqual:path]) { - return YES; - } - } - return NO; -} - -@implementation GTMLoginItemsTest - -- (void)testNoModification { - - NSError *error = nil; - NSString *bogusAppPath = @"/Applications/AppThatDoesNotExist.app"; - NSString *bogusAppName = @"AppThatDoesNotExist"; - - // fetch the starting values - NSArray *initialItems = [GTMLoginItems loginItems:&error]; - XCTAssertNotNil(initialItems, @"shouldn't be nil (%@)", error); - XCTAssertFalse(ItemsListHasPath(initialItems, bogusAppPath), - @"bogusApp shouldn't be in list to start for test (%@)", - initialItems); - - // check by path - XCTAssertFalse([GTMLoginItems pathInLoginItems:bogusAppPath]); - - // check by name - XCTAssertFalse([GTMLoginItems itemWithNameInLoginItems:bogusAppName]); - - // remove it by path - [GTMLoginItems removePathFromLoginItems:bogusAppPath]; - NSArray *curItems = [GTMLoginItems loginItems:nil]; - XCTAssertEqualObjects(initialItems, curItems); - - // remove it by name - [GTMLoginItems removeItemWithNameFromLoginItems:bogusAppName]; - curItems = [GTMLoginItems loginItems:nil]; - XCTAssertEqualObjects(initialItems, curItems); - -} - -- (void)testModification { - -#if MODIFICATION_TESTS_ENABLED - - NSError *error = nil; - NSString *textEditPath = @"/Applications/TextEdit.app"; - NSString *textEditName = @"TextEdit"; - - // fetch the starting values - NSArray *initialItems = [GTMLoginItems loginItems:&error]; - XCTAssertNotNil(initialItems, @"shouldn't be nil (%@)", error); - XCTAssertFalse(ItemsListHasPath(initialItems, textEditPath), - @"textedit shouldn't be in list to start for test (%@)", - initialItems); - - // add textedit - [GTMLoginItems addPathToLoginItems:textEditPath hide:NO]; - NSArray *curItems = [GTMLoginItems loginItems:nil]; - XCTAssertNotEqualObjects(initialItems, curItems); - - // check by path - XCTAssertTrue([GTMLoginItems pathInLoginItems:textEditPath]); - - // check by name - XCTAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName]); - - // remove it by path - [GTMLoginItems removePathFromLoginItems:textEditPath]; - curItems = [GTMLoginItems loginItems:nil]; - STAssertEqualObjects(initialItems, curItems); - - // check by path - XCTAssertFalse([GTMLoginItems pathInLoginItems:textEditPath]); - - // check by name - XCTAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName]); - - // add textedit - [GTMLoginItems addPathToLoginItems:textEditPath hide:NO]; - curItems = [GTMLoginItems loginItems:nil]; - STAssertNotEqualObjects(initialItems, curItems); - - // check by path - XCTAssertTrue([GTMLoginItems pathInLoginItems:textEditPath]); - - // check by name - XCTAssertTrue([GTMLoginItems itemWithNameInLoginItems:textEditName]); - - // remove it by name - [GTMLoginItems removeItemWithNameFromLoginItems:textEditName]; - curItems = [GTMLoginItems loginItems:nil]; - XCTAssertEqualObjects(initialItems, curItems); - - // check by path - XCTAssertFalse([GTMLoginItems pathInLoginItems:textEditPath]); - - // check by name - XCTAssertFalse([GTMLoginItems itemWithNameInLoginItems:textEditName]); - -#endif // MODIFICATION_TESTS_ENABLED - -} - -@end diff --git a/GTM.xcodeproj/project.pbxproj b/GTM.xcodeproj/project.pbxproj index 92dedf1..895c10e 100644 --- a/GTM.xcodeproj/project.pbxproj +++ b/GTM.xcodeproj/project.pbxproj @@ -80,7 +80,6 @@ 8BA983C81D9AE7E6009724B5 /* GTMUnitTestingTest.nib in Resources */ = {isa = PBXBuildFile; fileRef = 8BA983C51D9AE7E6009724B5 /* GTMUnitTestingTest.nib */; }; 8BAA9E380F7C19D500DF4F12 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 8BAA9E360F7C19D500DF4F12 /* MainMenu.xib */; }; 8BAA9EF20F7C2AB500DF4F12 /* GTMCarbonEventTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B3E29290EEB53F3000681D8 /* GTMCarbonEventTest.m */; }; - 8BAA9EF60F7C2AB500DF4F12 /* GTMLoginItemsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F43DCEC60D47BEA000959A62 /* GTMLoginItemsTest.m */; }; 8BAA9EF70F7C2AB500DF4F12 /* GTMNSBezierPath+CGPathTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F428FF010D48E55E00382ED1 /* GTMNSBezierPath+CGPathTest.m */; }; 8BAA9EF80F7C2AB500DF4F12 /* GTMNSBezierPath+RoundRectTest.m in Sources */ = {isa = PBXBuildFile; fileRef = F48FE2830D198D0E009257D2 /* GTMNSBezierPath+RoundRectTest.m */; }; 8BAA9EFA0F7C2AB500DF4F12 /* GTMNSColor+LuminanceTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F511DF50F4B0378009F41B6 /* GTMNSColor+LuminanceTest.m */; }; @@ -157,8 +156,6 @@ F437F55E0D50BC0A00F5C3A4 /* GTMRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = F437F55B0D50BC0A00F5C3A4 /* GTMRegex.m */; }; F43C7A571021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.h in Headers */ = {isa = PBXBuildFile; fileRef = F43C7A551021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; F43C7A581021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.m in Sources */ = {isa = PBXBuildFile; fileRef = F43C7A561021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.m */; }; - F43DCDCD0D4796C600959A62 /* GTMLoginItems.h in Headers */ = {isa = PBXBuildFile; fileRef = F43DCDCB0D4796C600959A62 /* GTMLoginItems.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F43DCDCE0D4796C600959A62 /* GTMLoginItems.m in Sources */ = {isa = PBXBuildFile; fileRef = F43DCDCC0D4796C600959A62 /* GTMLoginItems.m */; }; F43E4C280D4E361D0041161F /* GTMNSString+XML.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4C250D4E361D0041161F /* GTMNSString+XML.h */; settings = {ATTRIBUTES = (Public, ); }; }; F43E4C290D4E361D0041161F /* GTMNSString+XML.m in Sources */ = {isa = PBXBuildFile; fileRef = F43E4C260D4E361D0041161F /* GTMNSString+XML.m */; }; F43E4E610D4E5EC90041161F /* GTMNSData+zlib.h in Headers */ = {isa = PBXBuildFile; fileRef = F43E4E5E0D4E5EC90041161F /* GTMNSData+zlib.h */; settings = {ATTRIBUTES = (Public, ); }; }; @@ -353,9 +350,6 @@ F437F55C0D50BC0A00F5C3A4 /* GTMRegexTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMRegexTest.m; sourceTree = ""; }; F43C7A551021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMUILocalizerAndLayoutTweaker.h; sourceTree = ""; }; F43C7A561021FAA300ABF03C /* GTMUILocalizerAndLayoutTweaker.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMUILocalizerAndLayoutTweaker.m; sourceTree = ""; }; - F43DCDCB0D4796C600959A62 /* GTMLoginItems.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMLoginItems.h; sourceTree = ""; }; - F43DCDCC0D4796C600959A62 /* GTMLoginItems.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoginItems.m; sourceTree = ""; }; - F43DCEC60D47BEA000959A62 /* GTMLoginItemsTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GTMLoginItemsTest.m; sourceTree = ""; }; F43E4C250D4E361D0041161F /* GTMNSString+XML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+XML.h"; sourceTree = ""; }; F43E4C260D4E361D0041161F /* GTMNSString+XML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XML.m"; sourceTree = ""; }; F43E4C270D4E361D0041161F /* GTMNSString+XMLTest.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+XMLTest.m"; sourceTree = ""; }; @@ -624,9 +618,6 @@ 8BF2368D13CF67CB00F3FD82 /* GTMKeyValueAnimation.h */, 8BF2368E13CF67CB00F3FD82 /* GTMKeyValueAnimation.m */, 8BF2369113CF694C00F3FD82 /* GTMKeyValueAnimationTest.m */, - F43DCDCB0D4796C600959A62 /* GTMLoginItems.h */, - F43DCDCC0D4796C600959A62 /* GTMLoginItems.m */, - F43DCEC60D47BEA000959A62 /* GTMLoginItemsTest.m */, 8B158A5F10A8BE4500C93125 /* GTMNSAnimation+Duration.h */, 8B158A6010A8BE4500C93125 /* GTMNSAnimation+Duration.m */, F428FEFF0D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h */, @@ -824,7 +815,6 @@ F42E094F0D199BBF00D5DDE0 /* GTMNSBezierPath+RoundRect.h in Headers */, F42E09510D199BBF00D5DDE0 /* GTMNSString+HTML.h in Headers */, F42E09540D199BBF00D5DDE0 /* GTMSystemVersion.h in Headers */, - F43DCDCD0D4796C600959A62 /* GTMLoginItems.h in Headers */, F428FF030D48E55E00382ED1 /* GTMNSBezierPath+CGPath.h in Headers */, F43E4C280D4E361D0041161F /* GTMNSString+XML.h in Headers */, F43E4E610D4E5EC90041161F /* GTMNSData+zlib.h in Headers */, @@ -1179,7 +1169,6 @@ F42E09500D199BBF00D5DDE0 /* GTMNSBezierPath+RoundRect.m in Sources */, F42E09520D199BBF00D5DDE0 /* GTMNSString+HTML.m in Sources */, F42E09550D199BBF00D5DDE0 /* GTMSystemVersion.m in Sources */, - F43DCDCE0D4796C600959A62 /* GTMLoginItems.m in Sources */, F428FF040D48E55E00382ED1 /* GTMNSBezierPath+CGPath.m in Sources */, F43E4C290D4E361D0041161F /* GTMNSString+XML.m in Sources */, F43E4E620D4E5EC90041161F /* GTMNSData+zlib.m in Sources */, @@ -1225,7 +1214,6 @@ 8B7DCBC10DFF0F7F0017E983 /* GTMMethodCheck.m in Sources */, 8B7DCE190DFF39850017E983 /* GTMSenTestCase.m in Sources */, 8BAA9EF20F7C2AB500DF4F12 /* GTMCarbonEventTest.m in Sources */, - 8BAA9EF60F7C2AB500DF4F12 /* GTMLoginItemsTest.m in Sources */, 8BAA9EF70F7C2AB500DF4F12 /* GTMNSBezierPath+CGPathTest.m in Sources */, 8BAA9EF80F7C2AB500DF4F12 /* GTMNSBezierPath+RoundRectTest.m in Sources */, 8BAA9EFA0F7C2AB500DF4F12 /* GTMNSColor+LuminanceTest.m in Sources */, -- cgit v1.2.3