25 #include "DocumentLoader.h" |
25 #include "DocumentLoader.h" |
26 #include "FrameLoader.h" |
26 #include "FrameLoader.h" |
27 |
27 |
28 namespace WebCore { |
28 namespace WebCore { |
29 |
29 |
30 const int KSyncRequestTimeOut = 3*1000*1000; |
|
31 |
|
32 int syncRequestTimerCb( void* ptr ); |
|
33 |
|
34 // ============================SynchLoader MEMBER FUNCTIONS =============================== |
30 // ============================SynchLoader MEMBER FUNCTIONS =============================== |
35 |
31 |
36 class SynchResourceHandleClient; |
32 class SynchResourceHandleClient; |
37 |
33 |
38 SynchLoader::SynchLoader(Frame* frame, SynchResourceHandleClient* client, bool sendResourceLoadCallbacks, bool shouldContentSniff) |
34 SynchLoader::SynchLoader(Frame* frame, SynchResourceHandleClient* client, bool sendResourceLoadCallbacks, bool shouldContentSniff) |
144 Frame* frame) |
140 Frame* frame) |
145 : m_finished(false) |
141 : m_finished(false) |
146 , m_response() |
142 , m_response() |
147 , m_error(String(), KErrNone, String(), String()) |
143 , m_error(String(), KErrNone, String(), String()) |
148 , m_data(0) |
144 , m_data(0) |
149 , m_syncRequestTimer(0) |
|
150 { |
145 { |
151 m_status = &aStatus; |
146 m_status = &aStatus; |
152 |
147 |
153 // Send request |
148 // Send request |
154 m_loader = SynchLoader::create(frame, request, this); |
149 m_loader = SynchLoader::create(frame, request, this); |
155 |
150 |
156 if (m_loader) { |
151 if (m_loader) { |
157 m_resourceHandle = m_loader->handle(); |
152 m_resourceHandle = m_loader->handle(); |
158 |
|
159 //Start the synchronous request expiry timer |
|
160 m_syncRequestTimer = CPeriodic::NewL(CActive::EPriorityHigh); |
|
161 m_syncRequestTimer->Start( KSyncRequestTimeOut,0,TCallBack(&syncRequestTimerCb,this)); |
|
162 } |
153 } |
163 } |
154 } |
164 |
155 |
165 SynchResourceHandleClient::~SynchResourceHandleClient() |
156 SynchResourceHandleClient::~SynchResourceHandleClient() |
166 { |
157 { |
167 if (m_syncRequestTimer && m_syncRequestTimer->IsActive()) { |
|
168 m_syncRequestTimer->Cancel(); |
|
169 } |
|
170 delete m_syncRequestTimer; |
|
171 } |
158 } |
172 |
159 |
173 PassRefPtr<SynchResourceHandleClient> SynchResourceHandleClient::create(TRequestStatus& aStatus, |
160 PassRefPtr<SynchResourceHandleClient> SynchResourceHandleClient::create(TRequestStatus& aStatus, |
174 const ResourceRequest& request, |
161 const ResourceRequest& request, |
175 Frame* frame) |
162 Frame* frame) |
250 |
232 |
251 m_finished = true; |
233 m_finished = true; |
252 //m_loader = 0; |
234 //m_loader = 0; |
253 } |
235 } |
254 |
236 |
255 void SynchResourceHandleClient::handleSyncRequestTimeOut() |
|
256 { |
|
257 cancel(ResourceError(String(), KErrCancel, String(), String())); |
|
258 } |
|
259 |
|
260 // ----------------------------------------------------------------------------- |
|
261 // syncRequestTimerCb |
|
262 // ----------------------------------------------------------------------------- |
|
263 int syncRequestTimerCb(void* ptr) |
|
264 { |
|
265 ((SynchResourceHandleClient*)ptr)->handleSyncRequestTimeOut(); |
|
266 return 0; |
|
267 } |
|
268 |
|
269 } // End namespace WebCore |
237 } // End namespace WebCore |
270 |
238 |