<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head><meta http-equiv="content-type" content="text/html; charset=utf-8" /><style type="text/css"><!--
#msg dl { border: 1px #006 solid; background: #369; padding: 6px; color: #fff; }
#msg dt { float: left; width: 6em; font-weight: bold; }
#msg dt:after { content:':';}
#msg dl, #msg dt, #msg ul, #msg li, #header, #footer { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; }
#msg dl a { font-weight: bold}
#msg dl a:link { color:#fc3; }
#msg dl a:active { color:#ff0; }
#msg dl a:visited { color:#cc6; }
h3 { font-family: verdana,arial,helvetica,sans-serif; font-size: 10pt; font-weight: bold; }
#msg pre { overflow: auto; background: #ffc; border: 1px #fc0 solid; padding: 6px; }
#msg ul, pre { overflow: auto; }
#header, #footer { color: #fff; background: #636; border: 1px #300 solid; padding: 6px; }
#patch { width: 100%; }
#patch h4 {font-family: verdana,arial,helvetica,sans-serif;font-size:10pt;padding:8px;background:#369;color:#fff;margin:0;}
#patch .propset h4, #patch .binary h4 {margin:0;}
#patch pre {padding:0;line-height:1.2em;margin:0;}
#patch .diff {width:100%;background:#eee;padding: 0 0 10px 0;overflow:auto;}
#patch .propset .diff, #patch .binary .diff {padding:10px 0;}
#patch span {display:block;padding:0 10px;}
#patch .modfile, #patch .addfile, #patch .delfile, #patch .propset, #patch .binary, #patch .copfile {border:1px solid #ccc;margin:10px 0;}
#patch ins {background:#dfd;text-decoration:none;display:block;padding:0 10px;}
#patch del {background:#fdd;text-decoration:none;display:block;padding:0 10px;}
#patch .lines, .info {color:#888;background:#fff;}
--></style>
<title>[20687] S60/branches/3.1m/WebKit</title>
</head>
<body>
<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/20687">20687</a></dd>
<dt>Author</dt> <dd>spadma</dd>
<dt>Date</dt> <dd>2007-04-03 13:51:55 -0700 (Tue, 03 Apr 2007)</dd>
</dl>
<h3>Log Message</h3>
<pre>2007-03-30 ligman <joseph.ligman@nokia.com>
Reviewed by Sachin.
DESC: When the request dispatcher does not define a loader
no pending transaction will exist, so set this undefined status
to KErrCancel so the callers don't wait indefinitely. Also, create, use,
and close the download property string when it's needed to avoid closing
the rstring after the string pool which it's using has somehow gone away.
http://bugs.webkit.org/show_bug.cgi?id=13232
* BrowserView/src/WebKitLoader.cpp:
(CWebKitLoader::LoadPageL):
* ResourceLoader/inc/BaseTransaction.h:
* ResourceLoader/src/HttpTransaction.cpp:
(CHttpTransaction::~CHttpTransaction):
(CHttpTransaction::MHFRunL):
(CHttpTransaction::MHFRunError):
(CHttpTransaction::HandleGotResponseHeadersL):</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#S60branches31mWebKitBrowserViewsrcWebKitLoadercpp">S60/branches/3.1m/WebKit/BrowserView/src/WebKitLoader.cpp</a></li>
<li><a href="#S60branches31mWebKitChangeLog">S60/branches/3.1m/WebKit/ChangeLog</a></li>
<li><a href="#S60branches31mWebKitResourceLoaderincBaseTransactionh">S60/branches/3.1m/WebKit/ResourceLoader/inc/BaseTransaction.h</a></li>
<li><a href="#S60branches31mWebKitResourceLoadersrcHttpTransactioncpp">S60/branches/3.1m/WebKit/ResourceLoader/src/HttpTransaction.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="S60branches31mWebKitBrowserViewsrcWebKitLoadercpp"></a>
<div class="modfile"><h4>Modified: S60/branches/3.1m/WebKit/BrowserView/src/WebKitLoader.cpp (20686 => 20687)</h4>
<pre class="diff"><span>
<span class="info">--- S60/branches/3.1m/WebKit/BrowserView/src/WebKitLoader.cpp        2007-04-03 20:50:30 UTC (rev 20686)
+++ S60/branches/3.1m/WebKit/BrowserView/src/WebKitLoader.cpp        2007-04-03 20:51:55 UTC (rev 20687)
</span><span class="lines">@@ -282,6 +282,11 @@
</span><span class="cx"> iWebKitControl->ProgressStarted();
</span><span class="cx"> }
</span><span class="cx"> }
</span><ins>+ else if ( status == KErrNone && !urlLoader ) //There is no pending transaction when the urlloader
+ { //does not exist. For lack of a better solution, setting
+ status = KErrCancel; //the status to KErrCancel so the callers don't wait indefinitely.
+ }
+
</ins><span class="cx"> return status;
</span><span class="cx"> }
</span><span class="cx">
</span></span></pre></div>
<a id="S60branches31mWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: S60/branches/3.1m/WebKit/ChangeLog (20686 => 20687)</h4>
<pre class="diff"><span>
<span class="info">--- S60/branches/3.1m/WebKit/ChangeLog        2007-04-03 20:50:30 UTC (rev 20686)
+++ S60/branches/3.1m/WebKit/ChangeLog        2007-04-03 20:51:55 UTC (rev 20687)
</span><span class="lines">@@ -1,3 +1,22 @@
</span><ins>+2007-03-30 ligman <joseph.ligman@nokia.com>
+
+ Reviewed by Sachin.
+ DESC: When the request dispatcher does not define a loader
+ no pending transaction will exist, so set this undefined status
+ to KErrCancel so the callers don't wait indefinitely. Also, create, use,
+ and close the download property string when it's needed to avoid closing
+ the rstring after the string pool which it's using has somehow gone away.
+ http://bugs.webkit.org/show_bug.cgi?id=13232
+
+ * BrowserView/src/WebKitLoader.cpp:
+ (CWebKitLoader::LoadPageL):
+ * ResourceLoader/inc/BaseTransaction.h:
+ * ResourceLoader/src/HttpTransaction.cpp:
+ (CHttpTransaction::~CHttpTransaction):
+ (CHttpTransaction::MHFRunL):
+ (CHttpTransaction::MHFRunError):
+ (CHttpTransaction::HandleGotResponseHeadersL):
+
</ins><span class="cx"> 2007-03-27 raalexan <rasvan.alexandrescu@nokia.com>
</span><span class="cx">
</span><span class="cx"> Reviewed by Yongjun.
</span></span></pre></div>
<a id="S60branches31mWebKitResourceLoaderincBaseTransactionh"></a>
<div class="modfile"><h4>Modified: S60/branches/3.1m/WebKit/ResourceLoader/inc/BaseTransaction.h (20686 => 20687)</h4>
<pre class="diff"><span>
<span class="info">--- S60/branches/3.1m/WebKit/ResourceLoader/inc/BaseTransaction.h        2007-04-03 20:50:30 UTC (rev 20686)
+++ S60/branches/3.1m/WebKit/ResourceLoader/inc/BaseTransaction.h        2007-04-03 20:51:55 UTC (rev 20687)
</span><span class="lines">@@ -483,8 +483,6 @@
</span><span class="cx"> HBufC* iFragment; // owned
</span><span class="cx"> // != -1 if donwloadmanager has this transaction
</span><span class="cx"> TInt32 iDownloadId;
</span><del>- // downloadmanager's property
- RStringF iDownloadPropStr;
</del><span class="cx"> //
</span><span class="cx"> CPeriodic* iSubmitTimer; // owned
</span><span class="cx">
</span></span></pre></div>
<a id="S60branches31mWebKitResourceLoadersrcHttpTransactioncpp"></a>
<div class="modfile"><h4>Modified: S60/branches/3.1m/WebKit/ResourceLoader/src/HttpTransaction.cpp (20686 => 20687)</h4>
<pre class="diff"><span>
<span class="info">--- S60/branches/3.1m/WebKit/ResourceLoader/src/HttpTransaction.cpp        2007-04-03 20:50:30 UTC (rev 20686)
+++ S60/branches/3.1m/WebKit/ResourceLoader/src/HttpTransaction.cpp        2007-04-03 20:51:55 UTC (rev 20687)
</span><span class="lines">@@ -212,22 +212,21 @@
</span><span class="cx"> {
</span><span class="cx"> delete iPBuf;
</span><span class="cx"> dead = ETrue;
</span><del>-
- if (iCacheSupply)
- {
- iCacheSupply->CloseRequest();
- }
-
</del><ins>+
+ if (iCacheSupply)
+ {
+ iCacheSupply->CloseRequest();
+ }
+
</ins><span class="cx"> if( iDownloadId == -1 && iTrans )
</span><span class="cx"> {
</span><del>- iDownloadPropStr.Close();
</del><span class="cx"> // close transaction
</span><span class="cx"> iTrans->Close();
</span><span class="cx"> delete iTrans;
</span><span class="cx"> }
</span><del>-
</del><ins>+
</ins><span class="cx"> delete iCacheSupply;
</span><del>- delete iPostDataSupplier;
</del><ins>+ delete iPostDataSupplier;
</ins><span class="cx"> }
</span><span class="cx">
</span><span class="cx"> // -----------------------------------------------------------------------------
</span><span class="lines">@@ -297,11 +296,10 @@
</span><span class="cx"> if( iDownloadId != -1 )
</span><span class="cx"> {
</span><span class="cx"> THTTPHdrVal callback;
</span><del>- RStringPool strPool = aTransaction.Session().StringPool();
</del><ins>+ RStringF downloadPropStr = aTransaction.Session().StringPool().OpenFStringL( _L8( "TransactionCallback" ) );
</ins><span class="cx"> RHTTPTransactionPropertySet propSet = aTransaction.PropertySet();
</span><del>-
</del><span class="cx"> // this is a transaction, already forwarded to download manager
</span><del>- if( propSet.Property( iDownloadPropStr, callback ) )
</del><ins>+ if( propSet.Property( downloadPropStr, callback ) )
</ins><span class="cx"> {
</span><span class="cx"> MHTTPTransactionCallback* callbackPtr = REINTERPRET_CAST(
</span><span class="cx"> MHTTPTransactionCallback*, callback.Int() );
</span><span class="lines">@@ -316,6 +314,7 @@
</span><span class="cx"> // must have the property set
</span><span class="cx"> __ASSERT_DEBUG( EFalse, TLoaderUtils::PanicLoader( KErrGeneral ) );
</span><span class="cx"> }
</span><ins>+ downloadPropStr.Close();
</ins><span class="cx"> }
</span><span class="cx"> else
</span><span class="cx"> {
</span><span class="lines">@@ -448,10 +447,13 @@
</span><span class="cx"> //
</span><span class="cx"> if( iDownloadId != -1 )
</span><span class="cx"> {
</span><del>- THTTPHdrVal callback;
</del><ins>+
+ // save downloadmanager callback property id
+ RStringF downloadPropStr = aTransaction.Session().StringPool().OpenFStringL( _L8( "TransactionCallback" ) );
+
+ THTTPHdrVal callback;
</ins><span class="cx"> RHTTPTransactionPropertySet propSet = aTransaction.PropertySet();
</span><del>-
- if( propSet.Property( iDownloadPropStr, callback ) )
</del><ins>+ if( propSet.Property( downloadPropStr, callback ) )
</ins><span class="cx"> {
</span><span class="cx"> MHTTPTransactionCallback* callbackPtr = REINTERPRET_CAST(
</span><span class="cx"> MHTTPTransactionCallback*, callback.Int() );
</span><span class="lines">@@ -466,6 +468,9 @@
</span><span class="cx"> // must have the property set
</span><span class="cx"> __ASSERT_DEBUG( EFalse, TLoaderUtils::PanicLoader( KErrGeneral ) );
</span><span class="cx"> }
</span><ins>+
+ downloadPropStr.Close();
+
</ins><span class="cx"> }
</span><span class="cx"> else
</span><span class="cx"> {
</span><span class="lines">@@ -685,9 +690,7 @@
</span><span class="cx"> {
</span><span class="cx"> // close cache item as it is handled by the download mgr
</span><span class="cx"> iCacheSupply->CloseRequest();
</span><del>- }
- // save downloadmanager callback property id
- iDownloadPropStr = iTrans->Session().StringPool().OpenFStringL( _L8( "TransactionCallback" ) );
</del><ins>+ }
</ins><span class="cx"> // turn off pipelining
</span><span class="cx"> CLoaderContainer* loaderContainer = static_cast<CLoaderContainer*>
</span><span class="cx"> (TWebCoreLoaderContainer::LoaderContainer());
</span></span></pre>
</div>
</div>
</body>
</html>