iCuke 0.6.3 → 0.6.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitmodules +1 -1
- data/Gemfile +12 -0
- data/Gemfile.lock +41 -0
- data/README.markdown +126 -0
- data/Rakefile +34 -12
- data/VERSION +1 -1
- data/bin/icuke +12 -10
- data/ext/Rakefile +6 -0
- data/ext/iCuke/{sdk3.1/DefaultsResponse.h → DefaultsResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/DefaultsResponse.m → DefaultsResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/EventResponse.h → EventResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/EventResponse.m → EventResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/ModuleResponse.h → ModuleResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/ModuleResponse.m → ModuleResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/QuitResponse.h → QuitResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/QuitResponse.m → QuitResponse.m} +0 -0
- data/ext/iCuke/Rakefile +14 -13
- data/ext/iCuke/{sdk3.1/Recorder.h → Recorder.h} +0 -0
- data/ext/iCuke/{sdk3.1/Recorder.m → Recorder.m} +0 -0
- data/ext/iCuke/{sdk3.1/RecorderResponse.h → RecorderResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/RecorderResponse.m → RecorderResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/SynthesizeSingleton.h → SynthesizeSingleton.h} +0 -0
- data/ext/iCuke/{sdk3.1/ViewResponse.h → ViewResponse.h} +0 -0
- data/ext/iCuke/{sdk3.1/ViewResponse.m → ViewResponse.m} +0 -0
- data/ext/iCuke/{sdk3.1/Viewer.h → Viewer.h} +0 -0
- data/ext/iCuke/{sdk4.0/Viewer.m → Viewer.m} +0 -0
- data/ext/iCuke/{sdk3.1/iCukeHTTPResponseHandler.h → iCukeHTTPResponseHandler.h} +0 -0
- data/ext/iCuke/{sdk3.1/iCukeHTTPResponseHandler.m → iCukeHTTPResponseHandler.m} +0 -0
- data/ext/iCuke/{sdk3.1/iCukeHTTPServer.h → iCukeHTTPServer.h} +0 -0
- data/ext/iCuke/{sdk4.0/iCukeHTTPServer.m → iCukeHTTPServer.m} +4 -2
- data/ext/iCuke/{sdk3.1/iCukeServer.h → iCukeServer.h} +0 -0
- data/ext/iCuke/{sdk3.1/iCukeServer.m → iCukeServer.m} +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/JSON.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/NSObject+SBJSON.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/NSObject+SBJSON.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/NSString+SBJSON.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/NSString+SBJSON.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJSON.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJSON.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonBase.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonBase.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonParser.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonParser.m +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonWriter.h +0 -0
- data/ext/iCuke/{sdk3.1/json → json}/SBJsonWriter.m +0 -0
- data/features/starting_project.feature +18 -0
- data/features/step_definitions/shell.rb +41 -0
- data/features/support/env.rb +2 -0
- data/features/support/environment.rb +40 -0
- data/features/supported_sdks.feature +12 -0
- data/iCuke.gemspec +149 -161
- data/lib/icuke/configuration.rb +19 -0
- data/lib/icuke/core_ext.rb +27 -0
- data/lib/icuke/cucumber.rb +29 -265
- data/lib/icuke/cucumber_compat.rb +4 -0
- data/lib/icuke/icuke_world.rb +149 -0
- data/lib/icuke/sdk.rb +5 -13
- data/lib/icuke/simulator_driver.rb +201 -0
- data/lib/icuke/waxsim.rb +47 -9
- data/spec/cucumber_spec.rb +130 -0
- data/spec/fixtures/controls_page.xml +252 -0
- data/spec/process_spec.rb +76 -0
- data/spec/screen_spec.rb +173 -0
- data/spec/simulate_spec.rb +75 -0
- data/spec/simulator_spec.rb +28 -0
- data/spec/spec.opts +2 -0
- data/spec/spec_helper.rb +67 -0
- metadata +222 -121
- data/.gitignore +0 -15
- data/README.rdoc +0 -68
- data/ext/WaxSim/Simulator.h +0 -31
- data/ext/WaxSim/Simulator.m +0 -131
- data/ext/WaxSim/WaxSim.m +0 -110
- data/ext/WaxSim/WaxSim.xcodeproj/project.pbxproj +0 -238
- data/ext/WaxSim/WaxSim_Prefix.pch +0 -7
- data/ext/WaxSim/build/Release/waxsim +0 -0
- data/ext/WaxSim/build/Release/waxsim.dSYM/Contents/Info.plist +0 -20
- data/ext/WaxSim/build/Release/waxsim.dSYM/Contents/Resources/DWARF/waxsim +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/Objects-normal/x86_64/Simulator.o +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/Objects-normal/x86_64/WaxSim.o +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/Objects-normal/x86_64/waxsim.LinkFileList +0 -2
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/WaxSim.dep +0 -6
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/WaxSim~.dep +0 -6
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/build-state.dat +0 -227
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/build-state~.dat +0 -227
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim-all-target-headers.hmap +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim-generated-files.hmap +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim-own-target-headers.hmap +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim-project-headers.hmap +0 -0
- data/ext/WaxSim/build/WaxSim.build/Release/WaxSim.build/waxsim.hmap +0 -0
- data/ext/WaxSim/iPhoneSimulatorRemoteClient/iPhoneSimulatorRemoteClient.h +0 -126
- data/ext/iCuke/sdk3.1/Rakefile +0 -20
- data/ext/iCuke/sdk3.1/Viewer.m +0 -203
- data/ext/iCuke/sdk3.1/iCukeHTTPServer.m +0 -365
- data/ext/iCuke/sdk4.0/DefaultsResponse.h +0 -5
- data/ext/iCuke/sdk4.0/DefaultsResponse.m +0 -66
- data/ext/iCuke/sdk4.0/EventResponse.h +0 -5
- data/ext/iCuke/sdk4.0/EventResponse.m +0 -130
- data/ext/iCuke/sdk4.0/ModuleResponse.h +0 -5
- data/ext/iCuke/sdk4.0/ModuleResponse.m +0 -76
- data/ext/iCuke/sdk4.0/QuitResponse.h +0 -5
- data/ext/iCuke/sdk4.0/QuitResponse.m +0 -23
- data/ext/iCuke/sdk4.0/Rakefile +0 -20
- data/ext/iCuke/sdk4.0/Recorder.h +0 -17
- data/ext/iCuke/sdk4.0/Recorder.m +0 -90
- data/ext/iCuke/sdk4.0/RecorderResponse.h +0 -6
- data/ext/iCuke/sdk4.0/RecorderResponse.m +0 -68
- data/ext/iCuke/sdk4.0/SynthesizeSingleton.h +0 -68
- data/ext/iCuke/sdk4.0/ViewResponse.h +0 -5
- data/ext/iCuke/sdk4.0/ViewResponse.m +0 -84
- data/ext/iCuke/sdk4.0/Viewer.h +0 -8
- data/ext/iCuke/sdk4.0/iCukeHTTPResponseHandler.h +0 -50
- data/ext/iCuke/sdk4.0/iCukeHTTPResponseHandler.m +0 -381
- data/ext/iCuke/sdk4.0/iCukeHTTPServer.h +0 -53
- data/ext/iCuke/sdk4.0/iCukeServer.h +0 -14
- data/ext/iCuke/sdk4.0/iCukeServer.m +0 -65
- data/ext/iCuke/sdk4.0/json/JSON.h +0 -50
- data/ext/iCuke/sdk4.0/json/NSObject+SBJSON.h +0 -68
- data/ext/iCuke/sdk4.0/json/NSObject+SBJSON.m +0 -53
- data/ext/iCuke/sdk4.0/json/NSString+SBJSON.h +0 -58
- data/ext/iCuke/sdk4.0/json/NSString+SBJSON.m +0 -55
- data/ext/iCuke/sdk4.0/json/SBJSON.h +0 -75
- data/ext/iCuke/sdk4.0/json/SBJSON.m +0 -212
- data/ext/iCuke/sdk4.0/json/SBJsonBase.h +0 -86
- data/ext/iCuke/sdk4.0/json/SBJsonBase.m +0 -78
- data/ext/iCuke/sdk4.0/json/SBJsonParser.h +0 -87
- data/ext/iCuke/sdk4.0/json/SBJsonParser.m +0 -475
- data/ext/iCuke/sdk4.0/json/SBJsonWriter.h +0 -129
- data/ext/iCuke/sdk4.0/json/SBJsonWriter.m +0 -228
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
#import "DefaultsResponse.h"
|
|
2
|
-
#import "iCukeHTTPServer.h"
|
|
3
|
-
#import "JSON.h"
|
|
4
|
-
|
|
5
|
-
@implementation DefaultsResponse
|
|
6
|
-
+ (void)load
|
|
7
|
-
{
|
|
8
|
-
[iCukeHTTPResponseHandler registerHandler:self];
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
+ (BOOL)canHandleRequest:(CFHTTPMessageRef)aRequest
|
|
12
|
-
method:(NSString *)requestMethod
|
|
13
|
-
url:(NSURL *)requestURL
|
|
14
|
-
headerFields:(NSDictionary *)requestHeaderFields
|
|
15
|
-
{
|
|
16
|
-
return [requestURL.path isEqualToString:@"/defaults"];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
- (void)startResponse
|
|
20
|
-
{
|
|
21
|
-
NSUserDefaults *user_defaults = [NSUserDefaults standardUserDefaults];
|
|
22
|
-
NSString *json = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
23
|
-
NSData *defaultsData = nil;
|
|
24
|
-
|
|
25
|
-
if (!json) {
|
|
26
|
-
NSDictionary *defaults = [user_defaults dictionaryRepresentation];
|
|
27
|
-
|
|
28
|
-
defaultsData = [[defaults JSONRepresentation] dataUsingEncoding:NSUTF8StringEncoding];
|
|
29
|
-
} else {
|
|
30
|
-
id parsed_json = [json JSONValue];
|
|
31
|
-
|
|
32
|
-
NSEnumerator *enumerator = [parsed_json keyEnumerator];
|
|
33
|
-
id key;
|
|
34
|
-
while ((key = [enumerator nextObject])) {
|
|
35
|
-
[user_defaults setObject: [parsed_json objectForKey: key] forKey: key];
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
CFHTTPMessageRef response = CFHTTPMessageCreateResponse(kCFAllocatorDefault, 200, NULL, kCFHTTPVersion1_1);
|
|
40
|
-
CFHTTPMessageSetHeaderFieldValue(response, (CFStringRef)@"Connection", (CFStringRef)@"close");
|
|
41
|
-
CFHTTPMessageSetHeaderFieldValue(response, (CFStringRef)@"Content-Type", (CFStringRef)@"application/json");
|
|
42
|
-
|
|
43
|
-
if (defaultsData)
|
|
44
|
-
CFHTTPMessageSetHeaderFieldValue(response, (CFStringRef)@"Content-Length",
|
|
45
|
-
(CFStringRef)[NSString stringWithFormat:@"%ld", [defaultsData length]]);
|
|
46
|
-
|
|
47
|
-
CFDataRef headerData = CFHTTPMessageCopySerializedMessage(response);
|
|
48
|
-
|
|
49
|
-
@try
|
|
50
|
-
{
|
|
51
|
-
[fileHandle writeData:(NSData *)headerData];
|
|
52
|
-
if (defaultsData)
|
|
53
|
-
[fileHandle writeData:defaultsData];
|
|
54
|
-
}
|
|
55
|
-
@catch (NSException *exception)
|
|
56
|
-
{
|
|
57
|
-
// Ignore the exception, it normally just means the client
|
|
58
|
-
// closed the connection from the other end.
|
|
59
|
-
}
|
|
60
|
-
@finally
|
|
61
|
-
{
|
|
62
|
-
CFRelease(headerData);
|
|
63
|
-
[server closeHandler:self];
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
@end
|
|
@@ -1,130 +0,0 @@
|
|
|
1
|
-
#import "EventResponse.h"
|
|
2
|
-
#import "iCukeHTTPServer.h"
|
|
3
|
-
#import "JSON.h"
|
|
4
|
-
#import "Recorder.h"
|
|
5
|
-
|
|
6
|
-
typedef struct {
|
|
7
|
-
unsigned char index;
|
|
8
|
-
unsigned char index2;
|
|
9
|
-
unsigned char type;
|
|
10
|
-
unsigned char flags;
|
|
11
|
-
float sizeX;
|
|
12
|
-
float sizeY;
|
|
13
|
-
float x;
|
|
14
|
-
float y;
|
|
15
|
-
int x6;
|
|
16
|
-
} gs_path_info_t;
|
|
17
|
-
|
|
18
|
-
typedef struct {
|
|
19
|
-
int type;
|
|
20
|
-
short deltaX;
|
|
21
|
-
short deltaY;
|
|
22
|
-
float x3;
|
|
23
|
-
float x4;
|
|
24
|
-
float pinch1;
|
|
25
|
-
float pinch2;
|
|
26
|
-
float averageX;
|
|
27
|
-
float averageY;
|
|
28
|
-
unsigned char x9_1;
|
|
29
|
-
unsigned char pathCount;
|
|
30
|
-
unsigned char x9_3;
|
|
31
|
-
unsigned char x9_4;
|
|
32
|
-
} gs_hand_info_t;
|
|
33
|
-
|
|
34
|
-
@implementation EventResponse
|
|
35
|
-
+ (void)load
|
|
36
|
-
{
|
|
37
|
-
[iCukeHTTPResponseHandler registerHandler:self];
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
+ (BOOL)canHandleRequest:(CFHTTPMessageRef)aRequest
|
|
41
|
-
method:(NSString *)requestMethod
|
|
42
|
-
url:(NSURL *)requestURL
|
|
43
|
-
headerFields:(NSDictionary *)requestHeaderFields
|
|
44
|
-
{
|
|
45
|
-
return [requestURL.path isEqualToString:@"/event"];
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
- (void)startResponse
|
|
49
|
-
{
|
|
50
|
-
NSString *json = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
51
|
-
id event_data = [json JSONValue];
|
|
52
|
-
NSArray *events;
|
|
53
|
-
|
|
54
|
-
if ([event_data isKindOfClass:[NSDictionary class]]) {
|
|
55
|
-
events = [NSArray arrayWithObject: event_data];
|
|
56
|
-
} else {
|
|
57
|
-
events = event_data;
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
for (NSMutableDictionary *event in events) {
|
|
61
|
-
gs_hand_info_t hand_info;
|
|
62
|
-
|
|
63
|
-
bzero(&hand_info, sizeof(hand_info));
|
|
64
|
-
|
|
65
|
-
NSMutableDictionary *data = [event objectForKey: @"Data"];
|
|
66
|
-
|
|
67
|
-
hand_info.type = [[data objectForKey: @"Type"] integerValue];
|
|
68
|
-
NSDictionary *delta = [data objectForKey: @"Delta"];
|
|
69
|
-
hand_info.deltaX = [[delta objectForKey: @"X"] shortValue];
|
|
70
|
-
hand_info.deltaY = [[delta objectForKey: @"Y"] shortValue];
|
|
71
|
-
hand_info.averageX = [[[delta objectForKey: @"WindowLocation"] objectForKey: @"X"] floatValue];
|
|
72
|
-
hand_info.averageY = [[[delta objectForKey: @"WindowLocation"] objectForKey: @"Y"] floatValue];
|
|
73
|
-
|
|
74
|
-
NSArray *points = [data objectForKey: @"Paths"];
|
|
75
|
-
|
|
76
|
-
hand_info.pathCount = (unsigned char)[points count];
|
|
77
|
-
if (hand_info.type != 1) {
|
|
78
|
-
hand_info.x9_3 = 0x7c;
|
|
79
|
-
hand_info.x9_4 = 0x98;
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
NSMutableData *raw_data = [NSMutableData dataWithBytes: &hand_info length: sizeof(hand_info)];
|
|
83
|
-
|
|
84
|
-
int index = hand_info.pathCount == 1 ? 2 : 1;
|
|
85
|
-
|
|
86
|
-
for (NSDictionary *point in points) {
|
|
87
|
-
gs_path_info_t path_info;
|
|
88
|
-
|
|
89
|
-
bzero(&path_info, sizeof(path_info));
|
|
90
|
-
|
|
91
|
-
path_info.index = path_info.index2 = index++;
|
|
92
|
-
path_info.type = hand_info.type == 6 ? 1 : 2;
|
|
93
|
-
path_info.flags = hand_info.type == 1 ? 0x43 : 0x3f;
|
|
94
|
-
path_info.sizeX = [[[point objectForKey: @"Size"] objectForKey: @"X"] floatValue];
|
|
95
|
-
path_info.sizeY = [[[point objectForKey: @"Size"] objectForKey: @"Y"] floatValue];
|
|
96
|
-
path_info.x = [[[point objectForKey: @"Location"] objectForKey: @"X"] floatValue];
|
|
97
|
-
path_info.y = [[[point objectForKey: @"Location"] objectForKey: @"Y"] floatValue];
|
|
98
|
-
|
|
99
|
-
[raw_data appendBytes: &path_info length: sizeof(path_info)];
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
[event setObject: raw_data forKey: @"Data"];
|
|
103
|
-
}
|
|
104
|
-
|
|
105
|
-
[[Recorder sharedRecorder] load: events];
|
|
106
|
-
[[Recorder sharedRecorder] playbackWithDelegate: self doneSelector: @selector(finishResponse)];
|
|
107
|
-
}
|
|
108
|
-
|
|
109
|
-
- (void)finishResponse
|
|
110
|
-
{
|
|
111
|
-
CFHTTPMessageRef response = CFHTTPMessageCreateResponse(kCFAllocatorDefault, 200, NULL, kCFHTTPVersion1_1);
|
|
112
|
-
CFHTTPMessageSetHeaderFieldValue(response, (CFStringRef)@"Connection", (CFStringRef)@"close");
|
|
113
|
-
CFDataRef headerData = CFHTTPMessageCopySerializedMessage(response);
|
|
114
|
-
|
|
115
|
-
@try
|
|
116
|
-
{
|
|
117
|
-
[fileHandle writeData:(NSData *)headerData];
|
|
118
|
-
}
|
|
119
|
-
@catch (NSException *exception)
|
|
120
|
-
{
|
|
121
|
-
// Ignore the exception, it normally just means the client
|
|
122
|
-
// closed the connection from the other end.
|
|
123
|
-
}
|
|
124
|
-
@finally
|
|
125
|
-
{
|
|
126
|
-
CFRelease(headerData);
|
|
127
|
-
[server closeHandler:self];
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
@end
|
|
@@ -1,76 +0,0 @@
|
|
|
1
|
-
#import "ModuleResponse.h"
|
|
2
|
-
#import "iCukeHTTPServer.h"
|
|
3
|
-
#include <dlfcn.h>
|
|
4
|
-
|
|
5
|
-
@implementation ModuleResponse
|
|
6
|
-
+ (void)load
|
|
7
|
-
{
|
|
8
|
-
[iCukeHTTPResponseHandler registerHandler:self];
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
+ (BOOL)canHandleRequest:(CFHTTPMessageRef)aRequest
|
|
12
|
-
method:(NSString *)requestMethod
|
|
13
|
-
url:(NSURL *)requestURL
|
|
14
|
-
headerFields:(NSDictionary *)requestHeaderFields
|
|
15
|
-
{
|
|
16
|
-
return [requestURL.path isEqualToString:@"/module"];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
- (void)startResponse
|
|
20
|
-
{
|
|
21
|
-
NSString *module = [[url query] stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
22
|
-
|
|
23
|
-
if (!dlopen([module UTF8String], 0)) {
|
|
24
|
-
CFHTTPMessageRef response =
|
|
25
|
-
CFHTTPMessageCreateResponse(
|
|
26
|
-
kCFAllocatorDefault, 500, NULL, kCFHTTPVersion1_1);
|
|
27
|
-
CFHTTPMessageSetHeaderFieldValue(
|
|
28
|
-
response, (CFStringRef)@"Content-Type", (CFStringRef)@"text/plain");
|
|
29
|
-
CFHTTPMessageSetHeaderFieldValue(
|
|
30
|
-
response, (CFStringRef)@"Connection", (CFStringRef)@"close");
|
|
31
|
-
CFHTTPMessageSetBody(
|
|
32
|
-
response,
|
|
33
|
-
(CFDataRef)[[NSString stringWithFormat:
|
|
34
|
-
@"Unable to load module: %@, %s", module, dlerror()]
|
|
35
|
-
dataUsingEncoding:NSUTF8StringEncoding]);
|
|
36
|
-
CFDataRef headerData = CFHTTPMessageCopySerializedMessage(response);
|
|
37
|
-
@try
|
|
38
|
-
{
|
|
39
|
-
[fileHandle writeData:(NSData *)headerData];
|
|
40
|
-
}
|
|
41
|
-
@catch (NSException *exception)
|
|
42
|
-
{
|
|
43
|
-
// Ignore the exception, it normally just means the client
|
|
44
|
-
// closed the connection from the other end.
|
|
45
|
-
}
|
|
46
|
-
@finally
|
|
47
|
-
{
|
|
48
|
-
CFRelease(headerData);
|
|
49
|
-
CFRelease(response);
|
|
50
|
-
[server closeHandler:self];
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
CFHTTPMessageRef response = CFHTTPMessageCreateResponse(kCFAllocatorDefault, 200, NULL, kCFHTTPVersion1_1);
|
|
57
|
-
CFHTTPMessageSetHeaderFieldValue(response, (CFStringRef)@"Connection", (CFStringRef)@"close");
|
|
58
|
-
|
|
59
|
-
CFDataRef headerData = CFHTTPMessageCopySerializedMessage(response);
|
|
60
|
-
|
|
61
|
-
@try
|
|
62
|
-
{
|
|
63
|
-
[fileHandle writeData:(NSData *)headerData];
|
|
64
|
-
}
|
|
65
|
-
@catch (NSException *exception)
|
|
66
|
-
{
|
|
67
|
-
// Ignore the exception, it normally just means the client
|
|
68
|
-
// closed the connection from the other end.
|
|
69
|
-
}
|
|
70
|
-
@finally
|
|
71
|
-
{
|
|
72
|
-
CFRelease(headerData);
|
|
73
|
-
[server closeHandler:self];
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
@end
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
#import "QuitResponse.h"
|
|
2
|
-
#import "iCukeHTTPServer.h"
|
|
3
|
-
#import "JSON.h"
|
|
4
|
-
|
|
5
|
-
@implementation QuitResponse
|
|
6
|
-
+ (void)load
|
|
7
|
-
{
|
|
8
|
-
[iCukeHTTPResponseHandler registerHandler:self];
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
+ (BOOL)canHandleRequest:(CFHTTPMessageRef)aRequest
|
|
12
|
-
method:(NSString *)requestMethod
|
|
13
|
-
url:(NSURL *)requestURL
|
|
14
|
-
headerFields:(NSDictionary *)requestHeaderFields
|
|
15
|
-
{
|
|
16
|
-
return [requestURL.path isEqualToString:@"/quit"];
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
- (void)startResponse
|
|
20
|
-
{
|
|
21
|
-
exit(0);
|
|
22
|
-
}
|
|
23
|
-
@end
|
data/ext/iCuke/sdk4.0/Rakefile
DELETED
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', '..', '..', 'lib', 'icuke', 'sdk')
|
|
2
|
-
require 'rake/clean'
|
|
3
|
-
|
|
4
|
-
version = '4.0'
|
|
5
|
-
ICuke::SDK.use_latest(version)
|
|
6
|
-
|
|
7
|
-
rule '.o' => '.m' do |o|
|
|
8
|
-
sh "#{ICuke::SDK.gcc} -c -o #{o.name} #{o.source}"
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
CLEAN.include('**/*.o')
|
|
12
|
-
|
|
13
|
-
file "../#{ICuke::SDK.dylib}" => FileList['**/*.m'].ext('.o') do |t|
|
|
14
|
-
sh "#{ICuke::SDK.ld} -dynamiclib -o #{t.name} -framework Foundation -framework GraphicsServices -framework UIKit -framework CFNetwork -framework AXRuntime #{t.prerequisites.join(' ')}"
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
CLEAN.include("../#{ICuke::SDK.dylib}")
|
|
18
|
-
|
|
19
|
-
task :install => "../#{ICuke::SDK.dylib}"
|
|
20
|
-
task :default => :install
|
data/ext/iCuke/sdk4.0/Recorder.h
DELETED
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
#import <Foundation/Foundation.h>
|
|
2
|
-
|
|
3
|
-
@interface Recorder : NSObject {
|
|
4
|
-
NSMutableArray* eventList;
|
|
5
|
-
id playbackDelegate;
|
|
6
|
-
SEL playbackDoneSelector;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
+(Recorder *)sharedRecorder;
|
|
10
|
-
-(void)record;
|
|
11
|
-
-(void)saveToFile:(NSString*)path;
|
|
12
|
-
-(void)load:(NSArray*)events;
|
|
13
|
-
-(void)loadFromFile:(NSString*)path;
|
|
14
|
-
-(void)playbackWithDelegate:(id)delegate doneSelector:(SEL)selector;
|
|
15
|
-
-(void)stop;
|
|
16
|
-
|
|
17
|
-
@end
|
data/ext/iCuke/sdk4.0/Recorder.m
DELETED
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
#import <UIKit/UIKit.h>
|
|
2
|
-
|
|
3
|
-
#import "Recorder.h"
|
|
4
|
-
#import "Viewer.h"
|
|
5
|
-
|
|
6
|
-
@interface UIApplication (Recording)
|
|
7
|
-
|
|
8
|
-
-(void)_addRecorder:(id)recorder;
|
|
9
|
-
-(void)_removeRecorder:(id)recorder;
|
|
10
|
-
-(void)_playbackEvents:(NSArray*)events atPlaybackRate:(float)playbackRate messageWhenDone:(id)target withSelector:(SEL)selector;
|
|
11
|
-
|
|
12
|
-
@end
|
|
13
|
-
|
|
14
|
-
static Recorder *sharedRecorder = nil;
|
|
15
|
-
|
|
16
|
-
@implementation Recorder
|
|
17
|
-
|
|
18
|
-
+(Recorder *)sharedRecorder {
|
|
19
|
-
if (sharedRecorder == nil) {
|
|
20
|
-
sharedRecorder = [[super allocWithZone:NULL] init];
|
|
21
|
-
}
|
|
22
|
-
return sharedRecorder;
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
-(id)init {
|
|
26
|
-
self = [super init];
|
|
27
|
-
|
|
28
|
-
eventList = [[NSMutableArray alloc] init];
|
|
29
|
-
|
|
30
|
-
return self;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
-(void)dealloc {
|
|
34
|
-
[eventList release];
|
|
35
|
-
[super dealloc];
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
-(void)record {
|
|
39
|
-
[eventList removeAllObjects];
|
|
40
|
-
|
|
41
|
-
NSLog(@"Starting recording");
|
|
42
|
-
|
|
43
|
-
[[UIApplication sharedApplication] _addRecorder: self];
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
-(void)saveToFile:(NSString*)path {
|
|
47
|
-
NSLog(@"Saving events to file: %@", path);
|
|
48
|
-
|
|
49
|
-
[eventList writeToFile: path atomically: YES];
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
-(void)stop {
|
|
53
|
-
NSLog(@"Stopping recording");
|
|
54
|
-
|
|
55
|
-
[[UIApplication sharedApplication] _removeRecorder: self];
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
-(void)recordApplicationEvent:(NSDictionary*)event {
|
|
59
|
-
NSLog(@"Recorded event: %@", event);
|
|
60
|
-
|
|
61
|
-
[eventList addObject:event];
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
-(void)load:(NSArray*)events {
|
|
65
|
-
NSLog(@"Loading events");
|
|
66
|
-
|
|
67
|
-
[eventList setArray: events];
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
-(void)loadFromFile:(NSString*)path {
|
|
71
|
-
NSLog(@"Loading events from file: %@", path);
|
|
72
|
-
|
|
73
|
-
[eventList setArray: [NSMutableArray arrayWithContentsOfFile: path]];
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
-(void)playbackWithDelegate: (id)delegate doneSelector:(SEL)doneSelector {
|
|
77
|
-
NSLog(@"Playback");
|
|
78
|
-
|
|
79
|
-
playbackDelegate = delegate;
|
|
80
|
-
playbackDoneSelector = doneSelector;
|
|
81
|
-
|
|
82
|
-
[[UIApplication sharedApplication] _playbackEvents: eventList atPlaybackRate: 1.0f messageWhenDone: self withSelector: @selector(playbackDone:)];
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
-(void)playbackDone:(NSDictionary *)details {
|
|
86
|
-
NSLog(@"Playback complete");
|
|
87
|
-
[playbackDelegate performSelector: playbackDoneSelector];
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
@end
|