webengine/osswebengine/WebCore/platform/network/symbian/SynchLoader.cpp
branchRCL_3
changeset 34 220a17280356
parent 0 dd21522fd290
child 48 79859ed3eea9
equal deleted inserted replaced
32:ea4b2e4f7cac 34:220a17280356
    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)
   215 
   228 
   216 void SynchResourceHandleClient::finish(const ResourceError& error)
   229 void SynchResourceHandleClient::finish(const ResourceError& error)
   217 {
   230 {
   218     m_error = error;
   231     m_error = error;
   219     
   232     
       
   233     //Cancel the synchronous Request timer
       
   234     if (m_syncRequestTimer->IsActive()) {
       
   235         m_syncRequestTimer->Cancel();
       
   236     }
       
   237     
   220     if (!m_finished) { // Avoid multiple execution
   238     if (!m_finished) { // Avoid multiple execution
   221         if (m_loader) {
   239         if (m_loader) {
   222             m_loader->removeSubresourceLoader();
   240             m_loader->removeSubresourceLoader();
   223         }
   241         }
   224 
   242 
   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