Changeset 21388 in webkit
- Timestamp:
- May 10, 2007 7:01:11 PM (17 years ago)
- Location:
- trunk
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r21387 r21388 1 2007-05-10 Geoffrey Garen <ggaren@apple.com> 2 3 Reviewed by Darin Adler. 4 5 "IconDatabase::sharedIconDatabase()" => "iconDatabase()" for terseness, 6 in the style of WebCore::cache(). 7 8 * WebCore.exp: 9 * history/HistoryItem.cpp: Removed retainIconInDatabase because calling 10 "retain" in order to release something is really confusing and, now that 11 iconDatabase() is more terse, we don't need this helper to shorten the 12 syntax. (The isEmpty() check is also done by the database, so we don't 13 need it either.) 14 15 (WebCore::IconDatabase::~IconDatabase): ASSERT that our destructor isn't 16 called. We're a singleton, so it's confusing to have tear-down code. 17 1 18 2007-05-10 Adele Peterson <adele@apple.com> 2 19 -
trunk/WebCore/WebCore.exp
r21387 r21388 217 217 __ZN7WebCore12IconDatabase17iconURLForPageURLERKNS_6StringE 218 218 __ZN7WebCore12IconDatabase18hasEntryForIconURLERKNS_6StringE 219 __ZN7WebCore12IconDatabase18sharedIconDatabaseEv220 219 __ZN7WebCore12IconDatabase20retainIconForPageURLERKNS_6StringE 221 220 __ZN7WebCore12IconDatabase20setIconURLForPageURLERKNS_6StringES3_ … … 232 231 __ZN7WebCore12SharedBuffer10wrapNSDataEP6NSData 233 232 __ZN7WebCore12SharedBuffer12createNSDataEv 233 __ZN7WebCore12iconDatabaseEv 234 234 __ZN7WebCore13HitTestResultC1ERKS0_ 235 235 __ZN7WebCore13HitTestResultD1Ev -
trunk/WebCore/history/HistoryItem.cpp
r21261 r21388 66 66 , m_visitCount(0) 67 67 { 68 retainIconInDatabase(true);68 iconDatabase()->retainIconForPageURL(m_urlString); 69 69 } 70 70 … … 77 77 , m_visitCount(0) 78 78 { 79 retainIconInDatabase(true);79 iconDatabase()->retainIconForPageURL(m_urlString); 80 80 } 81 81 … … 90 90 , m_visitCount(0) 91 91 { 92 retainIconInDatabase(true);92 iconDatabase()->retainIconForPageURL(m_urlString); 93 93 } 94 94 95 95 HistoryItem::~HistoryItem() 96 96 { 97 retainIconInDatabase(false);97 iconDatabase()->releaseIconForPageURL(m_urlString); 98 98 } 99 99 … … 143 143 } 144 144 145 void HistoryItem::retainIconInDatabase(bool retain)146 {147 if (!m_urlString.isEmpty()) {148 if (retain)149 IconDatabase::sharedIconDatabase()->retainIconForPageURL(m_urlString);150 else151 IconDatabase::sharedIconDatabase()->releaseIconForPageURL(m_urlString);152 }153 }154 155 145 const String& HistoryItem::urlString() const 156 146 { … … 177 167 Image* HistoryItem::icon() const 178 168 { 179 Image* result = IconDatabase::sharedIconDatabase()->iconForPageURL(m_urlString, IntSize(16,16));180 return result ? result : IconDatabase::sharedIconDatabase()->defaultIcon(IntSize(16,16));169 Image* result = iconDatabase()->iconForPageURL(m_urlString, IntSize(16,16)); 170 return result ? result : iconDatabase()->defaultIcon(IntSize(16,16)); 181 171 } 182 172 … … 215 205 { 216 206 if (m_urlString != urlString) { 217 retainIconInDatabase(false);207 iconDatabase()->releaseIconForPageURL(m_urlString); 218 208 m_urlString = urlString; 219 retainIconInDatabase(true);209 iconDatabase()->retainIconForPageURL(m_urlString); 220 210 } 221 211 -
trunk/WebCore/history/HistoryItem.h
r21261 r21388 78 78 Image* icon() const; 79 79 80 void retainIconInDatabase(bool retain);81 80 static void performPendingReleaseOfCachedPages(); 82 81 void setCachedPage(PassRefPtr<CachedPage>); -
trunk/WebCore/loader/FrameLoader.cpp
r21367 r21388 1006 1006 return; 1007 1007 1008 IconDatabase* iconDB = IconDatabase::sharedIconDatabase(); 1009 if (!iconDB) 1010 return; 1011 if (!iconDB->enabled()) 1008 if (!iconDatabase() || !iconDatabase()->enabled()) 1012 1009 return; 1013 1010 … … 1018 1015 1019 1016 // If we already have an unexpired icon, we won't kick off a load but we *will* map the appropriate URLs to it 1020 if (iconD B->hasEntryForIconURL(urlString) && loadType() != FrameLoadTypeReload && !iconDB->isIconExpiredForIconURL(urlString)) {1017 if (iconDatabase()->hasEntryForIconURL(urlString) && loadType() != FrameLoadTypeReload && !iconDatabase()->isIconExpiredForIconURL(urlString)) { 1021 1018 commitIconURLToIconDatabase(url); 1022 1019 return; … … 1052 1049 void FrameLoader::commitIconURLToIconDatabase(const KURL& icon) 1053 1050 { 1054 IconDatabase* iconDB = IconDatabase::sharedIconDatabase(); 1055 ASSERT(iconDB); 1056 iconDB->setIconURLForPageURL(icon.url(), m_URL.url()); 1057 iconDB->setIconURLForPageURL(icon.url(), originalRequestURL().url()); 1051 ASSERT(iconDatabase()); 1052 iconDatabase()->setIconURLForPageURL(icon.url(), m_URL.url()); 1053 iconDatabase()->setIconURLForPageURL(icon.url(), originalRequestURL().url()); 1058 1054 } 1059 1055 -
trunk/WebCore/loader/icon/IconDatabase.cpp
r21073 r21388 45 45 namespace WebCore { 46 46 47 static IconDatabase* sharedI nstance = 0;47 static IconDatabase* sharedIconDatabase = 0; 48 48 49 49 // This version number is in the DB and marks the current generation of the schema … … 67 67 } 68 68 69 IconDatabase* IconDatabase::sharedIconDatabase()70 { 71 if (!sharedI nstance)72 sharedI nstance = new IconDatabase;73 return sharedI nstance;69 IconDatabase* iconDatabase() 70 { 71 if (!sharedIconDatabase) 72 sharedIconDatabase = new IconDatabase; 73 return sharedIconDatabase; 74 74 } 75 75 … … 934 934 setImportedQuery(m_mainDB, import); 935 935 } 936 936 937 937 IconDatabase::~IconDatabase() 938 938 { 939 close(); 940 m_startupTimer.stop(); 941 m_updateTimer.stop(); 942 if (sharedInstance == this) 943 sharedInstance = 0; 939 ASSERT_NOT_REACHED(); 944 940 } 945 941 -
trunk/WebCore/loader/icon/IconDatabase.h
r21073 r21388 44 44 class IconDatabase : Noncopyable { 45 45 public: 46 static IconDatabase* sharedIconDatabase();47 48 46 bool open(const String& path); 49 47 bool isOpen() { return m_mainDB.isOpen() && m_privateBrowsingDB.isOpen(); } … … 86 84 IconDatabase(); 87 85 ~IconDatabase(); 86 friend IconDatabase* iconDatabase(); 88 87 89 88 // This tries to get the iconID for the IconURL and, if it doesn't exist and createIfNecessary is true, … … 213 212 }; 214 213 215 } //namespace WebCore 214 // Function to obtain the global icon database. 215 IconDatabase* iconDatabase(); 216 217 } // namespace WebCore 216 218 217 219 #endif -
trunk/WebCore/loader/icon/IconLoader.cpp
r20350 r21388 135 135 ASSERT(m_resourceLoader); 136 136 if (!iconURL.isEmpty() && m_resourceLoader) { 137 IconDatabase::sharedIconDatabase()->setIconDataForIconURL(m_resourceLoader->resourceData(), iconURL.url());137 iconDatabase()->setIconDataForIconURL(m_resourceLoader->resourceData(), iconURL.url()); 138 138 m_frame->loader()->commitIconURLToIconDatabase(iconURL); 139 139 m_frame->loader()->client()->dispatchDidReceiveIcon(); -
trunk/WebKit/ChangeLog
r21387 r21388 1 2007-05-10 Geoffrey Garen <ggaren@apple.com> 2 3 Reviewed by Darin Adler. 4 5 "IconDatabase::sharedIconDatabase()" => "iconDatabase()" for terseness. 6 1 7 2007-05-10 Adele Peterson <adele@apple.com> 2 8 -
trunk/WebKit/Misc/WebIconDatabase.mm
r21073 r21388 100 100 [initialDefaults release]; 101 101 BOOL enabled = [defaults boolForKey:WebIconDatabaseEnabledDefaultsKey]; 102 IconDatabase::sharedIconDatabase()->setEnabled(enabled);102 iconDatabase()->setEnabled(enabled); 103 103 if (!enabled) 104 104 return self; … … 117 117 NSFileManager *defaultManager = [NSFileManager defaultManager]; 118 118 if ([defaultManager fileExistsAtPath:legacyDB isDirectory:&isDirectory] && !isDirectory) { 119 NSString *newDB = [databaseDirectory stringByAppendingPathComponent: IconDatabase::sharedIconDatabase()->defaultDatabaseFilename()];119 NSString *newDB = [databaseDirectory stringByAppendingPathComponent:iconDatabase()->defaultDatabaseFilename()]; 120 120 if (![defaultManager fileExistsAtPath:newDB]) 121 121 rename([legacyDB fileSystemRepresentation], [newDB fileSystemRepresentation]); … … 123 123 124 124 // Open the WebCore icon database and import the old WebKit icon database 125 if (! IconDatabase::sharedIconDatabase()->open(databaseDirectory))125 if (!iconDatabase()->open(databaseDirectory)) 126 126 LOG_ERROR("Unable to open icon database"); 127 127 else … … 129 129 [self _importToWebCoreFormat]; 130 130 131 IconDatabase::sharedIconDatabase()->setPrivateBrowsingEnabled([[WebPreferences standardPreferences] privateBrowsingEnabled]);131 iconDatabase()->setPrivateBrowsingEnabled([[WebPreferences standardPreferences] privateBrowsingEnabled]); 132 132 133 133 // Register for important notifications … … 156 156 return [self _iconForFileURL:URL withSize:size]; 157 157 158 if (Image* image = IconDatabase::sharedIconDatabase()->iconForPageURL(URL, IntSize(size)))158 if (Image* image = iconDatabase()->iconForPageURL(URL, IntSize(size))) 159 159 if (NSImage *icon = webGetNSImage(image, size)) 160 160 return icon; … … 173 173 ASSERT_MAIN_THREAD(); 174 174 175 return IconDatabase::sharedIconDatabase()->iconURLForPageURL(URL);175 return iconDatabase()->iconURLForPageURL(URL); 176 176 } 177 177 … … 182 182 ASSERT(size.height); 183 183 184 Image* image = IconDatabase::sharedIconDatabase()->defaultIcon(IntSize(size));184 Image* image = iconDatabase()->defaultIcon(IntSize(size)); 185 185 return image ? image->getNSImage() : nil; 186 186 } … … 200 200 return; 201 201 202 IconDatabase::sharedIconDatabase()->retainIconForPageURL(URL);202 iconDatabase()->retainIconForPageURL(URL); 203 203 } 204 204 … … 210 210 return; 211 211 212 IconDatabase::sharedIconDatabase()->releaseIconForPageURL(pageURL);212 iconDatabase()->releaseIconForPageURL(pageURL); 213 213 } 214 214 … … 234 234 if (![self _isEnabled]) 235 235 return; 236 IconDatabase::sharedIconDatabase()->removeAllIcons();236 iconDatabase()->removeAllIcons(); 237 237 // FIXME: This notification won't get sent if WebCore calls removeAllIcons. 238 238 [[NSNotificationCenter defaultCenter] postNotificationName:WebIconDatabaseDidRemoveAllIconsNotification … … 247 247 - (BOOL)_isEnabled 248 248 { 249 return IconDatabase::sharedIconDatabase()->enabled();249 return iconDatabase()->enabled(); 250 250 } 251 251 … … 259 259 // The WebCore::IconDatabase returns TRUE if we should send the notification, and false if we shouldn't. 260 260 // This is a measurable win on the iBench - about 1% worth on average 261 if ( IconDatabase::sharedIconDatabase()->setIconURLForPageURL(iconURL, URL))261 if (iconDatabase()->setIconURLForPageURL(iconURL, URL)) 262 262 // FIXME: This notification won't get set when WebCore sets an icon. 263 263 [self _sendNotificationForURL:URL]; … … 268 268 ASSERT([self _isEnabled]); 269 269 270 return IconDatabase::sharedIconDatabase()->hasEntryForIconURL(iconURL);270 return iconDatabase()->hasEntryForIconURL(iconURL); 271 271 } 272 272 … … 284 284 - (void)_applicationWillTerminate:(NSNotification *)notification 285 285 { 286 IconDatabase::sharedIconDatabase()->close();286 iconDatabase()->close(); 287 287 } 288 288 … … 320 320 { 321 321 BOOL privateBrowsingEnabledNow = [[WebPreferences standardPreferences] privateBrowsingEnabled]; 322 IconDatabase::sharedIconDatabase()->setPrivateBrowsingEnabled(privateBrowsingEnabledNow);322 iconDatabase()->setPrivateBrowsingEnabled(privateBrowsingEnabledNow); 323 323 } 324 324 … … 499 499 500 500 // If we've already performed the import once we shouldn't try to do it again 501 if ( IconDatabase::sharedIconDatabase()->imported())501 if (iconDatabase()->imported()) 502 502 return; 503 503 … … 531 531 if (!iconURL) 532 532 continue; 533 IconDatabase::sharedIconDatabase()->setIconURLForPageURL(iconURL, url);533 iconDatabase()->setIconURLForPageURL(iconURL, url); 534 534 } 535 535 … … 543 543 iconData = iconDataFromPathForIconURL(databaseDirectory, url); 544 544 if (iconData) 545 IconDatabase::sharedIconDatabase()->setIconDataForIconURL(SharedBuffer::wrapNSData(iconData), url);545 iconDatabase()->setIconDataForIconURL(SharedBuffer::wrapNSData(iconData), url); 546 546 else { 547 547 // This really *shouldn't* happen, so it'd be good to track down why it might happen in a debug build 548 548 // however, we do know how to handle it gracefully in release 549 549 LOG_ERROR("%@ is marked as having an icon on disk, but we couldn't get the data for it", url); 550 IconDatabase::sharedIconDatabase()->setHaveNoIconForIconURL(url);550 iconDatabase()->setHaveNoIconForIconURL(url); 551 551 } 552 552 } 553 553 554 IconDatabase::sharedIconDatabase()->setImported(true);554 iconDatabase()->setImported(true); 555 555 556 556 // After we're done importing old style icons over to webcore icons, we delete the entire directory hierarchy … … 559 559 enumerator = [[fileManager directoryContentsAtPath:databaseDirectory] objectEnumerator]; 560 560 561 NSString *databaseFilename = IconDatabase::sharedIconDatabase()->defaultDatabaseFilename();561 NSString *databaseFilename = iconDatabase()->defaultDatabaseFilename(); 562 562 563 563 BOOL foundIconDB = NO; -
trunk/WebKit/WebCoreSupport/WebFrameLoaderClient.mm
r21160 r21388 428 428 id delegate = [webView frameLoadDelegate]; 429 429 if ([delegate respondsToSelector:@selector(webView:didReceiveIcon:forFrame:)]) { 430 Image* image = IconDatabase::sharedIconDatabase()->430 Image* image = iconDatabase()-> 431 431 iconForPageURL(core(m_webFrame.get())->loader()->url().url(), IntSize(16, 16)); 432 432 NSImage *icon = webGetNSImage(image, NSMakeSize(16, 16));
Note: See TracChangeset
for help on using the changeset viewer.