<!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>[20033] S60/trunk/WebKit</title>
</head>
<body>
<div id="msg">
<dl>
<dt>Revision</dt> <dd><a href="http://trac.webkit.org/projects/webkit/changeset/20033">20033</a></dd>
<dt>Author</dt> <dd>brmorris</dd>
<dt>Date</dt> <dd>2007-03-07 15:05:42 -0800 (Wed, 07 Mar 2007)</dd>
</dl>
<h3>Log Message</h3>
<pre>vbradley, reviewed by Sachin
DESC: merge r20032 to s60/trunk. SLON-6VZ8Vu - Web Browser crashes when attempting to view a local file
http://bugs.webkit.org/show_bug.cgi?id=12927</pre>
<h3>Modified Paths</h3>
<ul>
<li><a href="#S60trunkWebKitChangeLog">S60/trunk/WebKit/ChangeLog</a></li>
<li><a href="#S60trunkWebKitResourceLoadersrcDefaultContentHandlercpp">S60/trunk/WebKit/ResourceLoader/src/DefaultContentHandler.cpp</a></li>
</ul>
</div>
<div id="patch">
<h3>Diff</h3>
<a id="S60trunkWebKitChangeLog"></a>
<div class="modfile"><h4>Modified: S60/trunk/WebKit/ChangeLog (20032 => 20033)</h4>
<pre class="diff"><span>
<span class="info">--- S60/trunk/WebKit/ChangeLog        2007-03-07 23:04:42 UTC (rev 20032)
+++ S60/trunk/WebKit/ChangeLog        2007-03-07 23:05:42 UTC (rev 20033)
</span><span class="lines">@@ -1,3 +1,11 @@
</span><ins>+vbradley, reviewed by Sachin
+ DESC: merge r20032 to s60/trunk. SLON-6VZ8Vu - Web Browser crashes when attempting to view a local file
+ http://bugs.webkit.org/show_bug.cgi?id=12927
+
+ * ResourceLoader/src/DefaultContentHandler.cpp:
+ (CTempFile::ConstructL):
+ (CDefaultContentHandler::ProcessHeadersL):
+
</ins><span class="cx"> yinxcai, reviewed by <Sachin>
</span><span class="cx"> DESC: ASOG-6YTLNA -- Remove __BROWSER_OSS_ENGINE flag from webkit.iby and webkitresources.iby
</span><span class="cx"> http://bugs.webkit.org/show_bug.cgi?id=12935
</span></span></pre></div>
<a id="S60trunkWebKitResourceLoadersrcDefaultContentHandlercpp"></a>
<div class="modfile"><h4>Modified: S60/trunk/WebKit/ResourceLoader/src/DefaultContentHandler.cpp (20032 => 20033)</h4>
<pre class="diff"><span>
<span class="info">--- S60/trunk/WebKit/ResourceLoader/src/DefaultContentHandler.cpp        2007-03-07 23:04:42 UTC (rev 20032)
+++ S60/trunk/WebKit/ResourceLoader/src/DefaultContentHandler.cpp        2007-03-07 23:05:42 UTC (rev 20033)
</span><span class="lines">@@ -56,7 +56,6 @@
</span><span class="cx"> #include <eikenv.h>
</span><span class="cx"> #include <Uri16.h>
</span><span class="cx">
</span><del>-
</del><span class="cx"> // EXTERNAL DATA STRUCTURES
</span><span class="cx">
</span><span class="cx"> // EXTERNAL FUNCTION PROTOTYPES
</span><span class="lines">@@ -95,24 +94,28 @@
</span><span class="cx"> void CTempFile::ConstructL(HBufC* aFileName)
</span><span class="cx"> {
</span><span class="cx"> User::LeaveIfError( iFsSession.Connect() );
</span><del>- // make any directories in KTempFilePath that do not yet exist
</del><ins>+
+ // Make any directories in KTempFilePath that do not yet exist
</ins><span class="cx"> iFsSession.MkDirAll( KTempFilePath );
</span><ins>+
</ins><span class="cx"> TInt err = aFileName == NULL ? KErrGeneral : KErrNone;
</span><del>- if(aFileName != NULL)
</del><ins>+
+ // Create (or replace) our new file with the filename passed in
+ if ( aFileName != NULL )
</ins><span class="cx"> {
</span><del>- iFileName = HBufC::NewL(aFileName->Length() + KTempFilePath().Length());
- iFileName->Des().Copy(KTempFilePath);
- iFileName->Des().Append(*aFileName);
- err = iFile.Replace(iFsSession, *iFileName, EFileWrite);
</del><ins>+ iFileName = HBufC::NewL( aFileName->Length() + KTempFilePath().Length() );
+ iFileName->Des().Copy( KTempFilePath );
+ iFileName->Des().Append( *aFileName );
+ err = iFile.Replace( iFsSession, *iFileName, EFileWrite );
</ins><span class="cx"> }
</span><span class="cx">
</span><del>- //Use temp file even if Replace function failed.
- if(err != KErrNone)
</del><ins>+ // Create a temp file, if Replace() failed, or aFileName=NULL
+ if ( err != KErrNone )
</ins><span class="cx"> {
</span><span class="cx"> delete iFileName;
</span><del>- iFileName = 0;
</del><ins>+ iFileName = NULL;
</ins><span class="cx"> TFileName tempName;
</span><del>- User::LeaveIfError(iFile.Temp( iFsSession, KTempFilePath, tempName, EFileWrite ));
</del><ins>+ User::LeaveIfError( iFile.Temp( iFsSession, KTempFilePath, tempName, EFileWrite ) );
</ins><span class="cx"> iFileName = tempName.AllocL();
</span><span class="cx"> }
</span><span class="cx"> }
</span><span class="lines">@@ -278,14 +281,25 @@
</span><span class="cx">
</span><span class="cx"> TUriParser parser;
</span><span class="cx"> HBufC* fileName = NULL;
</span><del>- if(parser.Parse( headerInfo.ResponseUrl() ) == KErrNone )
</del><ins>+
+ TInt status = parser.Parse( headerInfo.ResponseUrl() );
+ if ( status == KErrNone )
</ins><span class="cx"> {
</span><del>- fileName = parser.GetFileNameL(EUriFileNameTail);
</del><ins>+ TPtrC path = parser.Extract( EUriPath );
+ TInt index = path.LocateReverse('/');
+ if ( index >= 0 )
+ {
+ // Get the filename and extension
+ path.Set( path.Right( path.Length() - index - 1 ) );
+ fileName = path.AllocL();
+ }
</ins><span class="cx"> }
</span><ins>+
</ins><span class="cx"> CleanupStack::PushL(fileName);
</span><span class="cx"> iContentFile = CTempFile::NewL(fileName);
</span><span class="cx"> CleanupStack::PopAndDestroy(fileName);
</span><del>- // set response attributes
</del><ins>+
+ // Set response attributes
</ins><span class="cx"> iContentType = headerInfo.ContentType().AllocL();
</span><span class="cx"> iCharset = headerInfo.Charset().AllocL();
</span><span class="cx"> iUrl = headerInfo.ResponseUrl().AllocL();
</span></span></pre>
</div>
</div>
</body>
</html>