Revision: 28265
http://sourceforge.net/p/bibdesk/svn/28265
Author: hofman
Date: 2023-05-28 15:47:07 +0000 (Sun, 28 May 2023)
Log Message:
-----------
Save favicons also under original page URL when redirected. Also look for saved
icons with URLs with trailing slash added or removed
Modified Paths:
--------------
trunk/bibdesk/BDSKWebIconDatabase.h
trunk/bibdesk/BDSKWebIconDatabase.m
trunk/bibdesk/BDSKWebView.m
Modified: trunk/bibdesk/BDSKWebIconDatabase.h
===================================================================
--- trunk/bibdesk/BDSKWebIconDatabase.h 2023-05-26 21:39:27 UTC (rev 28264)
+++ trunk/bibdesk/BDSKWebIconDatabase.h 2023-05-28 15:47:07 UTC (rev 28265)
@@ -51,6 +51,6 @@
- (NSImage *)iconForURLString:(NSString *)pageURLString;
- (NSImage *)recentIconForURLString:(NSString *)aURLString;
-- (void)setIcon:(NSImage *)icon withData:(NSData *)data
fromURLString:(NSString *)iconURLString forURLString:(NSString *)pageURLString;
+- (void)setIcon:(NSImage *)icon withData:(NSData *)data
fromURLString:(NSString *)iconURLString forURLString:(NSString *)pageURLString
originalURLString:(NSString *)originalURLString;
@end
Modified: trunk/bibdesk/BDSKWebIconDatabase.m
===================================================================
--- trunk/bibdesk/BDSKWebIconDatabase.m 2023-05-26 21:39:27 UTC (rev 28264)
+++ trunk/bibdesk/BDSKWebIconDatabase.m 2023-05-28 15:47:07 UTC (rev 28265)
@@ -97,6 +97,13 @@
if (icon)
return icon;
NSString *iconURLString = [[pages objectForKey:pageURLString]
objectForKey:ICONURL_KEY];
+ if (iconURLString == nil) {
+ if ([pageURLString hasSuffix:@"/"])
+ pageURLString = [pageURLString substringToIndex:[pageURLString
length] - 1];
+ else
+ pageURLString = [pageURLString stringByAppendingString:@"/"];
+ iconURLString = [[pages objectForKey:pageURLString]
objectForKey:ICONURL_KEY];
+ }
if (iconURLString == nil)
return nil;
icon = [cachedIcons objectForKey:iconURLString];
@@ -123,7 +130,7 @@
return icon;
}
-- (void)setIcon:(NSImage *)icon withData:(NSData *)data
fromURLString:(NSString *)iconURLString forURLString:(NSString *)pageURLString {
+- (void)setIcon:(NSImage *)icon withData:(NSData *)data
fromURLString:(NSString *)iconURLString forURLString:(NSString *)pageURLString
originalURLString:(NSString *)originalURLString {
if ([NSString isEmptyString:pageURLString])
return;
if (recentIcons == nil)
@@ -131,6 +138,8 @@
[recentIcons setObject:icon forKey:pageURLString];
NSMutableDictionary *dict = [NSMutableDictionary
dictionaryWithObjectsAndKeys:iconURLString, ICONURL_KEY, [NSDate date],
LASTVISITED_KEY, nil];
[pages setObject:dict forKey:pageURLString];
+ if (originalURLString)
+ [pages setObject:dict forKey:originalURLString];
if (data) {
[recentIcons setObject:icon forKey:iconURLString];
[cachedIcons removeObjectForKey:iconURLString];
Modified: trunk/bibdesk/BDSKWebView.m
===================================================================
--- trunk/bibdesk/BDSKWebView.m 2023-05-26 21:39:27 UTC (rev 28264)
+++ trunk/bibdesk/BDSKWebView.m 2023-05-28 15:47:07 UTC (rev 28265)
@@ -295,8 +295,12 @@
// different pages from the same site can have the same favicon
icon = faviconFromOrigin ? nil : [[BDSKWebIconDatabase sharedDatabase]
recentIconForURLString:[faviconURL absoluteString]];
+ urlString = [self mainFrameURL];
+ NSString *origUrlString = [[[[[self mainFrame] dataSource] initialRequest]
URL] absoluteString];
+ if ([origUrlString isEqualToString:urlString])
+ origUrlString = nil;
if (icon) {
- [[BDSKWebIconDatabase sharedDatabase] setIcon:icon withData:nil
fromURLString:[faviconURL absoluteString] forURLString:[self mainFrameURL]];
+ [[BDSKWebIconDatabase sharedDatabase] setIcon:icon withData:nil
fromURLString:[faviconURL absoluteString] forURLString:[self mainFrameURL]
originalURLString:origUrlString];
if (icon != favicon)
[self setFavicon:icon];
return;
@@ -303,7 +307,6 @@
}
faviconFromOrigin = NO;
- urlString = [self mainFrameURL];
NSURLRequest *request = [NSURLRequest requestWithURL:faviconURL];
faviconDownload = [[[BDSKDownloader sharedDownloader]
downloadDataWithRequest:request completionHandler:^(NSData *data, NSURLResponse
*response, NSError *error){
BDSKDESTROY(faviconDownload);
@@ -312,7 +315,7 @@
if (anIcon) {
[self setFavicon:anIcon];
[[BDSKWebIconDatabase sharedDatabase] setIcon:anIcon
withData:data fromURLString:[faviconURL absoluteString]
- forURLString:urlString];
+ forURLString:urlString originalURLString:origUrlString];
[anIcon release];
}
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit