[prev in list] [next in list] [prev in thread] [next in thread]
List: kfm-devel
Subject: progress patch
From: Dirk Mueller <mueller () kde ! org>
Date: 2001-07-26 17:05:04
[Download RAW message or body]
Hi,
this is a prelimiary version of working progress information. It has a few
defiencies currently (one of them is that it is not well tested). Namely
there are:
- speed information is broken, see the FIXME in the patch. I'm not sure if I
should accumulate the speed info of all jobs running, or just of the main
HTML page. if the latter, a slot that converts the unsigned long to
an int should suffice. or ?
- it does now no longer only count images, but instead all referenced
objects. I did not yet adapt the i18n-strings to reflect that, anyway
as images are the majority of objects this should be not a big issue
- accumulating information over subframes is not yet implemented. I don't
know how to find out if I'm the "toplevel" frameset and how I can find a
paretn khtmlpart if I'm a FRAME. Simon ?
Besides that, the patch has also some other minor fixes and changes, as
- fixing the broken baseurl handling we had all over the place. fixes
the referrer string.
- cleaning the related signatures up.
- implementing attribute width for <select>. its CSS2 min-width, but as we
don't have a support for that yet I added a hack.
Please comment.
Dirk
["progress.patch" (text/plain)]
? l
? html/htmltokenizer.loT
Index: khtml_part.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/khtml_part.cpp,v
retrieving revision 1.525
diff -u -3 -d -p -r1.525 khtml_part.cpp
--- khtml_part.cpp 2001/07/24 18:10:50 1.525
+++ khtml_part.cpp 2001/07/26 16:55:08
@@ -157,8 +157,9 @@ public:
m_startOffset = m_endOffset = 0;
m_startBeforeEnd = true;
m_linkCursor = KCursor::handCursor();
- m_loadedImages = 0;
- m_totalImageCount = 0;
+ m_loadedObjects = 0;
+ m_totalObjectCount = 0;
+ m_jobPercent = 0;
m_haveEncoding = false;
m_activeFrame = 0L;
m_findDialog = 0;
@@ -354,8 +355,9 @@ public:
QCursor m_linkCursor;
QTimer m_scrollTimer;
- unsigned long m_loadedImages;
- unsigned long m_totalImageCount;
+ unsigned long m_loadedObjects;
+ unsigned long m_totalObjectCount;
+ unsigned int m_jobPercent;
KHTMLFind *m_findDialog;
@@ -384,8 +386,7 @@ namespace khtml {
{
m_part = part;
m_priv = priv;
- // the "foo" is needed, so that the docloader for the empty document \
doesn't cancel this request.
- m_cachedSheet = Cache::requestStyleSheet(0, url, DOMString("foo") );
+ m_cachedSheet = Cache::requestStyleSheet(0, url );
if (m_cachedSheet)
m_cachedSheet->ref( this );
}
@@ -524,10 +525,12 @@ void KHTMLPart::init( KHTMLView *view, G
d->m_popupMenuXML = KXMLGUIFactory::readConfigFile( locate( "data", \
"khtml/khtml_popupmenu.rc", KHTMLFactory::instance() ) );
- connect( khtml::Cache::loader(), SIGNAL( requestDone( const DOM::DOMString &, \
khtml::CachedObject *) ),
- this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, \
khtml::CachedObject *) ) );
- connect( khtml::Cache::loader(), SIGNAL( requestFailed( const DOM::DOMString &, \
khtml::CachedObject *) ),
- this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, \
khtml::CachedObject *) ) ); + connect( khtml::Cache::loader(), SIGNAL( \
requestStarted( khtml::DocLoader*, khtml::CachedObject* ) ), + this, SLOT( \
slotLoaderRequestStarted( khtml::DocLoader*, khtml::CachedObject* ) ) ); + connect( \
khtml::Cache::loader(), SIGNAL( requestDone( khtml::DocLoader*, khtml::CachedObject \
*) ), + this, SLOT( slotLoaderRequestDone( khtml::DocLoader*, \
khtml::CachedObject *) ) ); + connect( khtml::Cache::loader(), SIGNAL( \
requestFailed( khtml::DocLoader*, khtml::CachedObject *) ), + this, SLOT( \
slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *) ) );
findTextBegin(); //reset find variables
@@ -557,12 +560,15 @@ KHTMLPart::~KHTMLPart()
if ( d->m_job )
d->m_job->kill();
- khtml::Cache::loader()->cancelRequests( m_url.url() );
+ if ( d->m_doc && d->m_doc->docLoader() )
+ khtml::Cache::loader()->cancelRequests( d->m_doc->docLoader() );
- disconnect( khtml::Cache::loader(), SIGNAL( requestDone( const DOM::DOMString &, \
khtml::CachedObject * ) ),
- this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, \
khtml::CachedObject * ) ) );
- disconnect( khtml::Cache::loader(), SIGNAL( requestFailed( const DOM::DOMString &, \
khtml::CachedObject * ) ),
- this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, \
khtml::CachedObject * ) ) ); + disconnect( khtml::Cache::loader(), SIGNAL( \
requestStarted( khtml::DocLoader*, khtml::CachedObject* ) ), + this, SLOT( \
slotLoaderRequestStarted( khtml::DocLoader*, khtml::CachedObject* ) ) ); + \
disconnect( khtml::Cache::loader(), SIGNAL( requestDone( khtml::DocLoader*, \
khtml::CachedObject *) ), + this, SLOT( slotLoaderRequestDone( \
khtml::DocLoader, khtml::CachedObject *) ) ); + disconnect( khtml::Cache::loader(), \
SIGNAL( requestFailed( khtml::DocLoader*, khtml::CachedObject *) ), + this, \
SLOT( slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *) ) );
clear();
@@ -704,8 +710,15 @@ bool KHTMLPart::openURL( const KURL &url
kdDebug( 6050 ) << "KHTMLPart::openURL now (before started) m_url = " << \
m_url.url() << endl;
- emit started( d->m_job );
+#warning FIXME
+// connect( d->m_job, SIGNAL( speed( KIO::Job*, unsigned long ) ),
+// d->m_extension, SLOT( speedProgress( int ) ) );
+ connect( d->m_job, SIGNAL( percent( KIO::Job*, unsigned long ) ),
+ this, SLOT( slotJobPercent( KIO::Job*, unsigned long ) ) );
+
+ emit started( 0L );
+
return true;
}
@@ -739,7 +752,8 @@ bool KHTMLPart::closeURL()
d->m_workingURL = KURL();
- khtml::Cache::loader()->cancelRequests( m_url.url() );
+ if ( d->m_doc && d->m_doc->docLoader() )
+ khtml::Cache::loader()->cancelRequests( d->m_doc->docLoader() );
// Stop any started redirections as well!! (DA)
if ( d && d->m_redirectionTimer.isActive() )
@@ -1136,8 +1150,9 @@ void KHTMLPart::clear()
d->m_startOffset = 0;
d->m_endOffset = 0;
- d->m_totalImageCount = 0;
- d->m_loadedImages = 0;
+ d->m_totalObjectCount = 0;
+ d->m_loadedObjects = 0;
+ d->m_jobPercent = 0;
if ( !d->m_haveEncoding )
d->m_encoding = QString::null;
@@ -1493,55 +1508,58 @@ void KHTMLPart::slotFinishedParsing()
if ( !m_url.encodedHtmlRef().isEmpty() )
gotoAnchor( m_url.encodedHtmlRef() );
-#if 0
- HTMLCollectionImpl imgColl( d->m_doc, HTMLCollectionImpl::DOC_IMAGES );
+ checkCompleted();
+}
- d->m_totalImageCount = 0;
- KURL::List imageURLs;
- unsigned long i = 0;
- unsigned long len = imgColl.length();
- for (; i < len; i++ )
+void KHTMLPart::slotLoaderRequestStarted( khtml::DocLoader* dl, khtml::CachedObject \
*obj ) +{
+ if ( obj && obj->type() == khtml::CachedObject::Image )
{
- NodeImpl *node = imgColl.item( i );
- if ( node->id() != ID_IMG )
- continue;
-
- QString imgURL = static_cast<DOM::ElementImpl *>( node )->getAttribute( ATTR_SRC \
).string();
- KURL url;
-
- if ( KURL::isRelativeURL( imgURL ) )
- url = completeURL( imgURL );
- else
- url = KURL( imgURL );
-
- if ( !imageURLs.contains( url ) )
- {
- d->m_totalImageCount++;
- imageURLs.append( url );
+ d->m_totalObjectCount++;
+ if ( d->m_loadedObjects <= d->m_totalObjectCount ) {
+ emit d->m_extension->infoMessage( i18n( "%1 of 1 Image loaded", "%1 of %n \
Images loaded", d->m_totalObjectCount ).arg( d->m_loadedObjects ) ); + \
QTimer::singleShot( 0, this, SLOT( slotProgressUpdate() ) ); }
}
-#endif
-
- checkCompleted();
}
-void KHTMLPart::slotLoaderRequestDone( const DOM::DOMString &/*baseURL*/, \
khtml::CachedObject *obj ) +void KHTMLPart::slotLoaderRequestDone( khtml::DocLoader* \
dl, khtml::CachedObject *obj ) {
-
if ( obj && obj->type() == khtml::CachedObject::Image )
{
- d->m_loadedImages++;
+ d->m_loadedObjects++;
// in case we have more images than we originally found, then they are most \
likely loaded by some
// javascript code. as we can't find out the exact number anyway we skip \
displaying any further image // loading info message :P
- if ( d->m_loadedImages <= d->m_totalImageCount && autoloadImages())
- emit d->m_extension->infoMessage( i18n( "%1 of 1 Image loaded", "%1 of %n \
Images loaded", d->m_totalImageCount ).arg( d->m_loadedImages ) ); + if ( \
d->m_loadedObjects <= d->m_totalObjectCount ) { + emit \
d->m_extension->infoMessage( i18n( "%1 of 1 Image loaded", "%1 of %n Images loaded", \
d->m_totalObjectCount ).arg( d->m_loadedObjects ) ); + QTimer::singleShot( 0, \
this, SLOT( slotProgressUpdate() ) ); + }
}
+
checkCompleted();
}
+void KHTMLPart::slotProgressUpdate()
+{
+ int percent;
+ if ( d->m_loadedObjects < d->m_totalObjectCount )
+ percent = d->m_jobPercent / 4 + ( d->m_loadedObjects*300 ) / ( \
4*d->m_totalObjectCount ); + else
+ percent = d->m_jobPercent;
+
+ emit d->m_extension->loadingProgress( percent );
+}
+
+void KHTMLPart::slotJobPercent( KIO::Job* job, unsigned long percent )
+{
+ d->m_jobPercent = percent;
+
+ QTimer::singleShot( 0, this, SLOT( slotProgressUpdate() ) );
+}
+
void KHTMLPart::checkCompleted()
{
//kdDebug( 6050 ) << "KHTMLPart::checkCompleted() parsing: " << d->m_bParsing << \
endl; @@ -1569,7 +1587,6 @@ void KHTMLPart::checkCompleted()
d->m_focusNodeRestored = true;
}
- int requests = 0;
// Any frame that hasn't completed yet ?
ConstFrameIt it = d->m_frames.begin();
@@ -1583,8 +1600,11 @@ void KHTMLPart::checkCompleted()
return;
// Still waiting for images/scripts from the loader ?
- requests = khtml::Cache::loader()->numRequests( m_url.url() );
- //kdDebug( 6060 ) << "number of loader requests: " << requests << endl;
+ int requests = 0;
+ if ( d->m_doc->docLoader() )
+ requests = khtml::Cache::loader()->numRequests( d->m_doc->docLoader() );
+
+ kdDebug( 6060 ) << "number of loader requests: " << requests << endl;
if ( requests > 0 )
return;
@@ -3846,7 +3866,6 @@ void KHTMLPart::khtmlMouseMoveEvent( kht
void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
{
- QMouseEvent *_mouse = event->qmouseEvent();
DOM::Node innerNode = event->innerNode();
d->m_mousePressNode = DOM::Node();
@@ -3858,6 +3877,7 @@ void KHTMLPart::khtmlMouseReleaseEvent(
d->m_bMousePressed = false;
#ifndef QT_NO_CLIPBOARD
+ QMouseEvent *_mouse = event->qmouseEvent();
if ((_mouse->button() == MidButton) && (event->url() == 0))
{
QClipboard *cb = QApplication::clipboard();
Index: khtml_part.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/khtml_part.h,v
retrieving revision 1.146
diff -u -3 -d -p -r1.146 khtml_part.h
--- khtml_part.h 2001/07/22 18:57:35 1.146
+++ khtml_part.h 2001/07/26 16:55:08
@@ -58,6 +58,7 @@ namespace DOM
namespace khtml
{
+ class DocLoader;
class RenderPart;
class RenderPartObject;
struct ChildFrame;
@@ -933,9 +934,7 @@ private slots:
void slotLoadImages();
/**
- * We try to submit the form again
- * if someone tries to submit a form
- * while parsing
+ * @internal
*/
void submitFormAgain();
@@ -964,7 +963,8 @@ private slots:
*/
void slotChildURLRequest( const KURL &url, const KParts::URLArgs &args );
- void slotLoaderRequestDone( const DOM::DOMString &baseURL, khtml::CachedObject \
*obj ); + void slotLoaderRequestStarted( khtml::DocLoader*, khtml::CachedObject* \
obj); + void slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *obj );
void checkCompleted();
/**
@@ -981,9 +981,21 @@ private slots:
void slotSelectAll();
+ /**
+ * @internal
+ */
+ void slotProgressUpdate();
+
+ /**
+ * @internal
+ */
+ void slotJobPercent(KIO::Job*, unsigned long);
+
protected:
- // @internal
- void emitSelectionChanged(); // ### KDE 3.0: make private
+ /**
+ * @internal
+ */
+ void emitSelectionChanged(); // ### KDE 3.0: make private
private:
void urlSelected( const QString &url, int button, int state,
Index: khtmlview.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/khtmlview.cpp,v
retrieving revision 1.395
diff -u -3 -d -p -r1.395 khtmlview.cpp
--- khtmlview.cpp 2001/07/21 22:43:06 1.395
+++ khtmlview.cpp 2001/07/26 16:55:09
@@ -941,6 +941,7 @@ void KHTMLView::print()
m_part->xmlDocImpl()->applyChanges();
QApplication::restoreOverrideCursor();
}
+
delete printer;
}
Index: css/css_ruleimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/css_ruleimpl.cpp,v
retrieving revision 1.15
diff -u -3 -d -p -r1.15 css_ruleimpl.cpp
--- css/css_ruleimpl.cpp 2001/06/05 11:54:51 1.15
+++ css/css_ruleimpl.cpp 2001/07/26 16:55:09
@@ -117,7 +117,7 @@ CSSImportRuleImpl::CSSImportRuleImpl(Sty
m_lstMedia = media;
m_strHref = href;
m_styleSheet = 0;
- kdDebug( 6080 ) << "CSSImportRule: requesting sheet " << href.string() << " " << \
baseUrl().string() << endl; + kdDebug( 6080 ) << "CSSImportRule: requesting sheet \
" << href.string() << endl;
khtml::DocLoader *docLoader = 0;
StyleBaseImpl *root = this;
@@ -128,7 +128,7 @@ CSSImportRuleImpl::CSSImportRuleImpl(Sty
// we must have a docLoader !
// ### pass correct charset here!!
- m_cachedSheet = docLoader->requestStyleSheet(href, baseUrl(), QString::null);
+ m_cachedSheet = docLoader->requestStyleSheet(href, QString::null);
m_cachedSheet->ref(this);
m_loading = true;
Index: css/css_valueimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/css_valueimpl.cpp,v
retrieving revision 1.48
diff -u -3 -d -p -r1.48 css_valueimpl.cpp
--- css/css_valueimpl.cpp 2001/07/19 21:37:56 1.48
+++ css/css_valueimpl.cpp 2001/07/26 16:55:09
@@ -112,9 +112,9 @@ bool CSSStyleDeclarationImpl::removeProp
m_node->setChanged(true);
}
return true;
-}
-
+}
+
DOMString CSSStyleDeclarationImpl::removeProperty( const DOMString &propertyName )
{
int id = getPropertyID(propertyName.string().lower().ascii(), \
propertyName.length()); @@ -679,7 +679,7 @@ RectImpl::~RectImpl()
// -----------------------------------------------------------------
-CSSImageValueImpl::CSSImageValueImpl(const DOMString &url, const DOMString &baseurl, \
StyleBaseImpl *style) +CSSImageValueImpl::CSSImageValueImpl(const DOMString &url, \
StyleBaseImpl *style) : CSSPrimitiveValueImpl(url, CSSPrimitiveValue::CSS_URI)
{
khtml::DocLoader *docLoader = 0;
@@ -690,9 +690,9 @@ CSSImageValueImpl::CSSImageValueImpl(con
docLoader = static_cast<CSSStyleSheetImpl*>(root)->docLoader();
if (docLoader)
- m_image = docLoader->requestImage(url, baseurl);
+ m_image = docLoader->requestImage(url);
else
- m_image = khtml::Cache::requestImage(0, url, baseurl);
+ m_image = khtml::Cache::requestImage(0, url);
if(m_image) m_image->ref(this);
}
Index: css/css_valueimpl.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/css_valueimpl.h,v
retrieving revision 1.23
diff -u -3 -d -p -r1.23 css_valueimpl.h
--- css/css_valueimpl.h 2001/07/19 20:25:43 1.23
+++ css/css_valueimpl.h 2001/07/26 16:55:09
@@ -222,7 +222,7 @@ protected:
class CSSImageValueImpl : public CSSPrimitiveValueImpl, public \
khtml::CachedObjectClient {
public:
- CSSImageValueImpl(const DOMString &url, const DOMString &baseurl, StyleBaseImpl \
*style); + CSSImageValueImpl(const DOMString &url, StyleBaseImpl *style);
CSSImageValueImpl();
virtual ~CSSImageValueImpl();
Index: css/cssparser.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/cssparser.cpp,v
retrieving revision 1.152
diff -u -3 -d -p -r1.152 cssparser.cpp
--- css/cssparser.cpp 2001/07/21 10:53:29 1.152
+++ css/cssparser.cpp 2001/07/26 16:55:10
@@ -39,6 +39,9 @@
#include "xml/dom_nodeimpl.h"
#include "html/html_documentimpl.h"
#include "dom_exception.h"
+#include "khtml_part.h"
+#include "khtmlview.h"
+
using namespace DOM;
#include <kdebug.h>
@@ -80,7 +83,7 @@ void StyleBaseImpl::checkLoaded()
if(m_parent) m_parent->checkLoaded();
}
-DOMString StyleBaseImpl::baseUrl()
+DOMString StyleBaseImpl::baseURL()
{
// try to find the style sheet. If found look for it's url.
// If it has none, look for the parentsheet, or the parentNode and
@@ -96,13 +99,13 @@ DOMString StyleBaseImpl::baseUrl()
return sheet->href();
// find parent
- if(sheet->parent()) return sheet->parent()->baseUrl();
+ if(sheet->parent()) return sheet->parent()->baseURL();
if(!sheet->ownerNode()) return DOMString();
DocumentImpl *doc = static_cast<DocumentImpl*>(sheet->ownerNode()->nodeType() == \
Node::DOCUMENT_NODE ? sheet->ownerNode() : sheet->ownerNode()->ownerDocument());
- return doc->baseURL();
+ return doc->view()->part()->baseURL().url();
}
/*
@@ -1499,18 +1502,14 @@ bool StyleBaseImpl::parseValue( const QC
kdDebug( 6080 ) << "empty image " << endl;
#endif
} else {
- const QString str(value.stripWhiteSpace()); // ### Optimize
- if (str.left(4).lower() == "url(") {
- DOMString value(curP, endP - curP);
- value = khtml::parseURL(value);
- parsedValue = new CSSImageValueImpl(value, baseUrl(), this);
+ value = khtml::parseURL(value).string();
+ parsedValue = new CSSImageValueImpl(KURL( baseURL().string(), value \
).url(), this); #ifdef CSS_DEBUG
- kdDebug( 6080 ) << "image, url=" << value.string() << " base=" << \
baseUrl().string() << endl; + kdDebug( 6080 ) << "image, url=" << \
value.string() << endl; #endif
- }
}
- break;
}
+ break;
case CSS_PROP_OUTLINE_WIDTH: // <border-width> | inherit
case CSS_PROP_BORDER_TOP_WIDTH: //// <border-width> | inherit
case CSS_PROP_BORDER_RIGHT_WIDTH: // Which is defined as
@@ -2480,9 +2479,7 @@ StyleBaseImpl::parseStyleRule(const QCha
CSSRuleImpl *
StyleBaseImpl::parseRule(const QChar *&curP, const QChar *endP)
{
- const char *comment = "<!--";
const QChar *startP;
- int count = 0;
curP = parseSpace( curP, endP );
@@ -2555,23 +2552,23 @@ const QString StyleBaseImpl::preprocess(
float orgLength = str.length();
kdDebug(6080) << "Length: " << orgLength << endl;
#endif
-
+
if (!(justOneRule)) {
- /* Remove start of SGML Comment which hides CSS from 3.0 Browsers */
+ /* Remove start of SGML Comment which hides CSS from 3.0 Browsers */
while((ch < last) && (ch->isSpace())) { ++ch; }
- if ((*ch == '<') && ((ch+4) < last) &&
+ if ((*ch == '<') && ((ch+4) < last) &&
(*(ch+1) == '!') && (*(ch+2) == '-') && (*(ch+3) == '-')) {
ch = ch+4; //skip '<!--'
}
-
- /* Remove end of SGML Comment which hides CSS from 3.0 Browsers */
+
+ /* Remove end of SGML Comment which hides CSS from 3.0 Browsers */
while ((last > ch) && ((last-1)->isSpace())) { --last; }
- if ((*(last-1) == '>') && ((last-3) > ch) &&
+ if ((*(last-1) == '>') && ((last-3) > ch) &&
(*(last-2) == '-') && (*(last-3) == '-')) {
last = last-3; //skip '-->'
}
}
-
+
while(ch < last) {
if( !comment && !sq && *ch == '"' ) {
dq = !dq;
@@ -2626,7 +2623,7 @@ const QString StyleBaseImpl::preprocess(
}
firstChar = false;
} else if ( *ch == '/' ) {
- firstChar = true; // Slash added only if next is not '*'
+ firstChar = true; // Slash added only if next is not '*'
} else if ((*ch == '<') && ((ch+3) < last) /* SGML Comment */
&& (*(ch+1) == '!') && (*(ch+2) == '-') && (*(ch+3) == '-')) {
ch = ch+3; // skip '<!--'
Index: css/cssparser.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/cssparser.h,v
retrieving revision 1.38
diff -u -3 -d -p -r1.38 cssparser.h
--- css/cssparser.h 2001/07/21 10:53:29 1.38
+++ css/cssparser.h 2001/07/26 16:55:11
@@ -102,7 +102,7 @@ public:
virtual bool deleteMe();
// returns the url of the style sheet this object belongs to
- DOMString baseUrl();
+ DOMString baseURL();
StyleBaseImpl *parent() { return m_parent; }
Index: css/cssstyleselector.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/cssstyleselector.cpp,v
retrieving revision 1.165
diff -u -3 -d -p -r1.165 cssstyleselector.cpp
--- css/cssstyleselector.cpp 2001/07/25 01:49:50 1.165
+++ css/cssstyleselector.cpp 2001/07/26 16:55:11
@@ -96,7 +96,7 @@ CSSStyleSelector::CSSStyleSelector(Docum
//kdDebug( 6080 ) << "number of style sheets in document " << \
authorStyleSheets.count() << endl;
//kdDebug( 6080 ) << "CSSStyleSelector: author style has " << \
authorStyle->count() << " elements"<< endl;
- KURL u = doc->baseURL().string();
+ KURL u = doc->view()->part()->baseURL();
u.setQuery( QString::null );
u.setRef( QString::null );
encodedurl.file = u.url();
@@ -887,7 +887,7 @@ void khtml::applyRule(khtml::RenderStyle
break;
case CSS_VAL_REPEAT_X:
style->setBackgroundRepeat( REPEAT_X );
- break;
+ break;
case CSS_VAL_REPEAT_Y:
style->setBackgroundRepeat( REPEAT_Y );
break;
@@ -1239,7 +1239,7 @@ void khtml::applyRule(khtml::RenderStyle
style->setOverflow(o);
return;
}
- break;
+ break;
case CSS_PROP_PAGE:
case CSS_PROP_PAGE_BREAK_AFTER:
case CSS_PROP_PAGE_BREAK_BEFORE:
@@ -1511,7 +1511,7 @@ void khtml::applyRule(khtml::RenderStyle
break;
case CSS_PROP_SCROLLBAR_TRACK_COLOR:
style->setPaletteColor(QPalette::Active, QColorGroup::Base, col);
- style->setPaletteColor(QPalette::Inactive, QColorGroup::Base, col); \
+ style->setPaletteColor(QPalette::Inactive, QColorGroup::Base, col);
style->setPaletteColor(QPalette::Active, QColorGroup::Mid, col);
style->setPaletteColor(QPalette::Inactive, QColorGroup::Mid, col);
style->setPaletteColor(QPalette::Active, QColorGroup::Background, col);
Index: ecma/kjs_html.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/ecma/kjs_html.cpp,v
retrieving revision 1.104
diff -u -3 -d -p -r1.104 kjs_html.cpp
--- ecma/kjs_html.cpp 2001/07/18 10:37:57 1.104
+++ ecma/kjs_html.cpp 2001/07/26 16:55:12
@@ -1826,8 +1826,7 @@ void Image::tryPut(const UString &p, con
String str = v.toString();
src = str.value();
if ( img ) img->deref(this);
- img = static_cast<DOM::DocumentImpl*>( doc.handle() \
)->docLoader()->requestImage( src.string(),
- doc.view()->part()->baseURL().url());
+ img = static_cast<DOM::DocumentImpl*>( doc.handle() \
)->docLoader()->requestImage( src.string() ); if ( img ) img->ref(this);
} else {
DOMObject::tryPut(p, v);
Index: html/html_baseimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/html/html_baseimpl.cpp,v
retrieving revision 1.124
diff -u -3 -d -p -r1.124 html_baseimpl.cpp
--- html/html_baseimpl.cpp 2001/07/19 19:54:23 1.124
+++ html/html_baseimpl.cpp 2001/07/26 16:55:12
@@ -77,9 +77,10 @@ void HTMLBodyElementImpl::parseAttribute
case ATTR_BACKGROUND:
{
- KURL u = khtml::Cache::completeURL(attr->value(), \
static_cast<HTMLDocumentImpl *>(ownerDocument())->baseURL());
- bgImage = u.url();
- addCSSProperty(CSS_PROP_BACKGROUND_IMAGE, "url('"+u.url()+"')" );
+ QString url = khtml::parseURL( attr->value() ).string();
+ if ( ownerDocument() && ownerDocument()->view() )
+ url = ownerDocument()->view()->part()->completeURL( url ).url();
+ addCSSProperty(CSS_PROP_BACKGROUND_IMAGE, "url('"+url+"')" );
break;
}
case ATTR_MARGINWIDTH:
@@ -95,7 +96,6 @@ void HTMLBodyElementImpl::parseAttribute
addCSSLength(CSS_PROP_MARGIN_TOP, attr->value());
break;
case ATTR_BGCOLOR:
- bgColor = attr->value();
addCSSProperty(CSS_PROP_BACKGROUND_COLOR, attr->value());
break;
case ATTR_TEXT:
Index: html/html_baseimpl.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/html/html_baseimpl.h,v
retrieving revision 1.60
diff -u -3 -d -p -r1.60 html_baseimpl.h
--- html/html_baseimpl.h 2001/07/15 23:52:21 1.60
+++ html/html_baseimpl.h 2001/07/26 16:55:13
@@ -64,8 +64,6 @@ public:
protected:
CSSStyleSheetImpl *m_styleSheet;
- DOMString bgImage;
- DOMString bgColor;
};
// -------------------------------------------------------------------------
Index: html/html_formimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/html/html_formimpl.cpp,v
retrieving revision 1.192
diff -u -3 -d -p -r1.192 html_formimpl.cpp
--- html/html_formimpl.cpp 2001/07/22 08:52:28 1.192
+++ html/html_formimpl.cpp 2001/07/26 16:55:13
@@ -1065,9 +1065,7 @@ void HTMLInputElementImpl::attach()
if (m_render && m_type == IMAGE) {
static_cast<RenderImageButton*>
- (m_render)->setImageUrl(m_src,
- static_cast<HTMLDocumentImpl \
*>(ownerDocument())->baseURL(),
- static_cast<HTMLDocumentImpl \
*>(ownerDocument())->docLoader()); + \
(m_render)->setImageUrl(m_src,static_cast<HTMLDocumentImpl \
*>(ownerDocument())->docLoader());
}
}
@@ -1382,6 +1380,7 @@ HTMLSelectElementImpl::HTMLSelectElement
view = 0;
// 0 means invalid (i.e. not set)
m_size = 0;
+ m_minwidth = 0;
}
HTMLSelectElementImpl::HTMLSelectElementImpl(DocumentPtr *doc, HTMLFormElementImpl \
*f) @@ -1391,6 +1390,7 @@ HTMLSelectElementImpl::HTMLSelectElement
view = 0;
// 0 means invalid (i.e. not set)
m_size = 0;
+ m_minwidth = 0;
}
ushort HTMLSelectElementImpl::id() const
@@ -1562,6 +1562,9 @@ void HTMLSelectElementImpl::parseAttribu
{
case ATTR_SIZE:
m_size = QMAX( attr->val()->toInt(), 1 );
+ break;
+ case ATTR_WIDTH:
+ m_minwidth = QMAX( attr->val()->toInt(), 0 );
break;
case ATTR_MULTIPLE:
m_multiple = (attr->val() != 0);
Index: html/html_formimpl.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/html/html_formimpl.h,v
retrieving revision 1.86
diff -u -3 -d -p -r1.86 html_formimpl.h
--- html/html_formimpl.h 2001/07/19 23:32:23 1.86
+++ html/html_formimpl.h 2001/07/26 16:55:13
@@ -370,6 +370,8 @@ public:
long length() const;
+ long minWidth() const { return m_minwidth; }
+
long size() const { return m_size; }
bool multiple() const { return m_multiple; }
@@ -404,6 +406,7 @@ public:
protected:
QArray<HTMLGenericFormElementImpl*> m_listItems;
+ short m_minwidth;
short m_size : 15;
bool m_multiple : 1;
};
Index: html/html_headimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/html/html_headimpl.cpp,v
retrieving revision 1.69
diff -u -3 -d -p -r1.69 html_headimpl.cpp
--- html/html_headimpl.cpp 2001/07/21 17:29:59 1.69
+++ html/html_headimpl.cpp 2001/07/26 16:55:14
@@ -137,7 +137,7 @@ void HTMLLinkElementImpl::attach()
HTMLDocumentImpl *doc = static_cast<HTMLDocumentImpl \
*>(ownerDocument()); // we must have a doc->docLoader() !
QString chset = getAttribute( ATTR_CHARSET ).string();
- m_cachedSheet = doc->docLoader()->requestStyleSheet(m_url, \
doc->baseURL(), chset); + m_cachedSheet = \
doc->docLoader()->requestStyleSheet(m_url, chset); if(m_cachedSheet) \
m_cachedSheet->ref(this); }
}
Index: html/html_imageimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/html/html_imageimpl.cpp,v
retrieving revision 1.102
diff -u -3 -d -p -r1.102 html_imageimpl.cpp
--- html/html_imageimpl.cpp 2001/07/18 16:46:29 1.102
+++ html/html_imageimpl.cpp 2001/07/26 16:55:14
@@ -25,6 +25,7 @@
#include "htmlhashes.h"
#include "khtmlview.h"
+#include "khtml_part.h"
#include <kdebug.h>
@@ -148,14 +149,15 @@ void HTMLImageElementImpl::parseAttribut
break;
case ATTR_USEMAP:
if ( attr->value()[0] == '#' )
- {
usemap = attr->value();
- }
- else
- {
- // ### we remove the part before the anchor and hope the map is on the \
same html page....
- KURL u( static_cast<HTMLDocumentImpl \
*>(ownerDocument())->baseURL().string(), attr->value().string() );
- usemap = khtml::parseURL(u.url());
+ else {
+ QString url = khtml::parseURL( attr->value() ).string();
+ if ( ownerDocument() && ownerDocument()->view() )
+ url = ownerDocument()->view()->part()->completeURL( url ).url();
+
+ // ### we remove the part before the anchor and hope
+ // the map is on the same html page....
+ usemap = url;
}
case ATTR_ISMAP:
ismap = true;
@@ -192,7 +194,7 @@ void HTMLImageElementImpl::attach()
renderImage->setAlt(alt);
m_render = renderImage;
if(m_render) r->addChild(m_render, nextRenderer());
- renderImage->setImageUrl(imageURL, static_cast<HTMLDocumentImpl \
*>(ownerDocument())->baseURL(), + renderImage->setImageUrl(imageURL,
static_cast<HTMLDocumentImpl \
*>(ownerDocument())->docLoader());
}
@@ -210,7 +212,7 @@ void HTMLImageElementImpl::applyChanges(
// a script has executed
if (m_render)
static_cast<RenderImage *>(m_render)
- ->setImageUrl(imageURL, static_cast<HTMLDocumentImpl \
*>(ownerDocument())->baseURL(), + ->setImageUrl(imageURL,
static_cast<HTMLDocumentImpl \
*>(ownerDocument())->docLoader()); setChanged(false);
}
Index: html/htmltokenizer.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/html/htmltokenizer.cpp,v
retrieving revision 1.187
diff -u -3 -d -p -r1.187 htmltokenizer.cpp
--- html/htmltokenizer.cpp 2001/07/25 13:48:55 1.187
+++ html/htmltokenizer.cpp 2001/07/26 16:55:14
@@ -26,7 +26,7 @@
//----------------------------------------------------------------------------
//
// KDE HTML Widget - Tokenizers
-// $Id: htmltokenizer.cpp,v 1.187 2001/07/25 13:48:55 mueller Exp $
+// $Id: htmltokenizer.cpp,v 1.186 2001/07/25 10:25:44 mueller Exp $
//#define TOKEN_DEBUG 1
//#define TOKEN_DEBUG 2
@@ -299,7 +299,7 @@ void HTMLTokenizer::parseListing( DOMStr
if (script) {
if (!scriptSrc.isEmpty()) {
// forget what we just got; load from src url instead
- cachedScript = \
parser->doc()->docLoader()->requestScript(scriptSrc, parser->doc()->baseURL(), \
scriptSrcCharset); + cachedScript = \
parser->doc()->docLoader()->requestScript(scriptSrc, scriptSrcCharset); \
scriptSrc=""; }
else {
Index: misc/loader.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/misc/loader.cpp,v
retrieving revision 1.85
diff -u -3 -d -p -r1.85 loader.cpp
--- misc/loader.cpp 2001/07/07 07:46:59 1.85
+++ misc/loader.cpp 2001/07/26 16:55:15
@@ -98,13 +98,13 @@ void CachedObject::setRequest(Request *_
// -------------------------------------------------------------------------------------------
-CachedCSSStyleSheet::CachedCSSStyleSheet(const DOMString &url, const DOMString \
&baseURL, bool reload, int _expireDate, const QString& charset) \
+CachedCSSStyleSheet::CachedCSSStyleSheet(DocLoader* dl, const DOMString &url, bool \
reload, int _expireDate, const QString& charset) : CachedObject(url, CSSStyleSheet, \
reload, _expireDate) {
// It's css we want.
setAccept( QString::fromLatin1("text/css") );
// load the file
- Cache::loader()->load(this, baseURL, false);
+ Cache::loader()->load(dl, this, false);
loading = true;
bool b;
m_codec = KGlobal::charsets()->codecForName(charset, b);
@@ -164,13 +164,13 @@ void CachedCSSStyleSheet::error( int /*e
// -------------------------------------------------------------------------------------------
-CachedScript::CachedScript(const DOMString &url, const DOMString &baseURL, bool \
reload, int _expireDate, const QString& charset) \
+CachedScript::CachedScript(DocLoader* dl, const DOMString &url, bool reload, int \
_expireDate, const QString& charset) : CachedObject(url, Script, reload, \
_expireDate) {
// It's javascript we want.
setAccept( QString::fromLatin1("application/x-javascript") );
// load the file
- Cache::loader()->load(this, baseURL, false);
+ Cache::loader()->load(dl, this, false);
loading = true;
bool b;
m_codec = KGlobal::charsets()->codecForName(charset, b);
@@ -378,7 +378,7 @@ static QString buildAcceptHeader()
// -------------------------------------------------------------------------------------
-CachedImage::CachedImage(const DOMString &url, const DOMString &baseURL, bool \
reload, int _expireDate) +CachedImage::CachedImage(DocLoader* dl, const DOMString \
&url, bool reload, int _expireDate) : QObject(), CachedObject(url, Image, reload, \
_expireDate) {
static const QString &acceptHeader = KGlobal::staticQString( buildAcceptHeader() \
); @@ -394,7 +394,6 @@ CachedImage::CachedImage(const DOMString
m_status = Unknown;
m_size = 0;
imgSource = 0;
- m_baseURL = baseURL;
setAccept( acceptHeader );
}
@@ -724,12 +723,12 @@ void CachedImage::error( int /*err*/, co
// ------------------------------------------------------------------------------------------
-Request::Request(CachedObject *_object, const DOM::DOMString &baseURL, bool \
_incremental) +Request::Request(DocLoader* dl, CachedObject *_object, bool \
_incremental) {
object = _object;
object->setRequest(this);
incremental = _incremental;
- m_baseURL = baseURL;
+ m_docLoader = dl;
}
Request::~Request()
@@ -760,9 +759,9 @@ void DocLoader::setExpireDate(int _expir
m_expireDate = _expireDate;
}
-CachedImage *DocLoader::requestImage( const DOM::DOMString &url, const \
DOM::DOMString &baseUrl) +CachedImage *DocLoader::requestImage( const DOM::DOMString \
&url) {
- KURL fullURL = Cache::completeURL( url, baseUrl );
+ KURL fullURL = m_part->completeURL( url.string() );
if ( m_part && m_part->onlyLocalReferences() && fullURL.protocol() != "file") \
return 0;
if (m_reloading) {
@@ -771,18 +770,19 @@ CachedImage *DocLoader::requestImage( co
if (existing)
Cache::removeCacheEntry(existing);
m_reloadedURLs.append(fullURL.url());
- return Cache::requestImage(this, url,baseUrl,true,m_expireDate);
+ return Cache::requestImage(this, url, true, m_expireDate);
}
}
- CachedImage* ci = Cache::requestImage(this, url,baseUrl,false, m_expireDate);
+ CachedImage* ci = Cache::requestImage(this, url, false, m_expireDate);
return ci;
}
-CachedCSSStyleSheet *DocLoader::requestStyleSheet( const DOM::DOMString &url, const \
DOM::DOMString &baseUrl, const QString& charset) +CachedCSSStyleSheet \
*DocLoader::requestStyleSheet( const DOM::DOMString &url, const QString& charset) {
- KURL fullURL = Cache::completeURL( url, baseUrl );
+ KURL fullURL = url.string();
+
if ( m_part && m_part->onlyLocalReferences() && fullURL.protocol() != "file") \
return 0;
if (m_reloading) {
@@ -791,16 +791,16 @@ CachedCSSStyleSheet *DocLoader::requestS
if (existing)
Cache::removeCacheEntry(existing);
m_reloadedURLs.append(fullURL.url());
- return Cache::requestStyleSheet(this, url,baseUrl,true,m_expireDate, \
charset); + return Cache::requestStyleSheet(this, url, true,m_expireDate, \
charset); }
}
- return Cache::requestStyleSheet(this, url,baseUrl,false,m_expireDate, charset);
+ return Cache::requestStyleSheet(this, url, false,m_expireDate, charset);
}
-CachedScript *DocLoader::requestScript( const DOM::DOMString &url, const \
DOM::DOMString &baseUrl, const QString& charset) +CachedScript \
*DocLoader::requestScript( const DOM::DOMString &url, const QString& charset) {
- KURL fullURL = Cache::completeURL( url, baseUrl );
+ KURL fullURL = url.string();
if ( m_part && m_part->onlyLocalReferences() && fullURL.protocol() != "file") \
return 0;
if (m_reloading) {
@@ -809,11 +809,11 @@ CachedScript *DocLoader::requestScript(
if (existing)
Cache::removeCacheEntry(existing);
m_reloadedURLs.append(fullURL.url());
- return Cache::requestScript(this, url,baseUrl,true,m_expireDate, \
charset); + return Cache::requestScript(this, url, true,m_expireDate, \
charset); }
}
- return Cache::requestScript(this, url,baseUrl,false,m_expireDate, charset);
+ return Cache::requestScript(this, url, false,m_expireDate, charset);
}
void DocLoader::setAutoloadImages( bool enable )
@@ -837,7 +837,7 @@ void DocLoader::setAutoloadImages( bool
status == CachedObject::Pending )
continue;
- Cache::loader()->load(img, img->baseURL(), true);
+ Cache::loader()->load(this, img, true);
}
}
@@ -877,11 +877,13 @@ Loader::~Loader()
{
}
-void Loader::load(CachedObject *object, const DOMString &baseURL, bool incremental)
+void Loader::load(DocLoader* dl, CachedObject *object, bool incremental)
{
- Request *req = new Request(object, baseURL, incremental);
+ Request *req = new Request(dl, object, incremental);
m_requestsPending.append(req);
+ emit requestStarted( req->m_docLoader, req->object );
+
servePendingRequests();
}
@@ -900,14 +902,16 @@ void Loader::servePendingRequests()
KIO::TransferJob* job = KIO::get( req->object->url().string(), \
req->object->reload(), false /*no GUI*/);
if (!req->object->accept().isEmpty())
- job->addMetaData("accept", req->object->accept());
- job->addMetaData("referrer", req->m_baseURL.string());
+ job->addMetaData("accept", req->object->accept());
+ if ( req->m_docLoader )
+ job->addMetaData("referrer", req->m_docLoader->part()->url().url());
connect( job, SIGNAL( result( KIO::Job * ) ), this, SLOT( slotFinished( KIO::Job * \
) ) ); connect( job, SIGNAL( data( KIO::Job*, const QByteArray &)),
SLOT( slotData( KIO::Job*, const QByteArray &)));
- KIO::Scheduler::scheduleJob( job );
+ if ( req->object->schedule() )
+ KIO::Scheduler::scheduleJob( job );
m_requestsLoading.insert(job, req);
}
@@ -923,12 +927,12 @@ void Loader::slotFinished( KIO::Job* job
if (j->error() || j->isErrorPage())
{
r->object->error( job->error(), job->errorText().ascii() );
- emit requestFailed( r->m_baseURL, r->object );
+ emit requestFailed( r->m_docLoader, r->object );
}
else
{
r->object->data(r->m_buffer, true);
- emit requestDone( r->m_baseURL, r->object );
+ emit requestDone( r->m_docLoader, r->object );
}
r->object->finish();
@@ -958,27 +962,30 @@ void Loader::slotData( KIO::Job*job, con
r->object->data( r->m_buffer, false );
}
-int Loader::numRequests( const DOMString &baseURL ) const
+int Loader::numRequests( DocLoader* dl ) const
{
int res = 0;
QListIterator<Request> pIt( m_requestsPending );
for (; pIt.current(); ++pIt )
- if ( pIt.current()->m_baseURL == baseURL )
+ if ( pIt.current()->m_docLoader == dl )
res++;
QPtrDictIterator<Request> lIt( m_requestsLoading );
for (; lIt.current(); ++lIt )
- if ( lIt.current()->m_baseURL == baseURL )
+ if ( lIt.current()->m_docLoader == dl )
res++;
return res;
}
+#if 0
int Loader::numRequests( const DOMString &baseURL, CachedObject::Type type ) const
{
int res = 0;
+#warning FIXME
+#if 0
QListIterator<Request> pIt( m_requestsPending );
for (; pIt.current(); ++pIt )
if ( pIt.current()->m_baseURL == baseURL && pIt.current()->object->type() == \
type ) @@ -989,17 +996,21 @@ int Loader::numRequests( const DOMString
if ( lIt.current()->m_baseURL == baseURL && pIt.current()->object->type() == \
type ) res++;
+#endif
return res;
}
+#endif
-void Loader::cancelRequests( const DOMString &baseURL )
+void Loader::cancelRequests( DocLoader* dl )
{
+ qDebug( "Loader::cancelRequests!" );
+
//kdDebug( 6060 ) << "void Loader::cancelRequests( " << baseURL.string() << " )" \
<< endl;
//kdDebug( 6060 ) << "got " << m_requestsPending.count() << " pending requests" \
<< endl; QListIterator<Request> pIt( m_requestsPending );
while ( pIt.current() )
{
- if ( pIt.current()->m_baseURL == baseURL )
+ if ( pIt.current()->m_docLoader == dl )
{
//kdDebug( 6060 ) << "cancelling pending request for " << \
pIt.current()->object->url().string() << endl; Cache::removeCacheEntry( \
pIt.current()->object ); @@ -1014,7 +1025,7 @@ void Loader::cancelRequests( const \
DOMSt QPtrDictIterator<Request> lIt( m_requestsLoading );
while ( lIt.current() )
{
- if ( lIt.current()->m_baseURL == baseURL )
+ if ( lIt.current()->m_docLoader == dl )
{
//kdDebug( 6060 ) << "cancelling loading request for " << \
lIt.current()->object->url().string() << endl; KIO::Job *job = static_cast<KIO::Job \
*>( lIt.currentKey() ); @@ -1093,10 +1104,15 @@ void Cache::clear()
delete docloader; docloader = 0;
}
-CachedImage *Cache::requestImage( const DocLoader* dl, const DOMString & url, const \
DOMString &baseUrl, bool reload, int _expireDate ) +CachedImage *Cache::requestImage( \
DocLoader* dl, const DOMString & url, bool reload, int _expireDate ) {
// this brings the _url to a standard form...
- KURL kurl = completeURL( url, baseUrl );
+ KURL kurl;
+ if ( dl )
+ kurl = dl->m_part->completeURL( url.string() );
+ else
+ kurl = url.string();
+
if( kurl.isMalformed() )
{
#ifdef CACHE_DEBUG
@@ -1113,8 +1129,8 @@ CachedImage *Cache::requestImage( const
#ifdef CACHE_DEBUG
kdDebug( 6060 ) << "Cache: new: " << kurl.url() << endl;
#endif
- CachedImage *im = new CachedImage(kurl.url(), baseUrl, reload, _expireDate);
- if ( dl && dl->autoloadImages() ) Cache::loader()->load(im, im->baseURL(), \
true); + CachedImage *im = new CachedImage(dl, kurl.url(), reload, \
_expireDate); + if ( dl && dl->autoloadImages() ) Cache::loader()->load(dl, \
im, true); cache->insert( kurl.url(), im );
lru->append( kurl.url() );
flush();
@@ -1146,10 +1162,15 @@ CachedImage *Cache::requestImage( const
return static_cast<CachedImage *>(o);
}
-CachedCSSStyleSheet *Cache::requestStyleSheet( const DocLoader* dl, const DOMString \
& url, const DOMString &baseUrl, bool reload, int _expireDate, const QString& \
charset) +CachedCSSStyleSheet *Cache::requestStyleSheet( DocLoader* dl, const \
DOMString & url, bool reload, int _expireDate, const QString& charset) {
// this brings the _url to a standard form...
- KURL kurl = completeURL( url, baseUrl );
+ KURL kurl;
+ if ( dl )
+ kurl = dl->m_part->completeURL( url.string() );
+ else
+ kurl = url.string();
+
if( kurl.isMalformed() )
{
kdDebug( 6060 ) << "Cache: Malformed url: " << kurl.url() << endl;
@@ -1162,7 +1183,7 @@ CachedCSSStyleSheet *Cache::requestStyle
#ifdef CACHE_DEBUG
kdDebug( 6060 ) << "Cache: new: " << kurl.url() << endl;
#endif
- CachedCSSStyleSheet *sheet = new CachedCSSStyleSheet(kurl.url(), baseUrl, \
reload, _expireDate, charset); + CachedCSSStyleSheet *sheet = new \
CachedCSSStyleSheet(dl, kurl.url(), reload, _expireDate, charset); cache->insert( \
kurl.url(), sheet ); lru->append( kurl.url() );
flush();
@@ -1194,10 +1215,15 @@ CachedCSSStyleSheet *Cache::requestStyle
return static_cast<CachedCSSStyleSheet *>(o);
}
-CachedScript *Cache::requestScript( const DocLoader* dl, const DOM::DOMString &url, \
const DOM::DOMString &baseUrl, bool reload, int _expireDate, const QString& charset) \
+CachedScript *Cache::requestScript( DocLoader* dl, const DOM::DOMString &url, bool \
reload, int _expireDate, const QString& charset) {
// this brings the _url to a standard form...
- KURL kurl = completeURL( url, baseUrl );
+ KURL kurl;
+ if ( dl )
+ kurl = dl->part()->completeURL( url.string() );
+ else
+ kurl = url.string();
+
if( kurl.isMalformed() )
{
kdDebug( 6060 ) << "Cache: Malformed url: " << kurl.url() << endl;
@@ -1210,7 +1236,7 @@ CachedScript *Cache::requestScript( cons
#ifdef CACHE_DEBUG
kdDebug( 6060 ) << "Cache: new: " << kurl.url() << endl;
#endif
- CachedScript *script = new CachedScript(kurl.url(), baseUrl, reload, \
_expireDate, charset); + CachedScript *script = new CachedScript(dl, \
kurl.url(), reload, _expireDate, charset); cache->insert( kurl.url(), script );
lru->append( kurl.url() );
flush();
@@ -1335,15 +1361,6 @@ void Cache::statistics()
kdDebug( 6060 ) << "pixmaps: allocated space approx. " << size << " kB" << \
endl;
kdDebug( 6060 ) << "movies : allocated space approx. " << msize/1024 << " kB" \
<< endl;
kdDebug( 6060 ) << \
"--------------------------------------------------------------------" \
<< endl;
-}
-
-KURL Cache::completeURL( const DOMString &_url, const DOMString &_baseUrl )
-{
- QString url = _url.string();
- QString baseUrl = _baseUrl.string();
- KURL orig(baseUrl);
- KURL u( orig, url );
- return u;
}
void Cache::removeCacheEntry( CachedObject *object )
Index: misc/loader.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/misc/loader.h,v
retrieving revision 1.32
diff -u -3 -d -p -r1.32 loader.h
--- misc/loader.h 2001/05/11 23:07:18 1.32
+++ misc/loader.h 2001/07/26 16:55:15
@@ -66,6 +66,7 @@ namespace khtml
{
class CachedObject;
class Request;
+ class DocLoader;
/**
* @internal
@@ -149,6 +150,8 @@ namespace khtml
void setExpireDate(int _expireDate);
+ virtual bool schedule() const { return false; }
+
/*
* List of acceptable mimetypes seperated by ",". A mimetype may contain a \
wildcard.
*/
@@ -178,7 +181,7 @@ namespace khtml
class CachedCSSStyleSheet : public CachedObject
{
public:
- CachedCSSStyleSheet(const DOM::DOMString &url, const DOM::DOMString &baseURL, bool \
reload, int _expireDate, const QString& charset); + CachedCSSStyleSheet(DocLoader* \
dl, const DOM::DOMString &url, bool reload, int _expireDate, const QString& charset); \
virtual ~CachedCSSStyleSheet();
const DOM::DOMString &sheet() const { return m_sheet; }
@@ -189,6 +192,8 @@ namespace khtml
virtual void data( QBuffer &buffer, bool eof );
virtual void error( int err, const char *text );
+ virtual bool schedule() const { return true; }
+
void checkNotify();
protected:
@@ -203,7 +208,7 @@ namespace khtml
class CachedScript : public CachedObject
{
public:
- CachedScript(const DOM::DOMString &url, const DOM::DOMString &baseURL, bool reload, \
int _expireDate, const QString& charset); + CachedScript(DocLoader* dl, const \
DOM::DOMString &url, bool reload, int _expireDate, const QString& charset); virtual \
~CachedScript();
const DOM::DOMString &script() const { return m_script; }
@@ -214,6 +219,8 @@ namespace khtml
virtual void data( QBuffer &buffer, bool eof );
virtual void error( int err, const char *text );
+ virtual bool schedule() const { return false; }
+
void checkNotify();
protected:
@@ -231,7 +238,7 @@ namespace khtml
{
Q_OBJECT
public:
- CachedImage(const DOM::DOMString &url, const DOM::DOMString &baseURL, bool reload, \
int _expireDate); + CachedImage(DocLoader* dl, const DOM::DOMString &url, bool \
reload, int _expireDate); virtual ~CachedImage();
const QPixmap &pixmap() const;
@@ -246,12 +253,12 @@ namespace khtml
virtual void data( QBuffer &buffer, bool eof );
virtual void error( int err, const char *text );
- const DOM::DOMString& baseURL() const { return m_baseURL; }
-
bool isTransparent() const { return isFullyTransparent; }
bool isErrorImage() const { return errorOccured; }
void setShowAnimations( bool );
+
+ virtual bool schedule() const { return true; }
protected:
void clear();
@@ -267,7 +274,6 @@ namespace khtml
private:
void do_notify(const QPixmap& p, const QRect& r);
- DOM::DOMString m_baseURL;
QColor bgColor;
QMovie* m;
QPixmap* p;
@@ -293,26 +299,27 @@ namespace khtml
*
* Manages the loading of scripts/images/stylesheets for a particular document
*/
- class DocLoader
+ class DocLoader
{
public:
DocLoader(KHTMLPart*);
~DocLoader();
- CachedImage *requestImage( const DOM::DOMString &url, const DOM::DOMString \
&baseUrl);
- CachedCSSStyleSheet *requestStyleSheet( const DOM::DOMString &url, const \
DOM::DOMString &baseUrl, const QString& charset);
- CachedScript *requestScript( const DOM::DOMString &url, const DOM::DOMString \
&baseUrl, const QString& charset); + CachedImage *requestImage( const DOM::DOMString \
&url); + CachedCSSStyleSheet *requestStyleSheet( const DOM::DOMString &url, const \
QString& charset); + CachedScript *requestScript( const DOM::DOMString &url, \
const QString& charset);
bool autoloadImages() const { return m_bautoloadImages; }
bool reloading() const { return m_reloading; }
int expireDate() const { return m_expireDate; }
+ KHTMLPart* part() const { return m_part; }
void setExpireDate( int );
void setAutoloadImages( bool );
void setReloading( bool );
void setShowAnimations( bool );
void removeCachedObject( CachedObject*) const;
-
+
private:
friend class Cache;
friend class DOM::DocumentImpl;
@@ -332,12 +339,12 @@ namespace khtml
class Request
{
public:
- Request(CachedObject *_object, const DOM::DOMString &baseURL, bool _incremental);
+ Request(DocLoader* dl, CachedObject *_object, bool _incremental);
~Request();
bool incremental;
QBuffer m_buffer;
CachedObject *object;
- DOM::DOMString m_baseURL;
+ DocLoader* m_docLoader;
};
/**
@@ -351,19 +358,18 @@ namespace khtml
Loader();
~Loader();
- void load(CachedObject *object, const DOM::DOMString &baseURL, bool incremental = \
true);
-
- int numRequests( const DOM::DOMString &baseURL ) const;
- int numRequests( const DOM::DOMString &baseURL, CachedObject::Type type ) \
const; + void load(DocLoader* dl, CachedObject *object, bool incremental = true);
- void cancelRequests( const DOM::DOMString &baseURL );
+ int numRequests( DocLoader* dl ) const;
+ void cancelRequests( DocLoader* dl );
// may return 0L
KIO::Job *jobForRequest( const DOM::DOMString &url ) const;
signals:
- void requestDone( const DOM::DOMString &baseURL, khtml::CachedObject *obj );
- void requestFailed( const DOM::DOMString &baseURL, khtml::CachedObject *obj );
+ void requestStarted( khtml::DocLoader* dl, khtml::CachedObject* obj );
+ void requestDone( khtml::DocLoader* dl, khtml::CachedObject *obj );
+ void requestFailed( khtml::DocLoader* dl, khtml::CachedObject *obj );
protected slots:
void slotFinished( KIO::Job * );
@@ -398,20 +404,22 @@ namespace khtml
/**
* Ask the cache for some url. Will return a cachedObject, and
* load the requested data in case it's not cahced
+ * if the DocLoader is zero, the url must be full-qualified.
+ * Otherwise, it is automatically base-url expanded
*/
- static CachedImage *requestImage( const DocLoader* l, const DOM::DOMString &url, \
const DOM::DOMString &baseUrl, bool reload=false, int _expireDate=0); + static \
CachedImage *requestImage( DocLoader* l, const DOM::DOMString &url, bool \
reload=false, int _expireDate=0);
/**
* Ask the cache for some url. Will return a cachedObject, and
* load the requested data in case it's not cahced
*/
- static CachedCSSStyleSheet *requestStyleSheet( const DocLoader* l, const \
DOM::DOMString &url, const DOM::DOMString &baseUrl, bool reload=false, int \
_expireDate=0, const QString& charset = QString::null); + static CachedCSSStyleSheet \
*requestStyleSheet( DocLoader* l, const DOM::DOMString &url, bool reload=false, int \
_expireDate=0, const QString& charset = QString::null);
/**
* Ask the cache for some url. Will return a cachedObject, and
* load the requested data in case it's not cahced
*/
- static CachedScript *requestScript( const DocLoader* l, const DOM::DOMString &url, \
const DOM::DOMString &baseUrl, bool reload=false, int _expireDate=0, const QString& \
charset=QString::null); + static CachedScript *requestScript( DocLoader* l, const \
DOM::DOMString &url, bool reload=false, int _expireDate=0, const QString& \
charset=QString::null);
/**
* sets the size of the cache. This will only hod approximately, since the size \
some @@ -435,8 +443,6 @@ namespace khtml
static void clear();
static Loader *loader() { return m_loader; }
-
- static KURL completeURL(const DOM::DOMString &url, const DOM::DOMString &baseUrl);
static QPixmap *nullPixmap;
static QPixmap *brokenPixmap;
Index: rendering/render_form.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/rendering/render_form.cpp,v
retrieving revision 1.126
diff -u -3 -d -p -r1.126 render_form.cpp
--- rendering/render_form.cpp 2001/07/19 23:32:22 1.126
+++ rendering/render_form.cpp 2001/07/26 16:55:16
@@ -913,7 +913,7 @@ void RenderSelect::layout( )
KListBox* w = static_cast<KListBox*>(m_widget);
QListBoxItem* p = w->firstItem();
- int width = 0;
+ int width = f->minWidth();
int height = 0;
while(p) {
width = QMAX(width, p->width(p->listBox()));
Index: rendering/render_image.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/rendering/render_image.cpp,v
retrieving revision 1.69
diff -u -3 -d -p -r1.69 render_image.cpp
--- rendering/render_image.cpp 2001/07/16 11:22:55 1.69
+++ rendering/render_image.cpp 2001/07/26 16:55:16
@@ -281,9 +281,9 @@ void RenderImage::layout()
setLayouted();
}
-void RenderImage::setImageUrl(DOMString url, DOMString baseUrl, DocLoader \
*docLoader) +void RenderImage::setImageUrl(DOMString url, DocLoader *docLoader)
{
- CachedImage *new_image = docLoader->requestImage(url, baseUrl);
+ CachedImage *new_image = docLoader->requestImage(url);
if(new_image && new_image != image) {
if(image) image->deref(this);
image = new_image;
Index: rendering/render_image.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/rendering/render_image.h,v
retrieving revision 1.25
diff -u -3 -d -p -r1.25 render_image.h
--- rendering/render_image.h 2001/07/07 07:46:59 1.25
+++ rendering/render_image.h 2001/07/26 16:55:16
@@ -58,7 +58,7 @@ public:
QPixmap pixmap() const { return pix; }
- void setImageUrl(DOM::DOMString url, DOM::DOMString baseUrl, DocLoader \
*docLoader); + void setImageUrl(DOM::DOMString url, DocLoader *docLoader);
void setAlt(DOM::DOMString text);
virtual short intrinsicWidth() const;
Index: xml/dom_docimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/xml/dom_docimpl.cpp,v
retrieving revision 1.101
diff -u -3 -d -p -r1.101 dom_docimpl.cpp
--- xml/dom_docimpl.cpp 2001/07/22 09:00:12 1.101
+++ xml/dom_docimpl.cpp 2001/07/26 16:55:17
@@ -816,12 +816,6 @@ ElementImpl *DocumentImpl::getElementByI
return 0;
}
-DOMString DocumentImpl::baseURL() const
-{
- if(view() && !view()->part()->baseURL().isEmpty()) return \
view()->part()->baseURL().url();
- return url;
-}
-
void DocumentImpl::setStyleSheet(const DOM::DOMString &url, const DOM::DOMString \
&sheet) {
kdDebug( 6030 ) << "HTMLDocument::setStyleSheet()" << endl;
@@ -836,7 +830,11 @@ void DocumentImpl::setStyleSheet(const D
CSSStyleSheetImpl* DocumentImpl::elementSheet()
{
if (!m_elemSheet) {
- m_elemSheet = new CSSStyleSheetImpl(this, baseURL());
+ if ( view() && !view()->part()->baseURL().isEmpty() )
+ m_elemSheet = new CSSStyleSheetImpl(this, \
view()->part()->baseURL().url()); + else
+ m_elemSheet = new CSSStyleSheetImpl(this, url );
+
m_elemSheet->ref();
}
return m_elemSheet;
Index: xml/dom_docimpl.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/xml/dom_docimpl.h,v
retrieving revision 1.57
diff -u -3 -d -p -r1.57 dom_docimpl.h
--- xml/dom_docimpl.h 2001/07/15 19:37:59 1.57
+++ xml/dom_docimpl.h 2001/07/26 16:55:17
@@ -178,8 +178,6 @@ public:
DOMString URL() const { return url; }
void setURL(DOMString _url) { url = _url; }
- DOMString baseURL() const;
-
// from cachedObjectClient
virtual void setStyleSheet(const DOM::DOMString &url, const DOM::DOMString \
&sheetStr);
Index: xml/dom_xmlimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/xml/dom_xmlimpl.cpp,v
retrieving revision 1.10
diff -u -3 -d -p -r1.10 dom_xmlimpl.cpp
--- xml/dom_xmlimpl.cpp 2001/06/15 10:19:17 1.10
+++ xml/dom_xmlimpl.cpp 2001/07/26 16:55:17
@@ -347,7 +347,7 @@ void ProcessingInstructionImpl::checkSty
// ### FIXME charset
if (m_cachedSheet)
m_cachedSheet->deref(this);
- m_cachedSheet = ownerDocument()->docLoader()->requestStyleSheet(href, \
ownerDocument()->baseURL(), QString::null); + m_cachedSheet = \
ownerDocument()->docLoader()->requestStyleSheet(href, QString::null); \
m_cachedSheet->ref( this ); // }
Index: xml/xml_tokenizer.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/xml/xml_tokenizer.cpp,v
retrieving revision 1.19
diff -u -3 -d -p -r1.19 xml_tokenizer.cpp
--- xml/xml_tokenizer.cpp 2001/06/15 10:19:17 1.19
+++ xml/xml_tokenizer.cpp 2001/07/26 16:55:17
@@ -397,7 +397,7 @@ void XMLTokenizer::executeScripts()
DOMString scriptSrc = m_scriptsIt->current()->getAttribute("src");
QString charset = m_scriptsIt->current()->getAttribute( "charset" \
).string(); if (scriptSrc != "") {
- m_cachedScript = \
m_doc->document()->docLoader()->requestScript(scriptSrc, \
m_doc->document()->baseURL(), charset); + m_cachedScript = \
m_doc->document()->docLoader()->requestScript(scriptSrc, charset); ++(*m_scriptsIt);
m_cachedScript->ref(this); // will call executeScripts() again if \
already cached return;
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic