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 |
30 // ============================SynchLoader MEMBER FUNCTIONS =============================== |
34 // ============================SynchLoader MEMBER FUNCTIONS =============================== |
31 |
35 |
32 class SynchResourceHandleClient; |
36 class SynchResourceHandleClient; |
33 |
37 |
34 SynchLoader::SynchLoader(Frame* frame, SynchResourceHandleClient* client, bool sendResourceLoadCallbacks, bool shouldContentSniff) |
38 SynchLoader::SynchLoader(Frame* frame, SynchResourceHandleClient* client, bool sendResourceLoadCallbacks, bool shouldContentSniff) |
140 Frame* frame) |
144 Frame* frame) |
141 : m_finished(false) |
145 : m_finished(false) |
142 , m_response() |
146 , m_response() |
143 , m_error(String(), KErrNone, String(), String()) |
147 , m_error(String(), KErrNone, String(), String()) |
144 , m_data(0) |
148 , m_data(0) |
|
149 , m_syncRequestTimer(0) |
145 { |
150 { |
146 m_status = &aStatus; |
151 m_status = &aStatus; |
147 |
152 |
148 // Send request |
153 // Send request |
149 m_loader = SynchLoader::create(frame, request, this); |
154 m_loader = SynchLoader::create(frame, request, this); |
150 |
155 |
151 if (m_loader) { |
156 if (m_loader) { |
152 m_resourceHandle = m_loader->handle(); |
157 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)); |
153 } |
162 } |
154 } |
163 } |
155 |
164 |
156 SynchResourceHandleClient::~SynchResourceHandleClient() |
165 SynchResourceHandleClient::~SynchResourceHandleClient() |
157 { |
166 { |
|
167 if (m_syncRequestTimer && m_syncRequestTimer->IsActive()) { |
|
168 m_syncRequestTimer->Cancel(); |
|
169 } |
|
170 delete m_syncRequestTimer; |
158 } |
171 } |
159 |
172 |
160 PassRefPtr<SynchResourceHandleClient> SynchResourceHandleClient::create(TRequestStatus& aStatus, |
173 PassRefPtr<SynchResourceHandleClient> SynchResourceHandleClient::create(TRequestStatus& aStatus, |
161 const ResourceRequest& request, |
174 const ResourceRequest& request, |
162 Frame* frame) |
175 Frame* frame) |
232 |
250 |
233 m_finished = true; |
251 m_finished = true; |
234 //m_loader = 0; |
252 //m_loader = 0; |
235 } |
253 } |
236 |
254 |
|
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 |
237 } // End namespace WebCore |
269 } // End namespace WebCore |
238 |
270 |