webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp
changeset 10 a359256acfc6
parent 5 10e98eab6f85
child 25 0ed94ceaa377
--- a/webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp	Fri Jul 03 15:54:40 2009 +0100
+++ b/webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp	Thu Aug 27 07:44:59 2009 +0300
@@ -85,6 +85,8 @@
     if (r.mainLoad() && frame == frame->page()->mainFrame() && err != KErrNone && err != KErrCancel) {
 		m_httpSessionManager.uiCallback()->reportError(mapHttpErrors(err));
     }
+    CBrCtl* brctl = control(frame);
+    m_httpSessionManager.uiCallback()->SetBrowserControl(brctl);
     return connection;
 }
 
@@ -169,62 +171,70 @@
     HttpUiCallbacks::TEnterStatus enterStatus = HttpUiCallbacks::EEnterStatusNone;
     bool ret = true;
     
-    if (brctl->settings()->brctlSetting(TBrCtlDefs::ESettingsSecurityWarnings)) {
-        TUriParser8 parser;
-        bool secureUrl = false;
-        bool currentSecureUrl = false;
-        if (parser.Parse(request.url().des()) == KErrNone) {
-            TPtrC8 scheme = parser.Extract( EUriScheme );
-            secureUrl = scheme.CompareF(KHttps) == 0;
+    TUriParser8 secureUrlParser;
+    TUriParser8 currentSecureUrlParser;
+    bool secureUrl = false;
+    bool currentSecureUrl = false;
+    if (secureUrlParser.Parse(request.url().des()) == KErrNone) {
+        TPtrC8 scheme = secureUrlParser.Extract( EUriScheme );
+        secureUrl = scheme.CompareF(KHttps) == 0;
+    }
+    if (frame->loader() && frame->loader()->documentLoader()) {
+        TPtrC8 url = frame->loader()->documentLoader()->URL().des();
+        if (currentSecureUrlParser.Parse(url) == KErrNone) {
+            TPtrC8 scheme = currentSecureUrlParser.Extract( EUriScheme );
+            currentSecureUrl = scheme.CompareF(KHttps) == 0;
         }
-        if (frame->loader() && frame->loader()->documentLoader()) {
-            TPtrC8 url = frame->loader()->documentLoader()->URL().des();
-            TUriParser8 parser;
-            if (parser.Parse(url) == KErrNone) {
-                TPtrC8 scheme = parser.Extract( EUriScheme );
-                currentSecureUrl = scheme.CompareF(KHttps) == 0;
+    }
+    if (request.mainLoad()) {
+        if (!frame->ownerElement()) {
+            if (currentSecureUrl) {
+                if (!secureUrl) {
+                    // secure -> non secure
+                    if (request.httpMethod() == "POST") {
+                        enterStatus = HttpUiCallbacks::ESubmittingToNonSecurePage;
+                    }
+                    else {
+                        enterStatus = HttpUiCallbacks::EExitingSecurePage;
+                    }
+                } // if (!secureUrl)
+                else {
+					// secure -> secure
+                    if( secureUrlParser.Extract(EUriHost).Compare(
+                        currentSecureUrlParser.Extract(EUriHost)) ) {
+                        enterStatus = HttpUiCallbacks::EEnteringSecurePage;
+                    }
+                    else {
+                        enterStatus = HttpUiCallbacks::EReEnteringSecurePage;
+                    }
+                }
+            } // if (currentSecureUrl)
+            else {
+                if (secureUrl) {
+                    // non secure -> secure
+                    enterStatus = HttpUiCallbacks::EEnteringSecurePage;
+                }
             }
-        }
-        if (request.mainLoad()) {
-            if (!frame->ownerElement()) {
-                if (currentSecureUrl) {
-                    if (!secureUrl) {
-                        // secure -> non secure
-                        if (request.httpMethod() == "POST") {
-                            enterStatus = HttpUiCallbacks::ESubmittingToNonSecurePage;
-                        }
-                        else {
-                            enterStatus = HttpUiCallbacks::EExitingSecurePage;
-                        }
-                    } // if (!secureUrl)
+        } // if (!frame->ownerElement())
+    }
+    else
+    {
+        if (currentSecureUrl) {
+            if (!secureUrl) {
+                // Ask once per page. If we already asked, just use the previous user decision
+                if (topDocumentLoader->userWasAskedToLoadNonSecureItem()) {
+                    ret = topDocumentLoader->userAgreedToLoadNonSecureItem();
                 }
                 else {
-                    if (secureUrl) {
-                        // non secure -> secure
-                        enterStatus = HttpUiCallbacks::EEnteringSecurePage;
-                    }
-                } // if (currentSecureUrl)
-            } // if (!frame->ownerElement())
-        }
-        else
-        {
-            if (currentSecureUrl) {
-                if (!secureUrl) {
-                    // Ask once per page. If we already asked, just use the previous user decision
-                    if (topDocumentLoader->userWasAskedToLoadNonSecureItem()) {
-                        ret = topDocumentLoader->userAgreedToLoadNonSecureItem();
-                    }
-                    else {
-                        enterStatus = HttpUiCallbacks::ESomeItemsNotSecure;
-                    }
-                }
-            }
-            else {
-                if (secureUrl) {
-                    enterStatus = HttpUiCallbacks::ESecureItemInNonSecurePage;
+                    enterStatus = HttpUiCallbacks::ESomeItemsNotSecure;
                 }
             }
         }
+        else {
+            if (secureUrl) {
+                enterStatus = HttpUiCallbacks::ESecureItemInNonSecurePage;
+            }
+        }  
     }
     if (enterStatus != HttpUiCallbacks::EEnterStatusNone) {
         int err = m_httpSessionManager.uiCallback()->aboutToLoadPage(brctl, enterStatus);