Reviewed by Tim Omernick.
[WebKit-https.git] / WebKit / History / WebHistoryPrivate.h
1 /*
2  * Copyright (C) 2005 Apple Computer, Inc.  All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  *
8  * 1.  Redistributions of source code must retain the above copyright
9  *     notice, this list of conditions and the following disclaimer. 
10  * 2.  Redistributions in binary form must reproduce the above copyright
11  *     notice, this list of conditions and the following disclaimer in the
12  *     documentation and/or other materials provided with the distribution. 
13  * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
14  *     its contributors may be used to endorse or promote products derived
15  *     from this software without specific prior written permission. 
16  *
17  * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY
18  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20  * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY
21  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
24  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27  */
28
29 #import <Foundation/Foundation.h>
30
31 #import <WebKit/WebHistory.h>
32
33 @class WebHistoryItem;
34 @class NSError;
35
36 /*
37     @constant WebHistoryItemsDiscardedWhileLoadingNotification Posted from loadFromURL:error:.  
38     This notification comes with a userInfo dictionary that contains the array of
39     items discarded due to the date limit or item limit.  The key for the array is WebHistoryItemsKey.
40 */
41 // FIXME: This notification should become API in WebHistory.h
42 extern NSString *WebHistoryItemsDiscardedWhileLoadingNotification;
43
44 // FIXME: The WebHistoryPrivate interface should be in WebHistoryInternal.h or inside WebHistory.m
45 @interface WebHistoryPrivate : NSObject {
46 @private
47     NSMutableDictionary *_entriesByURL;
48     NSMutableArray *_datesWithEntries;
49     NSMutableArray *_entriesByDate;
50     BOOL itemLimitSet;
51     int itemLimit;
52     BOOL ageInDaysLimitSet;
53     int ageInDaysLimit;
54 }
55
56 - (void)addItem:(WebHistoryItem *)entry;
57 - (void)addItems:(NSArray *)newEntries;
58 - (BOOL)removeItem:(WebHistoryItem *)entry;
59 - (BOOL)removeItems:(NSArray *)entries;
60 - (BOOL)removeAllItems;
61 - (void)setLastVisitedTimeInterval:(NSTimeInterval)time forItem:(WebHistoryItem *)item;
62
63 - (NSArray *)orderedLastVisitedDays;
64 - (NSArray *)orderedItemsLastVisitedOnDay:(NSCalendarDate *)calendarDate;
65 - (BOOL)containsItemForURLString:(NSString *)URLString;
66 - (BOOL)containsURL:(NSURL *)URL;
67 - (WebHistoryItem *)itemForURL:(NSURL *)URL;
68 - (WebHistoryItem *)itemForURLString:(NSString *)URLString;
69
70 - (BOOL)loadFromURL:(NSURL *)URL collectDiscardedItemsInto:(NSMutableArray *)discardedItems error:(NSError **)error;
71 - (BOOL)saveToURL:(NSURL *)URL error:(NSError **)error;
72
73 - (NSCalendarDate*)_ageLimitDate;
74
75 - (void)setHistoryItemLimit:(int)limit;
76 - (int)historyItemLimit;
77 - (void)setHistoryAgeInDaysLimit:(int)limit;
78 - (int)historyAgeInDaysLimit;
79
80 @end
81
82 @interface WebHistory (WebPrivate)
83
84 // FIXME: The following SPI is used by Safari. Should it be made into public API?
85 - (WebHistoryItem *)_itemForURLString:(NSString *)URLString;
86
87 // FIXME: Safari doesn't use the following SPI, and it's used in WebKit only inside WebHistory.m.
88 // Should we move it into a FileInternal category inside WebHistory.m, or do we need it for other
89 // clients?
90 - (void)removeItem:(WebHistoryItem *)entry;
91 - (void)addItem:(WebHistoryItem *)entry;
92 - (BOOL)containsItemForURLString:(NSString *)URLString;
93
94 // FIXME: Safari doesn't use the following SPI, but other WebKit classes do. Should we move it into
95 // a WebHistoryInternal.h, or do we need it for other clients?
96 - (WebHistoryItem *)addItemForURL:(NSURL *)URL;
97 // Change date on existing item
98 - (void)setLastVisitedTimeInterval:(NSTimeInterval)time forItem:(WebHistoryItem *)item;
99
100 // FIXME: neither Safari nor WebKit use the following SPI -- do we still need it?
101 - (NSCalendarDate*)ageLimitDate;
102
103 @end