diff -r 10e98eab6f85 -r a359256acfc6 webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp --- 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);