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