--- a/webengine/osswebengine/WebCore/loader/FrameLoader.cpp Tue Aug 31 16:17:46 2010 +0300
+++ b/webengine/osswebengine/WebCore/loader/FrameLoader.cpp Wed Sep 01 12:28:30 2010 +0100
@@ -62,7 +62,7 @@
#include "IconLoader.h"
#include "InspectorController.h"
#include "Logging.h"
-#include "MimeTypeRegistry.h"
+#include "MIMETypeRegistry.h"
#include "MainResourceLoader.h"
#include "Page.h"
#include "PageCache.h"
@@ -77,7 +77,7 @@
#include "SystemTime.h"
#include "TextResourceDecoder.h"
#include "WindowFeatures.h"
-#include "xmlhttprequest.h"
+#include "XMLHttpRequest.h"
#include "XMLTokenizer.h"
#include "kjs_binding.h"
#include "kjs_proxy.h"
@@ -226,6 +226,7 @@
, m_wasUnloadEventEmitted(false)
, m_isComplete(false)
, m_isLoadingMainResource(false)
+ , m_mayLoadIconLater(false)
, m_cancellingWithLoadInProgress(false)
, m_needsClear(false)
, m_receivedData(false)
@@ -1043,11 +1044,17 @@
void FrameLoader::iconLoadDecisionAvailable()
{
- if (!m_mayLoadIconLater)
- return;
LOG(IconDatabase, "FrameLoader %p was told a load decision is available for its icon", this);
- startIconLoader();
- m_mayLoadIconLater = false;
+ if (m_mayLoadIconLater) {
+ // Notfification came from iconDataBase to load the icon
+ startIconLoader();
+ m_mayLoadIconLater = false;
+ } else {
+ // Icon was specified in <link> tag with rel="icon" or rel="shortcut icon" property
+ if(m_iconLoader)
+ m_iconLoader->stopLoading(); // cancel previous loading state
+ startIconLoader();
+ }
}
void FrameLoader::startIconLoader()
@@ -1511,13 +1518,16 @@
RenderObject* renderer;
IntRect rect;
if (!anchorNode)
+ {
renderer = m_frame->document()->renderer(); // top of document
+ rect = m_frame->document()->getRect();
+ }
else {
renderer = anchorNode->renderer();
rect = anchorNode->getRect();
}
if (renderer)
- renderer->enclosingLayer()->scrollRectToVisible(rect, RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignTopAlways);
+ renderer->enclosingLayer()->scrollRectToVisible(rect, RenderLayer::gAlignToEdgeIfNeeded, RenderLayer::gAlignTopAlways);
return true;
}