webengine/osswebengine/WebCore/platform/network/symbian/HttpDownload.cpp
changeset 36 0ed94ceaa377
parent 17 c8a366e56285
child 65 5bfc169077b2
child 93 79859ed3eea9
--- a/webengine/osswebengine/WebCore/platform/network/symbian/HttpDownload.cpp	Tue Nov 24 09:02:20 2009 +0200
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/HttpDownload.cpp	Thu Dec 17 09:20:16 2009 +0200
@@ -16,8 +16,8 @@
 */
 
 #include "HttpDownload.h"
-#include <CDownloadMgrUiUserInteractions.h>
-#include <CDownloadMgrUiDownloadsList.h>
+#include <cdownloadmgruiuserinteractions.h>
+#include <cdownloadmgruidownloadslist.h>
 #include "HttpDlConnection.h"
 #include "HttpDefs.h"
 #include "HttpSessionManager.h"
@@ -30,15 +30,41 @@
 
 using namespace WebCore;
 
-HttpDownload::HttpDownload(HttpSessionManager* sessionManager)
+// -----------------------------------------------------------------------------
+// HttpDownload::NewL
+//
+// Two-phased constructor.
+// -----------------------------------------------------------------------------
+//
+HttpDownload* HttpDownload::NewL(HttpSessionManager* sessionManager)
+    {
+    HttpDownload* self = new (ELeave) HttpDownload();
+
+    CleanupStack::PushL (self);
+    self->ConstructL ( sessionManager);
+    CleanupStack::Pop ();
+    return self;       
+    }
+
+HttpDownload::HttpDownload()
 {
-    m_sessionManager = sessionManager;
     m_dMgrReady = false;
     m_dMgrUiReg = NULL;
-	m_downloadObserver = StaticObjectsContainer::instance()->brctl()->brCtlDownloadObserver();
-    TRAP_IGNORE(PREPARE_DOWNLOAD_MANAGER)
 }
 
+// -----------------------------------------------------------------------------
+// HttpDownload::ConstructL
+// Symbian 2nd phase constructor can leave.
+// by this method.
+// -----------------------------------------------------------------------------
+//
+void HttpDownload::ConstructL(HttpSessionManager* sessionManager)
+    {
+    m_sessionManager = sessionManager;
+    m_downloadObserver = StaticObjectsContainer::instance()->brctl()->brCtlDownloadObserver();
+    PREPARE_DOWNLOAD_MANAGER;
+    }
+
 HttpDownload::~HttpDownload()
 {
     delete m_dMgrUiReg;
@@ -72,7 +98,10 @@
     if ( errMngr == KErrAlreadyExists && master ) { 
         m_downloadMgr.ConnectL( myProcess.Identity(), *this, EFalse );
     }
-    
+    else
+    {
+        User::LeaveIfError(errMngr);
+    }
     if( !master ){
         // Browser is embedded. Downloads must be paused when the user closes
         // the embedded Browser (that is always started from the Launcher), and