Reviewed by THE OTHER Maciej...
authorbeidson <beidson@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 15 Aug 2006 08:04:28 +0000 (08:04 +0000)
committerbeidson <beidson@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 15 Aug 2006 08:04:28 +0000 (08:04 +0000)
        Two small fixes -
        1) Renamed retain/release methods to add PageUrl in - we're being consistent and clear in the WebCore API
        2) Fixed a bug where a null SiteIcon reference would be added into the pageURLToSiteIcon map causing a
        null dereference later

        * bridge/mac/WebCoreIconDatabaseBridge.mm:
        (-[WebCoreIconDatabaseBridge retainIconForURL:]):  Changed IconDatabase method name
        (-[WebCoreIconDatabaseBridge releaseIconForURL:]):  ditto
        * loader/icon/IconDatabase.cpp:
        (WebCore::IconDatabase::retainIconForPageURL):  Name change
        (WebCore::IconDatabase::releaseIconForPageURL):  ditto
        (WebCore::IconDatabase::setIconURLForPageURL):  Added the null site-icon check when changing a PageURL's iconURL
        * loader/icon/IconDatabase.h:  Some renames

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@15873 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog
WebCore/bridge/mac/WebCoreIconDatabaseBridge.mm
WebCore/loader/icon/IconDatabase.cpp
WebCore/loader/icon/IconDatabase.h

index 3036f28f844127264f330646d23ce622bd3d58e3..d13ff03c648d23ea6e04583223982573fcc94734 100644 (file)
@@ -1,3 +1,21 @@
+2006-08-15  Brady Eidson  <beidson@apple.com>
+
+        Reviewed by THE OTHER Maciej...
+
+        Two small fixes -
+        1) Renamed retain/release methods to add PageUrl in - we're being consistent and clear in the WebCore API
+        2) Fixed a bug where a null SiteIcon reference would be added into the pageURLToSiteIcon map causing a
+        null dereference later
+
+        * bridge/mac/WebCoreIconDatabaseBridge.mm:
+        (-[WebCoreIconDatabaseBridge retainIconForURL:]):  Changed IconDatabase method name
+        (-[WebCoreIconDatabaseBridge releaseIconForURL:]):  ditto
+        * loader/icon/IconDatabase.cpp:
+        (WebCore::IconDatabase::retainIconForPageURL):  Name change
+        (WebCore::IconDatabase::releaseIconForPageURL):  ditto
+        (WebCore::IconDatabase::setIconURLForPageURL):  Added the null site-icon check when changing a PageURL's iconURL
+        * loader/icon/IconDatabase.h:  Some renames
+
 2006-08-14  Eric Seidel  <eric@eseidel.com>
 
         Reviewed by mjs.
index bc93c80d2bf1917f6774f433c32515888ab4afdf..a2cb3f64b4c813a1ea4db2c76b552e4be7fe430f 100644 (file)
@@ -149,14 +149,14 @@ void WebCore::IconDatabase::loadIconFromURL(const String& url)
 {
     ASSERT(_iconDB);
     ASSERT(url);
-    _iconDB->retainIconForURL(String(url));
+    _iconDB->retainIconForPageURL(String(url));
 }
 
 - (void)releaseIconForURL:(NSString *)url
 {
     ASSERT(_iconDB);
     ASSERT(url);
-    _iconDB->releaseIconForURL(String(url));
+    _iconDB->releaseIconForPageURL(String(url));
 }
 
 - (void)_setIconData:(NSData *)data forIconURL:(NSString *)iconURL
index fc30da047bcc706a09797c18d7c0970f4e6197fa..1c1245901cfd97ccc8a20a41e625d1ac013280c2 100644 (file)
@@ -382,7 +382,7 @@ Image* IconDatabase::defaultIcon(const IntSize& size)
     return 0;
 }
 
-void IconDatabase::retainIconForURL(const String& _url)
+void IconDatabase::retainIconForPageURL(const String& _url)
 {
     if (_url.isEmpty())
         return;
@@ -398,7 +398,7 @@ void IconDatabase::retainIconForURL(const String& _url)
         
 }
 
-void IconDatabase::releaseIconForURL(const String& _url)
+void IconDatabase::releaseIconForPageURL(const String& _url)
 {
     if (_url.isEmpty())
         return;
@@ -691,8 +691,11 @@ void IconDatabase::setIconURLForPageURL(const String& _iconURL, const String& _p
     
     // Cache the mapping...
     m_pageURLToIconURLMap.set(_pageURL, _iconURL);
-    // Change the cached pageURL->iconURL mapping
-    m_pageURLToSiteIcons.set(_pageURL, m_iconURLToSiteIcons.get(_iconURL));
+    // Change the cached pageURL->SiteIcon mapping based on the new iconURL
+    if (m_iconURLToSiteIcons.contains(_iconURL))
+        m_pageURLToSiteIcons.set(_pageURL, m_iconURLToSiteIcons.get(_iconURL));
+    else
+        m_pageURLToSiteIcons.remove(_pageURL);
     // Update the DB
     performSetIconURLForPageURL(iconID, pageTable, pageURL);
 }
index f818b8a3a5525c85d57cfc822b1fa9dcea15c0df..48ee3fb223f85797ea8df25c601dd73d005e2e30 100644 (file)
@@ -98,8 +98,8 @@ public:
     String iconURLForPageURL(const String&);
     Image* defaultIcon(const IntSize&);
 
-    void retainIconForURL(const String&);
-    void releaseIconForURL(const String&);
+    void retainIconForPageURL(const String&);
+    void releaseIconForPageURL(const String&);
     
     void setPrivateBrowsingEnabled(bool flag);
     bool getPrivateBrowsingEnabled() { return m_privateBrowsingEnabled; }