From 2aafdcf577779218fc3b537cc58e0fa3411635ec Mon Sep 17 00:00:00 2001 From: Matthew Chen Date: Thu, 30 Nov 2017 14:30:54 -0500 Subject: [PATCH] Add app extension context, bridging header and PCH to app extension. --- Signal.xcodeproj/project.pbxproj | 35 +++++++++++++-- .../SignalShareExtension-Bridging-Header.h | 3 ++ .../SignalShareExtension-Prefix.pch | 24 ++++++++++ .../utils/ShareAppExtensionContext.h | 13 ++++++ .../utils/ShareAppExtensionContext.m | 45 +++++++++++++++++++ 5 files changed, 117 insertions(+), 3 deletions(-) create mode 100644 SignalShareExtension/SignalShareExtension-Bridging-Header.h create mode 100644 SignalShareExtension/SignalShareExtension-Prefix.pch create mode 100644 SignalShareExtension/utils/ShareAppExtensionContext.h create mode 100644 SignalShareExtension/utils/ShareAppExtensionContext.m diff --git a/Signal.xcodeproj/project.pbxproj b/Signal.xcodeproj/project.pbxproj index bdda051ed..b6ae029f3 100644 --- a/Signal.xcodeproj/project.pbxproj +++ b/Signal.xcodeproj/project.pbxproj @@ -24,6 +24,7 @@ 343A65951FC47D5E000477A1 /* DebugUISyncMessages.m in Sources */ = {isa = PBXBuildFile; fileRef = 343A65941FC47D5E000477A1 /* DebugUISyncMessages.m */; }; 343A65981FC4CFE7000477A1 /* ConversationScrollButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 343A65961FC4CFE6000477A1 /* ConversationScrollButton.m */; }; 343D3D9B1E9283F100165CA4 /* BlockListUIUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 343D3D9A1E9283F100165CA4 /* BlockListUIUtils.m */; }; + 34480B361FD0929200BC14EF /* ShareAppExtensionContext.m in Sources */ = {isa = PBXBuildFile; fileRef = 34480B351FD0929200BC14EF /* ShareAppExtensionContext.m */; }; 344F2F671E57A932000D9322 /* UIViewController+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 344F2F661E57A932000D9322 /* UIViewController+OWS.m */; }; 34533F181EA8D2070006114F /* OWSAudioAttachmentPlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 34533F171EA8D2070006114F /* OWSAudioAttachmentPlayer.m */; }; 34535D821E256BE9008A4747 /* UIView+OWS.m in Sources */ = {isa = PBXBuildFile; fileRef = 34535D811E256BE9008A4747 /* UIView+OWS.m */; }; @@ -486,6 +487,10 @@ 343A65971FC4CFE7000477A1 /* ConversationScrollButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ConversationScrollButton.h; sourceTree = ""; }; 343D3D991E9283F100165CA4 /* BlockListUIUtils.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = BlockListUIUtils.h; sourceTree = ""; }; 343D3D9A1E9283F100165CA4 /* BlockListUIUtils.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = BlockListUIUtils.m; sourceTree = ""; }; + 34480B341FD0929200BC14EF /* ShareAppExtensionContext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ShareAppExtensionContext.h; sourceTree = ""; }; + 34480B351FD0929200BC14EF /* ShareAppExtensionContext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ShareAppExtensionContext.m; sourceTree = ""; }; + 34480B371FD092A900BC14EF /* SignalShareExtension-Bridging-Header.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SignalShareExtension-Bridging-Header.h"; sourceTree = ""; }; + 34480B381FD092E300BC14EF /* SignalShareExtension-Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "SignalShareExtension-Prefix.pch"; sourceTree = ""; }; 34491FC11FB0F78500B3E5A3 /* my */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = my; path = translations/my.lproj/Localizable.strings; sourceTree = ""; }; 344F2F651E57A932000D9322 /* UIViewController+OWS.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "UIViewController+OWS.h"; path = "util/UIViewController+OWS.h"; sourceTree = ""; }; 344F2F661E57A932000D9322 /* UIViewController+OWS.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+OWS.m"; path = "util/UIViewController+OWS.m"; sourceTree = ""; }; @@ -1058,6 +1063,15 @@ path = Fonts; sourceTree = ""; }; + 34480B2F1FD0921000BC14EF /* utils */ = { + isa = PBXGroup; + children = ( + 34480B341FD0929200BC14EF /* ShareAppExtensionContext.h */, + 34480B351FD0929200BC14EF /* ShareAppExtensionContext.m */, + ); + path = utils; + sourceTree = ""; + }; 3448BFC01EDF0EA7005B2D69 /* ConversationView */ = { isa = PBXGroup; children = ( @@ -1329,10 +1343,13 @@ 453518691FC635DD00210559 /* SignalShareExtension */ = { isa = PBXGroup; children = ( - 34B0796E1FD07B1E00E248C2 /* SignalShareExtension.entitlements */, - 4535186A1FC635DD00210559 /* ShareViewController.swift */, - 4535186C1FC635DD00210559 /* MainInterface.storyboard */, 4535186F1FC635DD00210559 /* Info.plist */, + 4535186C1FC635DD00210559 /* MainInterface.storyboard */, + 4535186A1FC635DD00210559 /* ShareViewController.swift */, + 34480B371FD092A900BC14EF /* SignalShareExtension-Bridging-Header.h */, + 34480B381FD092E300BC14EF /* SignalShareExtension-Prefix.pch */, + 34B0796E1FD07B1E00E248C2 /* SignalShareExtension.entitlements */, + 34480B2F1FD0921000BC14EF /* utils */, ); path = SignalShareExtension; sourceTree = ""; @@ -2046,6 +2063,7 @@ 453518671FC635DD00210559 = { CreatedOnToolsVersion = 9.2; DevelopmentTeam = U68MSDN6DR; + LastSwiftMigration = 0910; ProvisioningStyle = Automatic; SystemCapabilities = { com.apple.ApplicationGroups.iOS = { @@ -2518,6 +2536,7 @@ buildActionMask = 2147483647; files = ( 4535186B1FC635DD00210559 /* ShareViewController.swift in Sources */, + 34480B361FD0929200BC14EF /* ShareAppExtensionContext.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3115,6 +3134,7 @@ CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; CLANG_WARN_BOOL_CONVERSION = YES; CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; CLANG_WARN_DOCUMENTATION_COMMENTS = YES; @@ -3132,6 +3152,8 @@ GCC_C_LANGUAGE_STANDARD = gnu11; GCC_DYNAMIC_NO_PIC = NO; GCC_OPTIMIZATION_LEVEL = 0; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SignalShareExtension/SignalShareExtension-Prefix.pch"; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; INFOPLIST_FILE = SignalShareExtension/Info.plist; @@ -3142,6 +3164,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_OBJC_BRIDGING_HEADER = "SignalShareExtension/SignalShareExtension-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Onone"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = 1; @@ -3189,6 +3212,8 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SignalShareExtension/SignalShareExtension-Prefix.pch"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -3203,6 +3228,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OBJC_BRIDGING_HEADER = "SignalShareExtension/SignalShareExtension-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = 1; @@ -3251,6 +3277,8 @@ ENABLE_STRICT_OBJC_MSGSEND = YES; GCC_C_LANGUAGE_STANDARD = gnu11; GCC_NO_COMMON_BLOCKS = YES; + GCC_PRECOMPILE_PREFIX_HEADER = YES; + GCC_PREFIX_HEADER = "SignalShareExtension/SignalShareExtension-Prefix.pch"; GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; GCC_WARN_UNDECLARED_SELECTOR = YES; @@ -3265,6 +3293,7 @@ PRODUCT_NAME = "$(TARGET_NAME)"; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_OBJC_BRIDGING_HEADER = "SignalShareExtension/SignalShareExtension-Bridging-Header.h"; SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; SWIFT_VERSION = 4.0; TARGETED_DEVICE_FAMILY = 1; diff --git a/SignalShareExtension/SignalShareExtension-Bridging-Header.h b/SignalShareExtension/SignalShareExtension-Bridging-Header.h new file mode 100644 index 000000000..57c6f544e --- /dev/null +++ b/SignalShareExtension/SignalShareExtension-Bridging-Header.h @@ -0,0 +1,3 @@ +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// diff --git a/SignalShareExtension/SignalShareExtension-Prefix.pch b/SignalShareExtension/SignalShareExtension-Prefix.pch new file mode 100644 index 000000000..27fe91e1d --- /dev/null +++ b/SignalShareExtension/SignalShareExtension-Prefix.pch @@ -0,0 +1,24 @@ +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// + +#import + +#ifdef __OBJC__ + #import + #import + + @import CocoaLumberjack; + #ifdef DEBUG + static const NSUInteger ddLogLevel = DDLogLevelAll; + #else + static const NSUInteger ddLogLevel = DDLogLevelInfo; + #endif + + #import + #import + #import + #import + #import + #import +#endif diff --git a/SignalShareExtension/utils/ShareAppExtensionContext.h b/SignalShareExtension/utils/ShareAppExtensionContext.h new file mode 100644 index 000000000..afe80a7cb --- /dev/null +++ b/SignalShareExtension/utils/ShareAppExtensionContext.h @@ -0,0 +1,13 @@ +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface ShareAppExtensionContext : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/SignalShareExtension/utils/ShareAppExtensionContext.m b/SignalShareExtension/utils/ShareAppExtensionContext.m new file mode 100644 index 000000000..d3d5db6cd --- /dev/null +++ b/SignalShareExtension/utils/ShareAppExtensionContext.m @@ -0,0 +1,45 @@ +// +// Copyright (c) 2017 Open Whisper Systems. All rights reserved. +// + +#import "ShareAppExtensionContext.h" + +NS_ASSUME_NONNULL_BEGIN + +@implementation ShareAppExtensionContext + +- (BOOL)isMainApp +{ + return NO; +} + +- (BOOL)isMainAppAndActive +{ + return NO; +} + +- (UIApplicationState)mainApplicationState +{ + OWSFail(@"%@ called %s.", self.logTag, __PRETTY_FUNCTION__); + return UIApplicationStateBackground; +} + +- (UIBackgroundTaskIdentifier)beginBackgroundTaskWithExpirationHandler: + (BackgroundTaskExpirationHandler)expirationHandler +{ + return UIBackgroundTaskInvalid; +} + +- (void)endBackgroundTask:(UIBackgroundTaskIdentifier)backgroundTaskIdentifier +{ + OWSAssert(backgroundTaskIdentifier == UIBackgroundTaskInvalid); +} + +- (void)setMainAppBadgeNumber:(NSInteger)value +{ + OWSFail(@"%@ called %s.", self.logTag, __PRETTY_FUNCTION__); +} + +@end + +NS_ASSUME_NONNULL_END