summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicoleYarroch <nicole@livio.io>2018-04-05 15:32:35 -0400
committerNicoleYarroch <nicole@livio.io>2018-04-05 15:32:35 -0400
commit195c001c0bda653f1d145b1c84c3299a5ca2fcd9 (patch)
treeba09ea17b32422594bf533c444d3e6a7810511bd
parent6427905fdacd576b87352f576dd290afc5ccec43 (diff)
downloadsdl_ios-195c001c0bda653f1d145b1c84c3299a5ca2fcd9.tar.gz
System capability manager now observes SDLDidReceiveGetSystemCapabilitiesResponse
-rw-r--r--SmartDeviceLink/SDLSystemCapabilityManager.m45
-rw-r--r--SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m59
2 files changed, 75 insertions, 29 deletions
diff --git a/SmartDeviceLink/SDLSystemCapabilityManager.m b/SmartDeviceLink/SDLSystemCapabilityManager.m
index bdd57c488..f8782651d 100644
--- a/SmartDeviceLink/SDLSystemCapabilityManager.m
+++ b/SmartDeviceLink/SDLSystemCapabilityManager.m
@@ -55,7 +55,7 @@ NS_ASSUME_NONNULL_BEGIN
}
_connectionManager = manager;
- [self sdl_registerForNotifications];
+ [self sdl_registerForNotifications];
return self;
}
@@ -66,10 +66,12 @@ NS_ASSUME_NONNULL_BEGIN
-(void)sdl_registerForNotifications {
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_registerResponse:) name:SDLDidReceiveRegisterAppInterfaceResponse object:nil];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_displayLayoutResponse:) name:SDLDidReceiveSetDisplayLayoutResponse object:nil];
+ [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(sdl_systemCapabilityResponse:) name:SDLDidReceiveGetSystemCapabilitiesResponse object:nil];
}
- (void)sdl_registerResponse:(SDLRPCResponseNotification *)notification {
SDLRegisterAppInterfaceResponse *response = (SDLRegisterAppInterfaceResponse *)notification.response;
+ if (!response.success) { return; }
self.displayCapabilities = response.displayCapabilities;
self.hmiCapabilities = response.hmiCapabilities;
@@ -86,6 +88,7 @@ NS_ASSUME_NONNULL_BEGIN
- (void)sdl_displayLayoutResponse:(SDLRPCResponseNotification *)notification {
SDLSetDisplayLayoutResponse *response = (SDLSetDisplayLayoutResponse *)notification.response;
+ if (!response.success) { return; }
self.displayCapabilities = response.displayCapabilities;
self.buttonCapabilities = response.buttonCapabilities;
@@ -93,6 +96,13 @@ NS_ASSUME_NONNULL_BEGIN
self.presetBankCapabilities = response.presetBankCapabilities;
}
+- (void)sdl_systemCapabilityResponse:(SDLRPCResponseNotification *)notification {
+ SDLGetSystemCapabilityResponse *response = (SDLGetSystemCapabilityResponse *)notification.response;
+ if (!response.success) { return; }
+
+ SDLSystemCapability *systemCapabilityResponse = ((SDLGetSystemCapabilityResponse *)response).systemCapability;
+ [self sdl_saveSystemCapabilityResponse:systemCapabilityResponse];
+}
#pragma mark - Capability Request
@@ -100,29 +110,32 @@ NS_ASSUME_NONNULL_BEGIN
SDLGetSystemCapability *getSystemCapability = [[SDLGetSystemCapability alloc] initWithType:type];
[self.connectionManager sendConnectionRequest:getSystemCapability withResponseHandler:^(__kindof SDLRPCRequest *request, __kindof SDLRPCResponse *response, NSError *error) {
if (!response.success.boolValue || [response isMemberOfClass:SDLGenericResponse.class]) {
- SDLLogW(@"%@ system capability response failed: %@", type, error);
+ SDLLogW(@"Get System Capability request for %@ failed: %@", type, error);
return handler(error, self);
}
SDLSystemCapability *systemCapabilityResponse = ((SDLGetSystemCapabilityResponse *)response).systemCapability;
- SDLSystemCapabilityType systemCapabilityType = systemCapabilityResponse.systemCapabilityType;
-
- if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypePhoneCall]) {
- self.phoneCapability = systemCapabilityResponse.phoneCapability;
- } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeNavigation]) {
- self.navigationCapability = systemCapabilityResponse.navigationCapability;
- } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeRemoteControl]) {
- self.remoteControlCapability = systemCapabilityResponse.remoteControlCapability;
- } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeVideoStreaming]) {
- self.videoStreamingCapability = systemCapabilityResponse.videoStreamingCapability;
- } else {
- SDLLogW(@"Received response for unknown System Capability Type: %@", systemCapabilityType);
- }
-
+ [self sdl_saveSystemCapabilityResponse:systemCapabilityResponse];
handler(nil, self);
}];
}
+- (void)sdl_saveSystemCapabilityResponse:(SDLSystemCapability *)systemCapabilityResponse {
+ SDLSystemCapabilityType systemCapabilityType = systemCapabilityResponse.systemCapabilityType;
+
+ if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypePhoneCall]) {
+ self.phoneCapability = systemCapabilityResponse.phoneCapability;
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeNavigation]) {
+ self.navigationCapability = systemCapabilityResponse.navigationCapability;
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeRemoteControl]) {
+ self.remoteControlCapability = systemCapabilityResponse.remoteControlCapability;
+ } else if ([systemCapabilityType isEqualToEnum:SDLSystemCapabilityTypeVideoStreaming]) {
+ self.videoStreamingCapability = systemCapabilityResponse.videoStreamingCapability;
+ } else {
+ SDLLogW(@"Received response for unknown System Capability Type: %@", systemCapabilityType);
+ }
+}
+
@end
NS_ASSUME_NONNULL_END
diff --git a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
index c65a3c0e1..bc5413e94 100644
--- a/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
+++ b/SmartDeviceLinkTests/SDLSystemCapabilityManagerSpec.m
@@ -69,10 +69,15 @@ describe(@"System capability manager", ^{
context(@"When notified of a register app interface response", ^{
__block SDLRegisterAppInterfaceResponse *testRegisterAppInterfaceResponse = nil;
- it(@"should not save any capabilities if all the capabilities in the RAI response are nil", ^{
+
+ beforeEach(^{
testRegisterAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
});
+ it(@"should not save any capabilities the request fails", ^{
+ testRegisterAppInterfaceResponse.success = @NO;
+ });
+
it(@"should should save the correct capabilities if all capabilities in the RAI response are valid", ^{
testDisplayCapabilities = [[SDLDisplayCapabilities alloc] init];
testDisplayCapabilities.graphicSupported = @NO;
@@ -111,7 +116,7 @@ describe(@"System capability manager", ^{
testAudioPassThruCapabilities = @[audioPassThruCapability];
testPCMStreamCapabilities = audioPassThruCapability;
- testRegisterAppInterfaceResponse = [[SDLRegisterAppInterfaceResponse alloc] init];
+ testRegisterAppInterfaceResponse.success = @YES;
testRegisterAppInterfaceResponse.displayCapabilities = testDisplayCapabilities;
testRegisterAppInterfaceResponse.hmiCapabilities = testHMICapabilities;
testRegisterAppInterfaceResponse.softButtonCapabilities = testSoftButtonCapabilities;
@@ -136,12 +141,12 @@ describe(@"System capability manager", ^{
context(@"When notified of a set display layout response", ^ {
__block SDLSetDisplayLayoutResponse *testSetDisplayLayoutResponse = nil;
- it(@"should not save any capabilities if all the capabilities in the set display layout response are nil", ^{
+ beforeEach(^{
testSetDisplayLayoutResponse = [[SDLSetDisplayLayoutResponse alloc] init];
- testSetDisplayLayoutResponse.displayCapabilities = nil;
- testSetDisplayLayoutResponse.buttonCapabilities = nil;
- testSetDisplayLayoutResponse.softButtonCapabilities = nil;
- testSetDisplayLayoutResponse.presetBankCapabilities = nil;
+ });
+
+ it(@"should not save any capabilities if all the capabilities in the set display layout response are nil", ^{
+ testSetDisplayLayoutResponse.success = @NO;
});
it(@"should should save the correct capabilities if all capabilities in the set display layout response are valid", ^{
@@ -165,7 +170,7 @@ describe(@"System capability manager", ^{
testPresetBankCapabilities = [[SDLPresetBankCapabilities alloc] init];
testPresetBankCapabilities.onScreenPresetsAvailable = @NO;
- testSetDisplayLayoutResponse = [[SDLSetDisplayLayoutResponse alloc] init];
+ testSetDisplayLayoutResponse.success = @YES;
testSetDisplayLayoutResponse.displayCapabilities = testDisplayCapabilities;
testSetDisplayLayoutResponse.buttonCapabilities = testButtonCapabilities;
testSetDisplayLayoutResponse.softButtonCapabilities = testSoftButtonCapabilities;
@@ -197,7 +202,7 @@ describe(@"System capability manager", ^{
testGetSystemCapabilityResponse.success = @YES;
testGetSystemCapabilityResponse.systemCapability = [[SDLSystemCapability alloc] init];
testGetSystemCapabilityResponse.systemCapability.phoneCapability = testPhoneCapability;
- testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = SDLSystemCapabilityTypePhoneCall;
+ testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = systemCapabilityType;
});
it(@"should save the navigation capabilities", ^{
@@ -207,7 +212,7 @@ describe(@"System capability manager", ^{
testGetSystemCapabilityResponse.success = @YES;
testGetSystemCapabilityResponse.systemCapability = [[SDLSystemCapability alloc] init];
testGetSystemCapabilityResponse.systemCapability.navigationCapability = testNavigationCapability;
- testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = SDLSystemCapabilityTypeNavigation;
+ testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = systemCapabilityType;
});
it(@"should save the remote control capabilities", ^{
@@ -217,7 +222,7 @@ describe(@"System capability manager", ^{
testGetSystemCapabilityResponse.success = @YES;
testGetSystemCapabilityResponse.systemCapability = [[SDLSystemCapability alloc] init];
testGetSystemCapabilityResponse.systemCapability.remoteControlCapability = testRemoteControlCapability;
- testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = SDLSystemCapabilityTypeRemoteControl;
+ testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = systemCapabilityType;
});
it(@"should save the video streaming capabilities", ^{
@@ -227,7 +232,7 @@ describe(@"System capability manager", ^{
testGetSystemCapabilityResponse.success = @YES;
testGetSystemCapabilityResponse.systemCapability = [[SDLSystemCapability alloc] init];
testGetSystemCapabilityResponse.systemCapability.videoStreamingCapability = testVideoStreamingCapability;
- testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = SDLSystemCapabilityTypeVideoStreaming;
+ testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = systemCapabilityType;
});
it(@"should return the error if the request is not successful", ^{
@@ -238,7 +243,7 @@ describe(@"System capability manager", ^{
testGetSystemCapabilityResponse.success = @NO;
testGetSystemCapabilityResponse.systemCapability = [[SDLSystemCapability alloc] init];
testGetSystemCapabilityResponse.systemCapability.videoStreamingCapability = nil;
- testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = SDLSystemCapabilityTypeVideoStreaming;
+ testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = systemCapabilityType;
});
afterEach(^{
@@ -256,6 +261,34 @@ describe(@"System capability manager", ^{
});
});
+ context(@"If a Get System Capability request is sent outside of this manager", ^{
+ __block SDLGetSystemCapabilityResponse *testGetSystemCapabilityResponse = nil;
+
+ beforeEach(^{
+ testGetSystemCapabilityResponse = [[SDLGetSystemCapabilityResponse alloc] init];
+ });
+
+ it(@"should capture and save the capability type in the manager", ^{
+ testNavigationCapability = [[SDLNavigationCapability alloc] initWithSendLocation:YES waypoints:YES];
+
+ testGetSystemCapabilityResponse.success = @YES;
+ testGetSystemCapabilityResponse.systemCapability = [[SDLSystemCapability alloc] init];
+ testGetSystemCapabilityResponse.systemCapability.navigationCapability = testNavigationCapability;
+ testGetSystemCapabilityResponse.systemCapability.systemCapabilityType = SDLSystemCapabilityTypeNavigation;
+ });
+
+ it(@"should not save any capabilities if the request failed", ^{
+ testGetSystemCapabilityResponse.success = @NO;
+ });
+
+ afterEach(^{
+ SDLRPCResponseNotification *notification = [[SDLRPCResponseNotification alloc] initWithName:SDLDidReceiveGetSystemCapabilitiesResponse object:self rpcResponse:testGetSystemCapabilityResponse];
+
+ [[NSNotificationCenter defaultCenter] postNotification:notification];
+ [NSThread sleepForTimeInterval:0.1];
+ });
+ });
+
afterEach(^{
expect(testSystemCapabilityManager.displayCapabilities).to(testDisplayCapabilities != nil ? equal(testDisplayCapabilities) : beNil());
expect(testSystemCapabilityManager.hmiCapabilities).to(testHMICapabilities != nil ? equal(testHMICapabilities) : beNil());