rhodes 5.5.0.22 → 5.5.2
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.
- checksums.yaml +4 -4
- data/CONTRIBUTING.md +1 -1
- data/CREDITS +3 -3
- data/Rakefile +0 -22
- data/extensions/rhoconnect-push/ext/rhoconnect-push/platform/android/Rakefile +1 -1
- data/lib/build/jake.rb +0 -5
- data/lib/commonAPI/coreapi/ext/shared/TimerImpl.cpp +27 -36
- data/platform/iphone/Classes/URLProtocol/CRhoURLProtocol.h +0 -2
- data/platform/iphone/Classes/URLProtocol/CRhoURLProtocol.m +25 -183
- data/platform/iphone/Classes/rho/net/IPhoneNetRequest.mm +4 -91
- data/platform/iphone/rbuild/iphone.rake +231 -272
- data/platform/shared/common/RhoTime.cpp +40 -81
- data/platform/shared/db/DBAdapter.cpp +0 -33
- data/platform/shared/db/DBAdapter.h +0 -5
- data/platform/shared/net/HttpServer.cpp +1 -27
- data/platform/shared/net/INetRequest.cpp +6 -33
- data/platform/shared/qt/rhodes/qkineticscroller.cpp +2 -2
- data/platform/shared/qt/rhodes/qkineticscroller_p.h +1 -1
- data/platform/shared/qt/rhodes/qtscrollerfilter.cpp +3 -3
- data/platform/shared/qt/rhodes/qtscrollevent.cpp +2 -2
- data/platform/shared/qt/rhodes/qwebviewkineticscroller.cpp +1 -1
- data/platform/shared/qt/rhodes/qwebviewkineticscroller.h +1 -1
- data/platform/wm/build/wm.rake +3 -7
- data/platform/wm/rhodes/browser/BrowserFactory.cpp +6 -4
- data/platform/wm/rhodes/rhodes.vcproj +2 -31
- data/rakefile.rb +0 -22
- data/res/generators/templates/application/app/Settings/home.erb +1 -1
- data/res/generators/templates/application/build.yml +4 -61
- data/res/generators/templates/application/icon/icon.png +0 -0
- data/res/generators/templates/application/icon/icon114.png +0 -0
- data/res/generators/templates/application/icon/icon120.png +0 -0
- data/res/generators/templates/application/icon/icon144.png +0 -0
- data/res/generators/templates/application/icon/icon152.png +0 -0
- data/res/generators/templates/application/icon/icon180.png +0 -0
- data/res/generators/templates/application/icon/icon57.png +0 -0
- data/res/generators/templates/application/icon/icon60.png +0 -0
- data/res/generators/templates/application/icon/icon72.png +0 -0
- data/res/generators/templates/application/icon/icon76.png +0 -0
- data/res/generators/templates/application/production/iTunesArtwork.png +0 -0
- data/res/generators/templates/application/production/iTunesArtwork@2x.png +0 -0
- data/res/generators/templates/iphone_project/buildRhoBundle +7 -23
- data/res/generators/templates/iphone_project/root/Info.plist +2 -0
- data/res/generators/templates/iphone_project/root/iTunesArtwork +0 -0
- data/res/generators/templates/iphone_project/root/iTunesArtwork@2x +0 -0
- data/res/generators/templates/iphone_project/root/icon114.png +0 -0
- data/res/generators/templates/iphone_project/root/icon120.png +0 -0
- data/res/generators/templates/iphone_project/root/icon144.png +0 -0
- data/res/generators/templates/iphone_project/root/icon152.png +0 -0
- data/res/generators/templates/iphone_project/root/icon180.png +0 -0
- data/res/generators/templates/iphone_project/root/icon57.png +0 -0
- data/res/generators/templates/iphone_project/root/icon60.png +0 -0
- data/res/generators/templates/iphone_project/root/icon72.png +0 -0
- data/res/generators/templates/iphone_project/root/icon76.png +0 -0
- data/rhodes.gemspec +6 -7
- data/version +1 -1
- metadata +16 -46
- data/platform/iphone/rbuild/putsOverride.rake +0 -8
- data/platform/wm/rhodes/browser/stubs.cpp +0 -5
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: ca79afe2871dc844140855c5c576cde2e543561f
|
|
4
|
+
data.tar.gz: 205d5827bdf76a53bacd15aecbbe94ef1eafe2fd
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 6bbd7b25acd92e68ed940b77f4687fe92ce3044d65380183f9595e68b5ca1a82c20db7866ec2ea8334fc2c5d7ee5780196972cd1368a24a0365489b1ad10672e
|
|
7
|
+
data.tar.gz: 9368726e9ccadcc979254160487ee1a36e3d39413be60c3de7691cf6ac0dcb05e07764e48da2faa52deba9664bb76f8416db09cc970707f85efc3ba18c22836e
|
data/CONTRIBUTING.md
CHANGED
|
@@ -4,7 +4,7 @@ Found an issue with Rhodes, give feedback or provide a patch? Here's how!
|
|
|
4
4
|
|
|
5
5
|
## Reporting issues
|
|
6
6
|
|
|
7
|
-
We only accept issues that are bug reports or feature requests. Bugs must be isolated and reproducible problems that we can fix within Rhodes. For application-specific or API-related questions, please visit our [
|
|
7
|
+
We only accept issues that are bug reports or feature requests. Bugs must be isolated and reproducible problems that we can fix within Rhodes. For application-specific or API-related questions, please visit our [Launchpad Disscussion Area](https://developer.zebra.com/community/rhomobile-suite/discussions/rhomobile-discussions). Please read the following guidelines before opening any issue.
|
|
8
8
|
|
|
9
9
|
1. **Search for existing issues.** We sometimes get duplicate issues, and you'd help us out a lot by first checking if someone else has reported the same issue. Moreover, the issue may have already been resolved with a fix available.
|
|
10
10
|
2. **Create an isolated and reproducible test case.** Be sure the problem exists in Rhodes' code.
|
data/CREDITS
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
This media, software or hardware ("Product") obtained from Tau
|
|
1
|
+
This media, software or hardware ("Product") obtained from Tau, Inc. ("Tau") may include Tau?
|
|
2
2
|
Software, Third Party Software (defined below), and/or Open Source Software
|
|
3
3
|
(defined below).
|
|
4
4
|
|
|
@@ -9,9 +9,9 @@ more agreements in force between the purchaser of the Tau
|
|
|
9
9
|
Product or licensee of the Tau Software and Tau. SOFTWARE IS PROTECTED BY U.S. COPYRIGHT LAWS AND INTERNATIONAL
|
|
10
10
|
LAWS AND TREATIES. UNAUTHORIZED COPYING, DISTRIBUTION OR OTHER USE OF
|
|
11
11
|
THIS PRODUCT IS STRICTLY PROHIBITED. ANY DISTRIBUTION OR USE NOT
|
|
12
|
-
SPECIFICALLY APPROVED BY
|
|
12
|
+
SPECIFICALLY APPROVED BY ZEBRA IS STRICTLY PROHIBITED.
|
|
13
13
|
|
|
14
|
-
Tau Software is subject to the commercial terms and
|
|
14
|
+
Tau? Software is subject to the commercial terms and
|
|
15
15
|
conditions entered into with Tau, any other use is strictly
|
|
16
16
|
prohibited. Commercial Software licensed for redistribution by Tau ("Third Party Software") is subject to the terms and conditions
|
|
17
17
|
in force between Tau and the licensor of the Third party
|
data/Rakefile
CHANGED
|
@@ -74,7 +74,6 @@ end
|
|
|
74
74
|
#------------------------------------------------------------------------
|
|
75
75
|
|
|
76
76
|
$app_basedir = pwd
|
|
77
|
-
$is_webkit_engine = false
|
|
78
77
|
$startdir = File.dirname(__FILE__)
|
|
79
78
|
$startdir.gsub!('\\', '/')
|
|
80
79
|
|
|
@@ -2487,10 +2486,6 @@ def init_extensions(dest, mode = "")
|
|
|
2487
2486
|
|
|
2488
2487
|
$app_config["extensions"].each do |extname|
|
|
2489
2488
|
puts 'ext - ' + extname
|
|
2490
|
-
|
|
2491
|
-
if extname == "webkit"
|
|
2492
|
-
$is_webkit_engine = true
|
|
2493
|
-
end
|
|
2494
2489
|
|
|
2495
2490
|
extpath = nil
|
|
2496
2491
|
extpaths.each do |p|
|
|
@@ -2675,23 +2670,6 @@ def init_extensions(dest, mode = "")
|
|
|
2675
2670
|
|
|
2676
2671
|
end
|
|
2677
2672
|
|
|
2678
|
-
stubs = File.join($startdir, "platform", "wm", "rhodes", "browser", "stubs.cpp")
|
|
2679
|
-
if $is_webkit_engine == false
|
|
2680
|
-
File.open(stubs, "w+") do |f|
|
|
2681
|
-
f.puts "// WARNING! THIS FILE IS GENERATED AUTOMATICALLY! DO NOT EDIT IT MANUALLY!"
|
|
2682
|
-
f.puts "#include \"StdAfx.h\""
|
|
2683
|
-
f.puts "#include \"common/RhoStd.h\""
|
|
2684
|
-
f.puts "#include \"IBrowserEngine.h\""
|
|
2685
|
-
f.puts "rho::IBrowserEngine* rho_wmimpl_get_webkitBrowserEngine(HWND hwndParent, HINSTANCE rhoAppInstance) {return 0;}"
|
|
2686
|
-
Jake.modify_file_if_content_changed( stubs, f )
|
|
2687
|
-
end
|
|
2688
|
-
else
|
|
2689
|
-
File.open(stubs, "w+") do |f|
|
|
2690
|
-
f.puts "// WARNING! THIS FILE IS GENERATED AUTOMATICALLY! DO NOT EDIT IT MANUALLY!"
|
|
2691
|
-
f.puts "#include \"StdAfx.h\""
|
|
2692
|
-
Jake.modify_file_if_content_changed( stubs, f )
|
|
2693
|
-
end
|
|
2694
|
-
end
|
|
2695
2673
|
|
|
2696
2674
|
if ($ruby_only_extensions_list)
|
|
2697
2675
|
BuildOutput.warning([
|
|
@@ -21,7 +21,7 @@ ARGS = [
|
|
|
21
21
|
"-I\"#{$rootdir}/platform/android/Rhodes/jni/include\"",
|
|
22
22
|
"-I\"#{$rootdir}/platform/android/Rhodes/jni/include/rhodes/details\"",
|
|
23
23
|
"-I\"#{$rootdir}/platform/shared/ruby/include\"",
|
|
24
|
-
"-I\"#{$rootdir}/lib/
|
|
24
|
+
"-I\"#{$rootdir}/lib/commonApi/coreapi/ext/shared\"",
|
|
25
25
|
"-I\"#{$rootdir}/platform/shared\"",
|
|
26
26
|
"-I\"#{$rootdir}/platform/shared/common\"",
|
|
27
27
|
"-I\"#{$rootdir}/platform/shared/api_generator\"",
|
data/lib/build/jake.rb
CHANGED
|
@@ -876,11 +876,6 @@ class Jake
|
|
|
876
876
|
app_version += "\r\napp_name='#{$app_config["name"]}'"
|
|
877
877
|
app_version += "\r\ntitle_text='#{$app_config["name"]}'" if $current_platform == "win32"
|
|
878
878
|
app_version += "\r\norg_name='#{$app_config["vendor"]}'" if $current_platform == "win32"
|
|
879
|
-
app_version += "\r\nrho_app_id='#{$app_config["rho_app_id"]}'" if $app_config['rho_app_id']
|
|
880
|
-
|
|
881
|
-
if $is_webkit_engine == true
|
|
882
|
-
File.open(File.join($srcdir,'apps/rhoconfig.txt'), "a"){ |f| f.write("\r\nwebengine=webkit") }
|
|
883
|
-
end
|
|
884
879
|
|
|
885
880
|
File.open(File.join($srcdir,'apps/rhoconfig.txt'), "a"){ |f| f.write(app_version) }
|
|
886
881
|
File.open(File.join($srcdir,'apps/rhoconfig.txt.timestamp'), "w"){ |f| f.write(Time.now.to_f().to_s()) }
|
|
@@ -11,41 +11,35 @@
|
|
|
11
11
|
|
|
12
12
|
extern "C" void rho_ios_log_console_output(const char* message);
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
#undef DEFAULT_LOGCATEGORY
|
|
17
|
-
#define DEFAULT_LOGCATEGORY "TimerImpl"
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
namespace rho
|
|
21
|
-
{
|
|
14
|
+
namespace rho
|
|
15
|
+
{
|
|
22
16
|
class CTimerFactory;
|
|
23
17
|
|
|
24
18
|
using namespace apiGenerator;
|
|
25
19
|
using namespace common;
|
|
26
|
-
|
|
20
|
+
|
|
27
21
|
class CTimerSingletonImpl: public CTimerSingletonBase
|
|
28
22
|
{
|
|
29
23
|
static unsigned int createdTimers;
|
|
30
24
|
|
|
31
25
|
public:
|
|
32
|
-
|
|
26
|
+
|
|
33
27
|
CTimerSingletonImpl(): CTimerSingletonBase(){}
|
|
34
|
-
|
|
28
|
+
|
|
35
29
|
//methods
|
|
36
|
-
// create Create a timers objects.
|
|
37
|
-
virtual void create(rho::apiGenerator::CMethodResult& oResult)
|
|
30
|
+
// create Create a timers objects.
|
|
31
|
+
virtual void create(rho::apiGenerator::CMethodResult& oResult)
|
|
38
32
|
{
|
|
39
33
|
++createdTimers;
|
|
40
34
|
|
|
41
35
|
char buf[10];
|
|
42
36
|
sprintf(buf, "%d", createdTimers);
|
|
43
37
|
oResult.set(buf);
|
|
44
|
-
}
|
|
45
|
-
// enumerate This is documentation
|
|
46
|
-
virtual void enumerate(rho::apiGenerator::CMethodResult& oResult) { }
|
|
38
|
+
}
|
|
39
|
+
// enumerate This is documentation
|
|
40
|
+
virtual void enumerate(rho::apiGenerator::CMethodResult& oResult) { }
|
|
47
41
|
};
|
|
48
|
-
|
|
42
|
+
|
|
49
43
|
unsigned int CTimerSingletonImpl::createdTimers = 0;
|
|
50
44
|
|
|
51
45
|
class CTimerImpl : public CTimerBase, public common::CRhoTimer::ICallback
|
|
@@ -61,7 +55,7 @@ namespace rho
|
|
|
61
55
|
|
|
62
56
|
virtual void run()
|
|
63
57
|
{
|
|
64
|
-
|
|
58
|
+
|
|
65
59
|
while ( !RHODESAPP().isApplicationActive() ) {
|
|
66
60
|
wait(10);
|
|
67
61
|
}
|
|
@@ -77,40 +71,37 @@ namespace rho
|
|
|
77
71
|
|
|
78
72
|
public:
|
|
79
73
|
CTimerImpl(const rho::String& timerID) : m_timerID(timerID), m_answerThread(0) {}
|
|
80
|
-
virtual ~CTimerImpl()
|
|
74
|
+
virtual ~CTimerImpl()
|
|
81
75
|
{
|
|
82
76
|
if (!m_answerThread)
|
|
83
77
|
delete m_answerThread;
|
|
84
78
|
}
|
|
85
79
|
|
|
86
80
|
//methods
|
|
87
|
-
virtual void start( int interval, rho::apiGenerator::CMethodResult& oResult)
|
|
81
|
+
virtual void start( int interval, rho::apiGenerator::CMethodResult& oResult)
|
|
88
82
|
{
|
|
89
83
|
if (interval <= 0)
|
|
90
84
|
{
|
|
91
|
-
LOG(ERROR) + "$NetRequestProcess$ PRE SET ERROR CTimerImpl::start";
|
|
92
85
|
oResult.setError("invalid interval");
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
return;
|
|
86
|
+
return;
|
|
96
87
|
}
|
|
97
88
|
|
|
98
89
|
m_oResult = oResult;
|
|
99
90
|
common::CRhoTimer& timerManager = RHODESAPP().getTimer();
|
|
100
91
|
timerManager.addNativeTimer(interval, this);
|
|
101
|
-
}
|
|
92
|
+
}
|
|
102
93
|
|
|
103
94
|
virtual void stop(rho::apiGenerator::CMethodResult& oResult)
|
|
104
95
|
{
|
|
105
96
|
common::CRhoTimer& timerManager = RHODESAPP().getTimer();
|
|
106
97
|
timerManager.stopNativeTimer(this);
|
|
107
|
-
}
|
|
98
|
+
}
|
|
108
99
|
|
|
109
|
-
virtual void isAlive(rho::apiGenerator::CMethodResult& oResult)
|
|
100
|
+
virtual void isAlive(rho::apiGenerator::CMethodResult& oResult)
|
|
110
101
|
{
|
|
111
102
|
common::CRhoTimer& timerManager = RHODESAPP().getTimer();
|
|
112
103
|
oResult.set(timerManager.isNativeTimerExist(this));
|
|
113
|
-
}
|
|
104
|
+
}
|
|
114
105
|
|
|
115
106
|
virtual bool onTimer()
|
|
116
107
|
{
|
|
@@ -123,20 +114,20 @@ namespace rho
|
|
|
123
114
|
return true;
|
|
124
115
|
}
|
|
125
116
|
};
|
|
126
|
-
|
|
117
|
+
|
|
127
118
|
////////////////////////////////////////////////////////////////////////
|
|
128
|
-
|
|
129
|
-
class CTimerFactory: public CTimerFactoryBase
|
|
119
|
+
|
|
120
|
+
class CTimerFactory: public CTimerFactoryBase
|
|
130
121
|
{
|
|
131
122
|
public:
|
|
132
123
|
CTimerFactory(){}
|
|
133
|
-
|
|
124
|
+
|
|
134
125
|
ITimerSingleton* createModuleSingleton()
|
|
135
|
-
{
|
|
126
|
+
{
|
|
136
127
|
return new CTimerSingletonImpl();
|
|
137
128
|
}
|
|
138
|
-
|
|
139
|
-
virtual ITimer* createModuleByID(const rho::String& strID){
|
|
129
|
+
|
|
130
|
+
virtual ITimer* createModuleByID(const rho::String& strID){
|
|
140
131
|
return new CTimerImpl(strID);
|
|
141
132
|
};
|
|
142
133
|
|
|
@@ -145,7 +136,7 @@ namespace rho
|
|
|
145
136
|
return m_hashModules.size();
|
|
146
137
|
}
|
|
147
138
|
};
|
|
148
|
-
|
|
139
|
+
|
|
149
140
|
}
|
|
150
141
|
|
|
151
142
|
extern "C" void Init_Timer_extension()
|
|
@@ -6,25 +6,6 @@
|
|
|
6
6
|
|
|
7
7
|
#import "common/RhoConf.h"
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
#import "logging/RhoLog.h"
|
|
11
|
-
#undef DEFAULT_LOGCATEGORY
|
|
12
|
-
#define DEFAULT_LOGCATEGORY "RhoURLProtocol"
|
|
13
|
-
|
|
14
|
-
static bool is_net_trace() {
|
|
15
|
-
static int res = -1;
|
|
16
|
-
if (res == -1) {
|
|
17
|
-
if (rho_conf_getBool("net_trace") ) {
|
|
18
|
-
res = 1;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
res = 0;
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
return res == 1;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
9
|
extern int rho_http_started();
|
|
29
10
|
extern int rho_http_get_port();
|
|
30
11
|
|
|
@@ -47,7 +28,6 @@ int on_http_data_cb(http_parser* parser, const char *at, size_t length) { return
|
|
|
47
28
|
int on_http_cb(http_parser* parser) { return 0; }
|
|
48
29
|
|
|
49
30
|
|
|
50
|
-
|
|
51
31
|
@interface CRhoURLResponse : NSHTTPURLResponse {
|
|
52
32
|
|
|
53
33
|
}
|
|
@@ -59,16 +39,6 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
59
39
|
|
|
60
40
|
@implementation CRhoURLProtocol
|
|
61
41
|
|
|
62
|
-
|
|
63
|
-
-(const char*)selfIDstring {
|
|
64
|
-
return [[NSString stringWithFormat:@"<%p>", self] UTF8String];
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
+ (const char*)requestInfo:(NSURLRequest*)req {
|
|
68
|
-
return [[NSString stringWithFormat:@"<NSURLRequest:<%p>, URL:[ %@ ], Headers:[ %@ ]", req, req.URL, req.allHTTPHeaderFields] UTF8String];
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
|
|
72
42
|
- (void)dealloc
|
|
73
43
|
{
|
|
74
44
|
[httpBody release];
|
|
@@ -89,27 +59,17 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
89
59
|
|
|
90
60
|
+ (BOOL)canInitWithRequest:(NSURLRequest*)theRequest
|
|
91
61
|
{
|
|
92
|
-
if (is_net_trace()) {
|
|
93
|
-
RAWTRACE1("$NetRequestProcess$ canInitWithRequest BEGIN: { %s }", [CRhoURLProtocol requestInfo:theRequest]);
|
|
94
|
-
}
|
|
95
|
-
|
|
96
62
|
NSURL* theUrl = [theRequest URL];
|
|
97
63
|
if ([[theUrl path] isEqualToString:@"/!__rhoNativeApi"]) {
|
|
98
64
|
|
|
99
65
|
NSString* jsonRequestTest = [theRequest valueForHTTPHeaderField:@"__rhoNativeApiCall"];
|
|
100
66
|
if (jsonRequestTest != nil) {
|
|
101
67
|
//NSLog(@"$$$ process Request: [%@:%@]", [theUrl absoluteString], jsonRequestTest);
|
|
102
|
-
if (is_net_trace()) {
|
|
103
|
-
RAWTRACE("$NetRequestProcess$ canInitWithRequest END: return YES by !__rhoNativeApi prefix");
|
|
104
|
-
}
|
|
105
68
|
return YES;
|
|
106
69
|
}
|
|
107
70
|
}
|
|
108
71
|
#if defined(RHO_NO_RUBY_API) && defined(RHO_NO_HTTP_SERVER)
|
|
109
72
|
if ([theRequest.URL.scheme isEqualToString:@"file"]) {
|
|
110
|
-
if (is_net_trace()) {
|
|
111
|
-
RAWTRACE("$NetRequestProcess$ canInitWithRequest END: return YES by file scheme when no Ruby API server");
|
|
112
|
-
}
|
|
113
73
|
return YES;
|
|
114
74
|
}
|
|
115
75
|
#endif
|
|
@@ -119,21 +79,10 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
119
79
|
canHandle = rho_conf_getBool("ios_direct_local_requests")!=0;
|
|
120
80
|
}
|
|
121
81
|
|
|
122
|
-
if ( canHandle ) {
|
|
123
|
-
|
|
124
|
-
RAWTRACE("$NetRequestProcess$ canInitWithRequest: ios_direct_local_requests = true !");
|
|
125
|
-
}
|
|
126
|
-
if ([CRhoURLProtocol isLocalURL:theUrl]) {
|
|
127
|
-
if (is_net_trace()) {
|
|
128
|
-
RAWTRACE("$NetRequestProcess$ canInitWithRequest END: return YES URL is local !");
|
|
129
|
-
}
|
|
130
|
-
return YES;
|
|
131
|
-
}
|
|
82
|
+
if ( canHandle && [CRhoURLProtocol isLocalURL:theUrl] ) {
|
|
83
|
+
return YES;
|
|
132
84
|
}
|
|
133
85
|
|
|
134
|
-
if (is_net_trace()) {
|
|
135
|
-
RAWTRACE("$NetRequestProcess$ canInitWithRequest END: return NO");
|
|
136
|
-
}
|
|
137
86
|
return NO;
|
|
138
87
|
}
|
|
139
88
|
|
|
@@ -142,27 +91,19 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
142
91
|
return request;
|
|
143
92
|
}
|
|
144
93
|
|
|
145
|
-
- (void)
|
|
94
|
+
- (void)startLoading
|
|
146
95
|
{
|
|
147
|
-
if (is_net_trace()) {
|
|
148
|
-
RAWTRACE2("$NetRequestProcess$ CRhoURLProtocol %s :: startLoadingInThread BEGIN: { %s }", [self selfIDstring], [CRhoURLProtocol requestInfo:[self request]]);
|
|
149
|
-
}
|
|
150
96
|
NSURL* theUrl = [[self request] URL];
|
|
151
97
|
|
|
152
98
|
|
|
153
99
|
if ([[theUrl path] isEqualToString:@"/!__rhoNativeApi"]) {
|
|
154
|
-
|
|
155
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading URL has !__rhoNativeApi", [self selfIDstring]);
|
|
156
|
-
}
|
|
100
|
+
|
|
157
101
|
NSString* jsonRequestTest = [[self request] valueForHTTPHeaderField:@"__rhoNativeApiCall"];
|
|
158
102
|
if (jsonRequestTest != nil) {
|
|
159
103
|
NSString* responseStr = [CJSEntryPoint js_entry_point:jsonRequestTest];
|
|
160
104
|
if (responseStr != nil) {
|
|
161
105
|
//NSLog(@"$$$ send responce for[%@:%@] = [%@]", [theUrl absoluteString], jsonRequestTest, responseStr);
|
|
162
106
|
[self sendResponseWithResponseCode:200 data:[responseStr dataUsingEncoding:NSUTF8StringEncoding]];
|
|
163
|
-
if (is_net_trace()) {
|
|
164
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading END", [self selfIDstring]);
|
|
165
|
-
}
|
|
166
107
|
return;
|
|
167
108
|
}
|
|
168
109
|
}
|
|
@@ -192,13 +133,12 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
192
133
|
textEncodingName:@"UTF-8"];
|
|
193
134
|
response.statusCode = 200;
|
|
194
135
|
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
[[self client] URLProtocol:self didLoadData:data];
|
|
199
|
-
}
|
|
200
|
-
[[self client] URLProtocolDidFinishLoading:self];
|
|
136
|
+
[[self client] URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];
|
|
137
|
+
if (data != nil) {
|
|
138
|
+
[[self client] URLProtocol:self didLoadData:data];
|
|
201
139
|
}
|
|
140
|
+
[[self client] URLProtocolDidFinishLoading:self];
|
|
141
|
+
|
|
202
142
|
|
|
203
143
|
return;
|
|
204
144
|
}
|
|
@@ -207,9 +147,6 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
207
147
|
|
|
208
148
|
if ( [CRhoURLProtocol isLocalURL:theUrl] )
|
|
209
149
|
{
|
|
210
|
-
if (is_net_trace()) {
|
|
211
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: URL is local !", [self selfIDstring]);
|
|
212
|
-
}
|
|
213
150
|
NSURL* url = theUrl;
|
|
214
151
|
CRhoURLResponse* resp = nil;
|
|
215
152
|
|
|
@@ -217,14 +154,7 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
217
154
|
|
|
218
155
|
if ( resp != nil )
|
|
219
156
|
{
|
|
220
|
-
if (is_net_trace()) {
|
|
221
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading has Responce from local server", [self selfIDstring]);
|
|
222
|
-
}
|
|
223
157
|
if ( ((self.httpStatusCode==301)||(self.httpStatusCode==302)) && ( [self.httpHeaders objectForKey:@"location"] != nil ) ) {
|
|
224
|
-
|
|
225
|
-
if (is_net_trace()) {
|
|
226
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading we have REDIRECT from local server !", [self selfIDstring]);
|
|
227
|
-
}
|
|
228
158
|
NSString* loc = [self.httpHeaders objectForKey:@"location"];
|
|
229
159
|
|
|
230
160
|
NSString* escaped = [loc stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
|
|
@@ -272,89 +202,34 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
272
202
|
}
|
|
273
203
|
|
|
274
204
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
// clone headers from original request to redirect request
|
|
278
|
-
NSDictionary* headers = [[self request] allHTTPHeaderFields];
|
|
279
|
-
for (NSString* key in headers) {
|
|
280
|
-
NSString* value = [headers objectForKey:key];
|
|
281
|
-
[redirReq setValue:value forHTTPHeaderField:key];
|
|
282
|
-
}
|
|
283
|
-
|
|
284
|
-
if (is_net_trace()) {
|
|
285
|
-
RAWTRACE2("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading wasRedirectedToRequest with Request { %s }", [self selfIDstring], [CRhoURLProtocol requestInfo:redirReq]);
|
|
286
|
-
}
|
|
287
|
-
if (!self.isStopped) {
|
|
288
|
-
|
|
289
|
-
[[self client] URLProtocol:self wasRedirectedToRequest:redirReq redirectResponse:resp];
|
|
290
|
-
}
|
|
291
|
-
if (is_net_trace()) {
|
|
292
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading END", [self selfIDstring]);
|
|
293
|
-
}
|
|
205
|
+
NSURLRequest* redirReq = [NSURLRequest requestWithURL:url];
|
|
206
|
+
[[self client] URLProtocol:self wasRedirectedToRequest:redirReq redirectResponse:resp];
|
|
294
207
|
return;
|
|
295
208
|
}
|
|
296
|
-
else {
|
|
297
|
-
RAWLOG_ERROR2("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading Redirect response has no URL ! Initial request: { %s }", [self selfIDstring], [CRhoURLProtocol requestInfo:[self request]]);
|
|
298
|
-
}
|
|
299
209
|
}
|
|
300
210
|
else
|
|
301
211
|
{
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
[[self client] URLProtocol:self didReceiveResponse:resp cacheStoragePolicy:NSURLCacheStorageNotAllowed];
|
|
308
|
-
}
|
|
309
|
-
if (self.httpBody != nil) {
|
|
310
|
-
if (!self.isStopped) {
|
|
311
|
-
[[self client] URLProtocol:self didLoadData:self.httpBody];
|
|
312
|
-
}
|
|
313
|
-
}
|
|
314
|
-
if (!self.isStopped) {
|
|
315
|
-
[[self client] URLProtocolDidFinishLoading:self];
|
|
316
|
-
}
|
|
317
|
-
|
|
318
|
-
if (is_net_trace()) {
|
|
319
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading END", [self selfIDstring]);
|
|
212
|
+
[[self client] URLProtocol:self didReceiveResponse:resp cacheStoragePolicy:NSURLCacheStorageNotAllowed];
|
|
213
|
+
|
|
214
|
+
if (self.httpBody != nil) {
|
|
215
|
+
[[self client] URLProtocol:self didLoadData:self.httpBody];
|
|
320
216
|
}
|
|
217
|
+
|
|
218
|
+
[[self client] URLProtocolDidFinishLoading:self];
|
|
321
219
|
return;
|
|
322
220
|
}
|
|
323
221
|
}
|
|
324
|
-
else {
|
|
325
|
-
RAWLOG_ERROR2("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading has NO Responce from local server !!! Initial request: { %s }", [self selfIDstring], [CRhoURLProtocol requestInfo:[self request]]);
|
|
326
|
-
}
|
|
327
222
|
}
|
|
328
223
|
|
|
329
224
|
//NSLog(@"$$$ responce ERROR: [%@]", [theUrl absoluteString]);
|
|
330
225
|
NSString* body = @"error";
|
|
331
226
|
[self sendResponseWithResponseCode:401 data:[body dataUsingEncoding:NSUTF8StringEncoding]];
|
|
332
|
-
|
|
333
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: startLoadingInThread END", [self selfIDstring]);
|
|
334
|
-
}
|
|
227
|
+
|
|
335
228
|
}
|
|
336
229
|
|
|
337
|
-
- (void)startLoading
|
|
338
|
-
{
|
|
339
|
-
self.isStopped = NO;
|
|
340
|
-
if (is_net_trace()) {
|
|
341
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: startLoading()", [self selfIDstring]);
|
|
342
|
-
}
|
|
343
|
-
|
|
344
|
-
dispatch_async( dispatch_get_global_queue( DISPATCH_QUEUE_PRIORITY_DEFAULT, 0 ), ^{
|
|
345
|
-
[self startLoadingInThread];
|
|
346
|
-
});
|
|
347
|
-
}
|
|
348
|
-
|
|
349
|
-
|
|
350
230
|
- (CRhoURLResponse*) makeDirectHttpRequest:(NSURL*)theUrl
|
|
351
231
|
{
|
|
352
|
-
|
|
353
|
-
if (is_net_trace()) {
|
|
354
|
-
RAWTRACE2("$NetRequestProcess$ CRhoURLProtocol %s :: makeDirectHttpRequest : URL [ %s ]", [self selfIDstring], [[theUrl absoluteString] UTF8String]);
|
|
355
|
-
}
|
|
356
|
-
|
|
357
|
-
//NSLog(@"Will make local request to %@", [theUrl absoluteString]);
|
|
232
|
+
//NSLog(@"Will make local request to %@", [theUrl absoluteString]);
|
|
358
233
|
|
|
359
234
|
const char* uri = [[theUrl path] UTF8String];
|
|
360
235
|
const char* method = [[[self request] HTTPMethod] UTF8String];
|
|
@@ -427,10 +302,6 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
427
302
|
|
|
428
303
|
- (void)stopLoading
|
|
429
304
|
{
|
|
430
|
-
self.isStopped = YES;
|
|
431
|
-
if (is_net_trace()) {
|
|
432
|
-
RAWTRACE1("$NetRequestProcess$ CRhoURLProtocol %s :: stopLoading()", [self selfIDstring]);
|
|
433
|
-
}
|
|
434
305
|
|
|
435
306
|
}
|
|
436
307
|
|
|
@@ -441,13 +312,7 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
441
312
|
|
|
442
313
|
- (void)sendResponseWithResponseCode:(NSInteger)statusCode data:(NSData*)data
|
|
443
314
|
{
|
|
444
|
-
if (is_net_trace()) {
|
|
445
|
-
RAWTRACE2("$NetRequestProcess$ CRhoURLProtocol %s :: sendResponseWithResponseCode : code: [ %d ] ", [self selfIDstring], (int)statusCode);
|
|
446
|
-
}
|
|
447
315
|
|
|
448
|
-
if (self.isStopped) {
|
|
449
|
-
return;
|
|
450
|
-
}
|
|
451
316
|
CRhoURLResponse* response =
|
|
452
317
|
[[CRhoURLResponse alloc] initWithURL:[[self request] URL]
|
|
453
318
|
MIMEType:@"text/plain"
|
|
@@ -455,39 +320,25 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
455
320
|
textEncodingName:@"UTF-8"];
|
|
456
321
|
response.statusCode = statusCode;
|
|
457
322
|
|
|
458
|
-
|
|
459
|
-
[[self client] URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];
|
|
460
|
-
}
|
|
323
|
+
[[self client] URLProtocol:self didReceiveResponse:response cacheStoragePolicy:NSURLCacheStorageNotAllowed];
|
|
461
324
|
if (data != nil) {
|
|
462
|
-
|
|
463
|
-
[[self client] URLProtocol:self didLoadData:data];
|
|
464
|
-
}
|
|
465
|
-
}
|
|
466
|
-
if (!self.isStopped) {
|
|
467
|
-
[[self client] URLProtocolDidFinishLoading:self];
|
|
325
|
+
[[self client] URLProtocol:self didLoadData:data];
|
|
468
326
|
}
|
|
327
|
+
[[self client] URLProtocolDidFinishLoading:self];
|
|
328
|
+
|
|
469
329
|
[response release];
|
|
470
330
|
}
|
|
471
331
|
|
|
472
332
|
+ (BOOL) isLocalURL:(NSURL*)url
|
|
473
333
|
{
|
|
474
|
-
if (is_net_trace()) {
|
|
475
|
-
RAWTRACE1("$NetRequestProcess$ isLocalURL BEGIN : URL: [ %s ] ", [[url absoluteString] UTF8String]);
|
|
476
|
-
}
|
|
477
334
|
if ( [[url absoluteString] isEqualToString:@""] )
|
|
478
335
|
{
|
|
479
|
-
if (is_net_trace()) {
|
|
480
|
-
RAWTRACE("isLocalURL END : return NO");
|
|
481
|
-
}
|
|
482
336
|
return NO;
|
|
483
337
|
}
|
|
484
338
|
|
|
485
339
|
const char* scheme = [[url scheme] UTF8String];
|
|
486
340
|
if (scheme != 0) {
|
|
487
341
|
if ((strcmp(scheme, "http") !=0 ) && (strcmp(scheme, "https") !=0 )) {
|
|
488
|
-
if (is_net_trace()) {
|
|
489
|
-
RAWTRACE("$NetRequestProcess$ isLocalURL END : return NO");
|
|
490
|
-
}
|
|
491
342
|
return NO;
|
|
492
343
|
}
|
|
493
344
|
}
|
|
@@ -496,10 +347,7 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
496
347
|
|
|
497
348
|
if ( 0 == host )
|
|
498
349
|
{
|
|
499
|
-
|
|
500
|
-
RAWTRACE("$NetRequestProcess$ isLocalURL END : return YES");
|
|
501
|
-
}
|
|
502
|
-
return YES;
|
|
350
|
+
return YES;
|
|
503
351
|
}
|
|
504
352
|
|
|
505
353
|
NSNumber* p = [url port];
|
|
@@ -507,15 +355,10 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
507
355
|
|
|
508
356
|
int rhoPort = rho_http_get_port();
|
|
509
357
|
|
|
510
|
-
|
|
358
|
+
return (
|
|
511
359
|
((port == rhoPort))
|
|
512
360
|
&& ( (strcmp(host,"127.0.0.1")==0) || (strcmp(host,"localhost")==0) )
|
|
513
361
|
);
|
|
514
|
-
if (is_net_trace()) {
|
|
515
|
-
RAWTRACE1("$NetRequestProcess$ isLocalURL END : return [%s]", [[[NSNumber numberWithBool:ret] stringValue] UTF8String]);
|
|
516
|
-
}
|
|
517
|
-
|
|
518
|
-
return ret;
|
|
519
362
|
}
|
|
520
363
|
|
|
521
364
|
|
|
@@ -523,7 +366,6 @@ int on_http_cb(http_parser* parser) { return 0; }
|
|
|
523
366
|
@synthesize httpHeaderName;
|
|
524
367
|
@synthesize httpHeaders;
|
|
525
368
|
@synthesize httpBody;
|
|
526
|
-
@synthesize isStopped;
|
|
527
369
|
|
|
528
370
|
|
|
529
371
|
@end
|