summaryrefslogtreecommitdiffstats
path: root/WebKit/mac/History/WebBackForwardList.mm
diff options
context:
space:
mode:
Diffstat (limited to 'WebKit/mac/History/WebBackForwardList.mm')
-rw-r--r--WebKit/mac/History/WebBackForwardList.mm29
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