diff options
Diffstat (limited to 'WebKit/mac/History/WebBackForwardList.mm')
-rw-r--r-- | WebKit/mac/History/WebBackForwardList.mm | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/WebKit/mac/History/WebBackForwardList.mm b/WebKit/mac/History/WebBackForwardList.mm index 2f0c214..f206fda 100644 --- a/WebKit/mac/History/WebBackForwardList.mm +++ b/WebKit/mac/History/WebBackForwardList.mm @@ -33,6 +33,7 @@ #import "WebHistoryItemInternal.h" #import "WebHistoryItemPrivate.h" #import "WebKitLogging.h" +#import "WebKitVersionChecks.h" #import "WebNSObjectExtras.h" #import "WebPreferencesPrivate.h" #import "WebTypesInternal.h" @@ -204,18 +205,42 @@ static NSArray* vectorToNSArray(HistoryItemVector& list) return result; } +static bool bumperCarBackForwardHackNeeded() +{ + static bool hackNeeded = [[[NSBundle mainBundle] bundleIdentifier] isEqualToString:@"com.freeverse.bumpercar"] && + !WebKitLinkedOnOrAfter(WEBKIT_FIRST_VERSION_WITHOUT_BUMPERCAR_BACK_FORWARD_QUIRK); + + return hackNeeded; +} + - (NSArray *)backListWithLimit:(int)limit { HistoryItemVector list; core(self)->backListWithLimit(limit, list); - return vectorToNSArray(list); + NSArray *result = vectorToNSArray(list); + + if (bumperCarBackForwardHackNeeded()) { + static NSArray *lastBackListArray = nil; + [lastBackListArray release]; + lastBackListArray = [result retain]; + } + + return result; } - (NSArray *)forwardListWithLimit:(int)limit { HistoryItemVector list; core(self)->forwardListWithLimit(limit, list); - return vectorToNSArray(list); + NSArray *result = vectorToNSArray(list); + + if (bumperCarBackForwardHackNeeded()) { + static NSArray *lastForwardListArray = nil; + [lastForwardListArray release]; + lastForwardListArray = [result retain]; + } + + return result; } - (int)capacity |