Roll out r31599 and r31605 again after discussion with Mark Rowe.
authorhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 3 Apr 2008 21:47:25 +0000 (21:47 +0000)
committerhausmann@webkit.org <hausmann@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 3 Apr 2008 21:47:25 +0000 (21:47 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@31606 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/history/HistoryItem.cpp
WebCore/loader/FrameLoader.cpp
WebCore/loader/icon/IconDatabase.cpp
WebCore/loader/icon/IconDatabase.h
WebCore/loader/icon/IconDatabaseNone.cpp
WebKit/qt/Api/qwebframe.cpp
WebKit/qt/Api/qwebsettings.cpp
WebKit/qt/ChangeLog
WebKit/win/ChangeLog
WebKit/win/WebIconDatabase.cpp

index 3cfd820..741ce40 100644 (file)
@@ -1,3 +1,18 @@
+2008-04-03  Simon Hausmann  <hausmann@webkit.org>
+
+        Reviewed by Mark Rowe.
+
+        Roll out r31599 and r31605 again after discussion with Mark Rowe.
+
+        * history/HistoryItem.cpp:
+        * loader/FrameLoader.cpp:
+        (WebCore::FrameLoader::startIconLoader):
+        * loader/icon/IconDatabase.cpp:
+        (WebCore::IconDatabase::iconForPageURL):
+        (WebCore::IconDatabase::readIconForPageURLFromDisk):
+        * loader/icon/IconDatabase.h:
+        * loader/icon/IconDatabaseNone.cpp:
+
 2008-04-03  David Hyatt  <hyatt@apple.com>
 
         Fix for bug 18194, resizable text fields get messed up when resizing in the presence of zoom.
index e668bad..05ee6ec 100644 (file)
@@ -166,8 +166,7 @@ const String& HistoryItem::alternateTitle() const
 
 Image* HistoryItem::icon() const
 {
-    Image* result = 0;
-    iconDatabase()->iconForPageURL(m_urlString, IntSize(16,16), &result);
+    Image* result = iconDatabase()->iconForPageURL(m_urlString, IntSize(16,16));
     return result ? result : iconDatabase()->defaultIcon(IntSize(16,16));
 }
 
index db9032d..828fc47 100644 (file)
@@ -1107,8 +1107,8 @@ void FrameLoader::startIconLoader()
             if (!iconDatabase()->iconDataKnownForIconURL(urlString)) {
                 LOG(IconDatabase, "Told not to load icon %s but icon data is not yet available - registering for notification and requesting load from disk", urlString.ascii().data());
                 m_client->registerForIconNotification();
-                iconDatabase()->readIconForPageURLFromDisk(m_URL.string());
-                iconDatabase()->readIconForPageURLFromDisk(originalRequestURL().string());
+                iconDatabase()->iconForPageURL(m_URL.string(), IntSize(0, 0));
+                iconDatabase()->iconForPageURL(originalRequestURL().string(), IntSize(0, 0));
             } else
                 m_client->dispatchDidReceiveIcon();
                 
index 38f3c82..95f3be7 100644 (file)
@@ -216,19 +216,15 @@ void IconDatabase::removeAllIcons()
     wakeSyncThread();
 }
 
-IconLoadStatus IconDatabase::iconForPageURL(const String& pageURLOriginal, const IntSize& size, Image** outImage)
+Image* IconDatabase::iconForPageURL(const String& pageURLOriginal, const IntSize& size)
 {   
     ASSERT_NOT_SYNC_THREAD();
 
-    *outImage = 0;
-
     // pageURLOriginal cannot be stored without being deep copied first.  
     // We should go our of our way to only copy it if we have to store it
     
-    if (!isOpen() || pageURLOriginal.isEmpty()) {
-        *outImage = defaultIcon(size);
-        return IconNotFound;
-    }
+    if (!isOpen() || pageURLOriginal.isEmpty())
+        return defaultIcon(size);
 
     MutexLocker locker(m_urlAndIconLock);
     
@@ -251,7 +247,7 @@ IconLoadStatus IconDatabase::iconForPageURL(const String& pageURLOriginal, const
         if (!m_iconURLImportComplete)
             m_pageURLsInterestedInIcons.add(pageURLCopy);
         
-        return IconNotFound;
+        return 0;
     }
 
     IconRecord* iconRecord = pageRecord->iconRecord();
@@ -260,13 +256,13 @@ IconLoadStatus IconDatabase::iconForPageURL(const String& pageURLOriginal, const
     // In this case, the pageURL is already in the set to alert the client when the iconURL mapping is complete so
     // we can just bail now
     if (!m_iconURLImportComplete && !iconRecord)
-        return IconNotFound;
+        return 0;
     
     // The only way we should *not* have an icon record is if this pageURL is retained but has no icon yet - make sure of that
     ASSERT(iconRecord || m_retainedPageURLs.contains(pageURLOriginal));
     
     if (!iconRecord)
-        return IconNotFound;
+        return 0;
         
     // If it's a new IconRecord object that doesn't have its imageData set yet,
     // mark it to be read by the background thread
@@ -278,13 +274,13 @@ IconLoadStatus IconDatabase::iconForPageURL(const String& pageURLOriginal, const
         m_pageURLsInterestedInIcons.add(pageURLCopy);
         m_iconsPendingReading.add(iconRecord);
         wakeSyncThread();
-        return IconLoadScheduled;
+        return 0;
     }
     
     // If the size parameter was (0, 0) that means the caller of this method just wanted the read from disk to be kicked off
     // and isn't actually interested in the image return value
     if (size == IntSize(0, 0))
-        return IconFound;
+        return 0;
         
     // PARANOID DISCUSSION: This method makes some assumptions.  It returns a WebCore::image which the icon database might dispose of at anytime in the future,
     // and Images aren't ref counted.  So there is no way for the client to guarantee continued existence of the image.
@@ -296,8 +292,7 @@ IconLoadStatus IconDatabase::iconForPageURL(const String& pageURLOriginal, const
     // This is because we make the assumption that anything in memory is newer than whatever is in the database.
     // So the only time the data will be set from the second thread is when it is INITIALLY being read in from the database, but we would never 
     // delete the image on the secondary thread if the image already exists.
-    *outImage = iconRecord->image(size);
-    return IconFound;
+    return iconRecord->image(size);
 }
 
 void IconDatabase::readIconForPageURLFromDisk(const String& pageURL)
@@ -305,8 +300,7 @@ void IconDatabase::readIconForPageURLFromDisk(const String& pageURL)
     // The effect of asking for an Icon for a pageURL automatically queues it to be read from disk
     // if it hasn't already been set in memory.  The special IntSize (0, 0) is a special way of telling 
     // that method "I don't care about the actual Image, i just want you to make sure you're getting it from disk.
-    Image* dummy;
-    iconForPageURL(pageURL, IntSize(0,0), &dummy);
+    iconForPageURL(pageURL, IntSize(0,0));
 }
 
 String IconDatabase::iconURLForPageURL(const String& pageURLOriginal)
index 3f4c9b7..10211af 100644 (file)
@@ -57,12 +57,6 @@ class SharedBuffer;
 class SQLTransaction;
 #endif
 
-enum IconLoadStatus {
-    IconNotFound,
-    IconLoadScheduled,
-    IconFound
-};
-
 enum IconLoadDecision {
     IconLoadYes,
     IconLoadNo,
@@ -80,7 +74,7 @@ public:
             
     void removeAllIcons();
 
-    IconLoadStatus iconForPageURL(const String&, const IntSize&, Image**);
+    Image* iconForPageURL(const String&, const IntSize&);
     void readIconForPageURLFromDisk(const String&);
     String iconURLForPageURL(const String&);
     Image* defaultIcon(const IntSize&);
index f861cad..c76a2c4 100644 (file)
@@ -99,10 +99,9 @@ void IconDatabase::readIconForPageURLFromDisk(const String&)
 
 }
 
-IconLoadStatus IconDatabase::iconForPageURL(const String& pageURL, const IntSize& size, Image** outImage)
+Image* IconDatabase::iconForPageURL(const String& pageURL, const IntSize& size)
 {
-    *outImage = defaultIcon(size);
-    return IconNotFound;
+    return defaultIcon(size);
 }
 
 
index cc3d1aa..cb89019 100644 (file)
@@ -236,7 +236,7 @@ QPixmap QWebFrame::icon() const
     String url = d->frame->loader()->url().string();
 
     Image* image = 0;
-    iconDatabase()->iconForPageURL(url, IntSize(16, 16), &image);
+    image = iconDatabase()->iconForPageURL(url, IntSize(16, 16));
 
     if (!image || image->isNull()) {
         image = iconDatabase()->defaultIcon(IntSize(16, 16));
index 9af08c4..76b953d 100644 (file)
@@ -315,9 +315,8 @@ void QWebSettings::clearIconDatabase()
 */
 QPixmap QWebSettings::iconForUrl(const QUrl &url)
 {
-    WebCore::Image* image = 0;
-    WebCore::iconDatabase()->iconForPageURL(WebCore::KURL(url).string(),
-                                            WebCore::IntSize(16, 16), &image);
+    WebCore::Image* image = WebCore::iconDatabase()->iconForPageURL(WebCore::KURL(url).string(),
+                                WebCore::IntSize(16, 16));
     if (!image) {
         return QPixmap();
     }
index 7c88472..0c83364 100644 (file)
@@ -1,3 +1,14 @@
+2008-04-03  Simon Hausmann  <hausmann@webkit.org>
+
+        Reviewed by Mark Rowe.
+
+        Roll out r31599 and r31605 again after discussion with Mark Rowe.
+
+        * Api/qwebframe.cpp:
+        (QWebFrame::icon):
+        * Api/qwebsettings.cpp:
+        (QWebSettings::iconForUrl):
+
 2008-04-03  Holger Hans Peter Freyther  <holger.freyther@trolltech.com>
 
         Reviewed by Simon.
index 55322eb..973baa5 100644 (file)
@@ -1,5 +1,14 @@
 2008-04-03  Simon Hausmann  <hausmann@webkit.org>
 
+        Reviewed by Mark Rowe.
+
+        Roll out r31599 and r31605 again after discussion with Mark Rowe.
+
+        * WebIconDatabase.cpp:
+        (WebIconDatabase::iconForURL):
+
+2008-04-03  Simon Hausmann  <hausmann@webkit.org>
+
         Attempted build fix
 
         * WebIconDatabase.cpp:
index 55d75e7..e15309a 100644 (file)
@@ -156,7 +156,7 @@ HRESULT STDMETHODCALLTYPE WebIconDatabase::iconForURL(
 
     Image* icon = 0;
     if (url)
-        iconDatabase()->iconForPageURL(String(url, SysStringLen(url)), intSize, &icon);
+        icon = iconDatabase()->iconForPageURL(String(url, SysStringLen(url)), intSize);
 
     // Make sure we check for the case of an "empty image"
     if (icon && icon->width()) {