webengine/osswebengine/WebCore/platform/network/symbian/ResourceLoaderDelegate.cpp
changeset 10 a359256acfc6
parent 5 10e98eab6f85
child 25 0ed94ceaa377
equal deleted inserted replaced
5:10e98eab6f85 10:a359256acfc6
    83         }
    83         }
    84     }
    84     }
    85     if (r.mainLoad() && frame == frame->page()->mainFrame() && err != KErrNone && err != KErrCancel) {
    85     if (r.mainLoad() && frame == frame->page()->mainFrame() && err != KErrNone && err != KErrCancel) {
    86 		m_httpSessionManager.uiCallback()->reportError(mapHttpErrors(err));
    86 		m_httpSessionManager.uiCallback()->reportError(mapHttpErrors(err));
    87     }
    87     }
       
    88     CBrCtl* brctl = control(frame);
       
    89     m_httpSessionManager.uiCallback()->SetBrowserControl(brctl);
    88     return connection;
    90     return connection;
    89 }
    91 }
    90 
    92 
    91 void ResourceLoaderDelegate::download(ResourceHandle* handle, const ResourceRequest& request,
    93 void ResourceLoaderDelegate::download(ResourceHandle* handle, const ResourceRequest& request,
    92                                       const WebCore::ResourceResponse& response)
    94                                       const WebCore::ResourceResponse& response)
   167     CBrCtl* brctl = control(frame);
   169     CBrCtl* brctl = control(frame);
   168     WebDocumentLoader* topDocumentLoader = static_cast<WebDocumentLoader*>(core(brctl->webView()->mainFrame())->loader()->documentLoader());
   170     WebDocumentLoader* topDocumentLoader = static_cast<WebDocumentLoader*>(core(brctl->webView()->mainFrame())->loader()->documentLoader());
   169     HttpUiCallbacks::TEnterStatus enterStatus = HttpUiCallbacks::EEnterStatusNone;
   171     HttpUiCallbacks::TEnterStatus enterStatus = HttpUiCallbacks::EEnterStatusNone;
   170     bool ret = true;
   172     bool ret = true;
   171     
   173     
   172     if (brctl->settings()->brctlSetting(TBrCtlDefs::ESettingsSecurityWarnings)) {
   174     TUriParser8 secureUrlParser;
   173         TUriParser8 parser;
   175     TUriParser8 currentSecureUrlParser;
   174         bool secureUrl = false;
   176     bool secureUrl = false;
   175         bool currentSecureUrl = false;
   177     bool currentSecureUrl = false;
   176         if (parser.Parse(request.url().des()) == KErrNone) {
   178     if (secureUrlParser.Parse(request.url().des()) == KErrNone) {
   177             TPtrC8 scheme = parser.Extract( EUriScheme );
   179         TPtrC8 scheme = secureUrlParser.Extract( EUriScheme );
   178             secureUrl = scheme.CompareF(KHttps) == 0;
   180         secureUrl = scheme.CompareF(KHttps) == 0;
   179         }
   181     }
   180         if (frame->loader() && frame->loader()->documentLoader()) {
   182     if (frame->loader() && frame->loader()->documentLoader()) {
   181             TPtrC8 url = frame->loader()->documentLoader()->URL().des();
   183         TPtrC8 url = frame->loader()->documentLoader()->URL().des();
   182             TUriParser8 parser;
   184         if (currentSecureUrlParser.Parse(url) == KErrNone) {
   183             if (parser.Parse(url) == KErrNone) {
   185             TPtrC8 scheme = currentSecureUrlParser.Extract( EUriScheme );
   184                 TPtrC8 scheme = parser.Extract( EUriScheme );
   186             currentSecureUrl = scheme.CompareF(KHttps) == 0;
   185                 currentSecureUrl = scheme.CompareF(KHttps) == 0;
   187         }
   186             }
   188     }
   187         }
   189     if (request.mainLoad()) {
   188         if (request.mainLoad()) {
   190         if (!frame->ownerElement()) {
   189             if (!frame->ownerElement()) {
       
   190                 if (currentSecureUrl) {
       
   191                     if (!secureUrl) {
       
   192                         // secure -> non secure
       
   193                         if (request.httpMethod() == "POST") {
       
   194                             enterStatus = HttpUiCallbacks::ESubmittingToNonSecurePage;
       
   195                         }
       
   196                         else {
       
   197                             enterStatus = HttpUiCallbacks::EExitingSecurePage;
       
   198                         }
       
   199                     } // if (!secureUrl)
       
   200                 }
       
   201                 else {
       
   202                     if (secureUrl) {
       
   203                         // non secure -> secure
       
   204                         enterStatus = HttpUiCallbacks::EEnteringSecurePage;
       
   205                     }
       
   206                 } // if (currentSecureUrl)
       
   207             } // if (!frame->ownerElement())
       
   208         }
       
   209         else
       
   210         {
       
   211             if (currentSecureUrl) {
   191             if (currentSecureUrl) {
   212                 if (!secureUrl) {
   192                 if (!secureUrl) {
   213                     // Ask once per page. If we already asked, just use the previous user decision
   193                     // secure -> non secure
   214                     if (topDocumentLoader->userWasAskedToLoadNonSecureItem()) {
   194                     if (request.httpMethod() == "POST") {
   215                         ret = topDocumentLoader->userAgreedToLoadNonSecureItem();
   195                         enterStatus = HttpUiCallbacks::ESubmittingToNonSecurePage;
   216                     }
   196                     }
   217                     else {
   197                     else {
   218                         enterStatus = HttpUiCallbacks::ESomeItemsNotSecure;
   198                         enterStatus = HttpUiCallbacks::EExitingSecurePage;
   219                     }
   199                     }
   220                 }
   200                 } // if (!secureUrl)
   221             }
   201                 else {
       
   202 					// secure -> secure
       
   203                     if( secureUrlParser.Extract(EUriHost).Compare(
       
   204                         currentSecureUrlParser.Extract(EUriHost)) ) {
       
   205                         enterStatus = HttpUiCallbacks::EEnteringSecurePage;
       
   206                     }
       
   207                     else {
       
   208                         enterStatus = HttpUiCallbacks::EReEnteringSecurePage;
       
   209                     }
       
   210                 }
       
   211             } // if (currentSecureUrl)
   222             else {
   212             else {
   223                 if (secureUrl) {
   213                 if (secureUrl) {
   224                     enterStatus = HttpUiCallbacks::ESecureItemInNonSecurePage;
   214                     // non secure -> secure
   225                 }
   215                     enterStatus = HttpUiCallbacks::EEnteringSecurePage;
   226             }
   216                 }
   227         }
   217             }
       
   218         } // if (!frame->ownerElement())
       
   219     }
       
   220     else
       
   221     {
       
   222         if (currentSecureUrl) {
       
   223             if (!secureUrl) {
       
   224                 // Ask once per page. If we already asked, just use the previous user decision
       
   225                 if (topDocumentLoader->userWasAskedToLoadNonSecureItem()) {
       
   226                     ret = topDocumentLoader->userAgreedToLoadNonSecureItem();
       
   227                 }
       
   228                 else {
       
   229                     enterStatus = HttpUiCallbacks::ESomeItemsNotSecure;
       
   230                 }
       
   231             }
       
   232         }
       
   233         else {
       
   234             if (secureUrl) {
       
   235                 enterStatus = HttpUiCallbacks::ESecureItemInNonSecurePage;
       
   236             }
       
   237         }  
   228     }
   238     }
   229     if (enterStatus != HttpUiCallbacks::EEnterStatusNone) {
   239     if (enterStatus != HttpUiCallbacks::EEnterStatusNone) {
   230         int err = m_httpSessionManager.uiCallback()->aboutToLoadPage(brctl, enterStatus);
   240         int err = m_httpSessionManager.uiCallback()->aboutToLoadPage(brctl, enterStatus);
   231         if (err != KErrNone) {
   241         if (err != KErrNone) {
   232             ret = false;
   242             ret = false;