Skip to content

Commit

Permalink
Merge branch 'release/4.3.0'
Browse files Browse the repository at this point in the history
  • Loading branch information
joeljfischer committed Nov 3, 2016
2 parents e7845f4 + 0659da3 commit 63f0945
Show file tree
Hide file tree
Showing 351 changed files with 18,619 additions and 584 deletions.
5 changes: 2 additions & 3 deletions .clang-format
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,6 @@
Language: Cpp

AccessModifierOffset: -2
# AlignAfterOpenBracket: true
# AlignEscapedNewlinesLeft: true
AlignTrailingComments: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: true
Expand Down Expand Up @@ -32,13 +30,14 @@ ObjCBlockIndentWidth: 4
ObjCSpaceAfterProperty: true
ObjCSpaceBeforeProtocolList: true
PointerAlignment: Right
SortIncludes: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeParens: ControlStatements
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 1
SpacesInAngles: false
SpacesInCStyleCastParentheses: false
SpacesInContainerLiterals: true
SpacesInContainerLiterals: false
SpacesInParentheses: false
SpacesInSquareBrackets: false
Standard: Cpp11
Expand Down
1 change: 1 addition & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
CHANGELOG.md merge=union
10 changes: 5 additions & 5 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
language: objective-c
osx_image: xcode7.3
xcode_project: SmartDeviceLink-iOS
osx_image: xcode8
xcode_project: SmartDeviceLink-iOS.xcodeproj
xcode_scheme: SmartDeviceLink
xcode_sdk: iphonesimulator9.3
xcode_sdk: iphonesimulator10.0
env:
global:
- FRAMEWORK_NAME=SmartDeviceLink
Expand All @@ -12,14 +12,14 @@ notifications:

before_install:
- brew update
- brew outdated xctool || brew upgrade xctool
- brew outdated carthage || brew upgrade carthage

before_script:
- carthage bootstrap --platform ios

script:
- xctool -project SmartDeviceLink-iOS.xcodeproj -scheme SmartDeviceLink -sdk iphonesimulator ONLY_ACTIVE_ARCH=NO RUN_CLANG_STATIC_ANALYZER=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES test
- xcodebuild -project "SmartDeviceLink-iOS.xcodeproj" -scheme "SmartDeviceLink" -sdk "iphonesimulator10.0" -destination "OS=10.0,name=iPhone 7" -configuration Debug ONLY_ACTIVE_ARCH=NO RUN_CLANG_STATIC_ANALYZER=NO GCC_INSTRUMENT_PROGRAM_FLOW_ARCS=YES GCC_GENERATE_TEST_COVERAGE_FILES=YES ENABLE_TESTABILITY=YES test | xcpretty -c;
- xcodebuild -project "SmartDeviceLink-iOS.xcodeproj" -scheme "SmartDeviceLink-Example" -sdk "iphonesimulator10.0" -destination "OS=10.0,name=iPhone 7" -configuration Debug ONLY_ACTIVE_ARCH=NO build | xcpretty -c;

after_script:
- bash <(curl -s https://codecov.io/bash)
Expand Down
7 changes: 0 additions & 7 deletions .xctool-args

This file was deleted.

163 changes: 163 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,166 @@
# 4.3.0 Release Notes (Since RC 6 + Highlights)
### Highlights
* Adds a lifecycle manager to replace `SDLProxy` and manages much more of the lifecycle based on a declarative `SDLConfiguration`.
* Adds a file manager to streamline uploading and deleting files.
* Adds a lock screen manager to streamline lock screens and also provides a customizable default lock screen.
* Adds a permission manager to streamline knowing when RPCs are available for use.
* Adds the ability to use blocks to be notified about RPC responses.
* Adds the ability to use blocks to be notified about certain RPC notifications (such as button presses).

### (Since RC 6)
### Features
* Added an `SDLProxy` property to `SDLManager` to allow for edge cases in v4.3. This property will be removed in v5.0.

### Deprecations
* `SDLRPCRequestFactory` is now deprecated. The methods have been replaced as initialzers on the respective RPC methods. These intiailizers have been improved as well.
* `SDLTTSChunkFactory` is now deprecated. The methods have been replaced as initialzers on the respective RPC methods.

### Bug Fixes
* Fixed a bug where a non-existent file could attempt to upload, causing havoc.
* Fix some test framework stuff related to Xcode 8.
* No longer crashes when RegisterAppInterfaceResponse errors.
* RegisterAppInterface no longer crashes when attempting to connect a navigation app to a non-navigation capable head unit.

### Example App
* The example app now shows some example Permission Manager usage and logs to console a few permission manager observer blocks.

# 4.3.0 Release Candidate 6 Release Notes (Since RC 5)
### Bug Fixes
* Fixed several bugs and improved error messaging around what should happen if File Manager fails to start, for example because the head unit does not support files.

# 4.3.0 Release Candidate 5 Release Notes (Since RC 4)
### Bug Fixes
* Fixed an issue where "SmartDeviceLink.h" would not be available through cocoapods.

# 4.3.0 Release Candidate 4 Release Notes (Since RC 3)
### Bug Fixes
* Notification constants should now be compatible both with Swift 3 and with iOS 6/7.
* Fixed a few issues with the lock screen and iOS 6/7 support.
* Fixed a layout issue with the lock screen on iPhone 4S-sized phones.

### Other
* CI builds now run on Xcode 8.
* Removed xctest testing framework, now just uses xcodebuild.
* Explicitly specify which headers are public in Cocoapods spec.

# 4.3.0 Release Candidate 3 Release Notes (Since RC 2)
### Bug Fixes
* Fixed a bug where large putfiles would crash.

### Other
* Updated to base v4.2.4

# 4.3.0 Release Candidate 2 Release Notes (Since RC 1)
### Bug Fixes
* Updated project to Xcode 8 settings and turn on additional warnings and analyzer settings.
* Fixed `SDLConsoleController` not using `NSLocalizedString` macro.
* Fixed example app declaring a `UIModalPresentationStyle` enum as `UIModalTransitionStyle` causing a build error in Xcode 8.
* Update testing deps to work with Xcode 8.

### Example App
* Add iTunes file sharing to the example app to allow for easier file log retrieval.

# 4.3.0 Release Candidate 1 Release Notes (Since Beta 4)
### Enhancements
* Removed all usages of NSLog. Now all logs can be turned on or off.
* SDL logs are now off by default in the default lifecycle configuration, console logs are on by default in the debug lifecycle configuration.
* SDLLockScreenViewController is now public and may be subclassed and used as a custom view controller. If subclassed, the vehicleIcon property will be set if the remote system sends one.

### Bug Fixes
* Fixed an issue with dynamic frameworks accessing the default lock screen resources.
* Fixed a crash relating to an OnAppInterfaceUnregistered notification.

### Example App
* Fixed initial data being sent multiple times.
* Fixed CreateInteractionChoiceSet being sent multiple times and sometimes not working.
* Fixed implementing a delegate method that no longer exists.
* Fixed UI buttons not updating upon connecting.
* Added a soft button.

# 4.3.0 Beta 4 Release Notes (Since Beta 3)
### Enhancements
* Fix resource bundle not being included via cocoapods, causing a failure on the default lock screen. Also added better failure messages. The resource bundle will still have to be manually added to your app's copy resources build phase.
* Reduced resource bundle size by optimizing lock screen images.
* RPC handlers are no longer readonly and can now be set outside of the init.
* Improved the example app with additional code and features to see how the new dev api works. Stay tuned for a few additional features.

# 4.3.0 Beta 3 Release Notes (Since Beta 2)
### Breaking Changes
* `resumeHash` is now a configuration property and is not automatically handled.
* `SDLFile` and `SDLArtwork` initializers no longer contain "ephemeral", these are renamed to simply start with "file" since they are the default case.
* `SDLManagerDelegate` no longer has the method `managerDidBecomeReady`. Use the ready block on `start` instead.
* `SDLManagerDelegate` parameters are now nonnull.
* `SDLLockScreenConfiguration` `showInOptional` is now `showInOptionalState`.
* `SDLLifecycleConfiguration` `port` is now a `UInt16` instead of a `NSString`.
* Many block parameters changed names to be more consistent and descriptive.

### Enhancements
* The `OnKeyboardInput` RPC notification is now properly included and sent.
* `SDLLifecycleManager` now only sends the "Ready" notification if registration succeeded.
* `SDLManagerDelegate` `hmiLevel:didChangeToLevel:` is now sent right after becoming ready with the current HMI level.
* `SDLLifecycleConfiguration` `ipAddress` is now null_resettable.
* `SDLLifecycleConfiguration` can now contain security managers which will properly be added to the internal `SDLProxy` as appropriate.
* `SDLLifecycleConfiguration` now has a `logFlags` parameter which can be set to alter how SDL logs out data or to prevent it from doing so at all.
* If `RegisterAppInterfaceResponse` returns `WARNINGS` or `RESUME_FAILED` still successfully connect, but set the error properly of the ready block with the relevant information.
* Added backward compatible `NSNotification` subclasses to more clearly describe what type of object it contains.
* Documentation enhancements.

### Bug Fixes
* `SDLFileManager` `deleteRemoteFileWithName:completionHandler:` no longer crashes if no completion handler is set.
* `SDLFileManager` `uploadRemoteFileWithName:completionHandler:` no longer crashes if no completion handler is set.
* `SDLFileManager` will more efficiently clean up temporary files.
* Remove some unneeded methods from `SDLLockScreenViewController`.
* Properly send `AppHMIType` and `TTSName` set in `SDLLifecycleConfiguration` to the `RegisterAppInterface`.
* Strong / weak dance bugs fixed.
* Unit test fixes.

### Internal enhancements
* `SDLStateMachine` now has some public keys to help accessing data internally.
* `SDLResponseDispatcher` updates: fixing a method name, fixing an enum equality check, clarity updates.
* `SDLLifecycleManager` remove `stateTransitionNotificationName`.
* Some `NSOperation` subclass code was shifted to an intermediate superclass.
* Fixed some instance variables not having generics.
* Updated code to match v4.2.3.

# 4.3.0 Beta 2 Release Notes (Since Beta 1)
### Enhancements
* Starting up `SDLManager` now requires a block which will pass back an error if it failed.
* `SDLManager` now provides a method to call in `AppDelegate applicationWillTerminate:` that will prevent killed apps from being unable to re-register.

### Bug Fixes
* Fixed a memory leak caused by the strong / weak block dance.

### Other
* Currently removed automatic resumption. Resumption will return in a future build as a manual configuration pass in.

# 4.3.0 Beta 1 Release Notes (Since Alpha 1)
### Breaking Changes
* State machine transition names are no longer public to allow for behind the scenes changes without minor or major version changes.

### Enhancements
* SDLFile, if initialized with NSData, will no longer write that data to disk, instead, it is stored in RAM. SDLFiles initialized with a file URL will continue to keep that data on disk until needed.
* The default lock screen text is now localized into Spanish, French, German, Japenese, and Chinese.

### Bug Fixes
* If the lifecycle manager or any of its consituent managers fail to start, the lifecycle manager will disconnect or unregister and an error will be logged.
* SDLLockScreenManager should use less RAM.
* Fixed test failures.

# 4.3.0 Alpha 1 Release Notes
### Deprecations
* Deprecate SDLProxy in favor of SDLManager. A future major release will remove and alter many public APIs, but they will not be deprecated in this release because they will not be replaced in this release.

### Enhancements
* Release a whole new way of reasoning about interacting with SDL. This new high-level API, and it is largely modular with "managers" for various aspects of SDL. This will be extended as time goes on with various new managers based on aspects of SDL and app development (#223, #241, #298). @joeljfischer, @adein, @justinjdickow, @asm09fsu
* Add a new set of configurations that will be set before startup and allows the manager to take care of quite a bit of setup boilerplate on its own.
* Release a Permission Manager that allows a developer to check which SDL RPCs are avaiable to use and monitor the ability to use them.
* Release a File Manager that abstracts the process of tracking files on the remote head unit, uploading, and deleting files.
* Release a Lock Screen Manager that tracks appropriate times to show a lock screen and comes with a default lock screen view controller that allows for some customizability.
* All RPCs sent through the primary manager (SDLManager) are tracked and can have a block called with the request and response when the response is returned from the remote head unit.
* All RPCs sent will have their correlation ids managed by the SDL library.
* Particular RPCs can now have an additional block used with them that can be called under certain conditions. For example, RPCs that create buttons (such as soft buttons) can have a block handler that will be called when an event occurs on the button.
* Underlying the new high-level API are a few dispatchers, particularly the Notification Dispatcher which sends many notifications when new RPC notifications and responses are sent from the remote head unit. This may be used by the developer now, but will become less useful as more managers are released.

# 4.2.4 Release Notes
### Bug Fixes
* Fixed Touch Manager not always firing single touches.
Expand Down
1 change: 1 addition & 0 deletions Cartfile.private
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ github "Quick/Quick" ~> 0.9
github "Quick/Nimble" ~> 4.0
github "AliSoftware/OHHTTPStubs" ~> 5.0
github "erikdoe/ocmock" ~> 3.3
github "facebook/ios-snapshot-test-case" == 2.1.3
1 change: 1 addition & 0 deletions Cartfile.resolved
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
github "Quick/Nimble" "v4.1.0"
github "AliSoftware/OHHTTPStubs" "5.2.1"
github "Quick/Quick" "v0.9.3"
github "facebook/ios-snapshot-test-case" "2.1.3"
github "erikdoe/ocmock" "v3.3.1"
35 changes: 33 additions & 2 deletions DEPENDENCIES.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
## Non-Library Dependencies
## Test Dependencies

### Quick
Apache License
Expand Down Expand Up @@ -535,4 +535,35 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

### FBSnapshotTestCase
BSD License

For the FBSnapshotTestCase software

Copyright (c) 2013, Facebook, Inc.
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* 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.
* Neither the name Facebook nor the names of its contributors may be used to
endorse or promote products derived from this software without specific
prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 THE COPYRIGHT HOLDER 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.

0 comments on commit 63f0945

Please sign in to comment.