18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*
28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Copyright (C) 2006, 2007, 2008 Apple Inc.  All rights reserved.
38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Redistribution and use in source and binary forms, with or without
58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * modification, are permitted provided that the following conditions
68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * are met:
78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 1. Redistributions of source code must retain the above copyright
88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer.
98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *    documentation and/or other materials provided with the distribution.
128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project *
138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */
258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifndef DO_NO_IMPORTS
278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectimport "oaidl.idl";
288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectimport "ocidl.idl";
298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectimport "IWebHistoryItem.idl";
308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#endif
318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectinterface IWebHistoryItem;
338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/*!
358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    @class WebBackForwardList
368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    WebBackForwardList holds an ordered list of WebHistoryItems that comprises the back and
378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    forward lists.
388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    Note that the methods which modify instances of this class do not cause
408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    navigation to happen in other layers of the stack;  they are only for maintaining this data
418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    structure.
428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/
438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project[
448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    object,
458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    oleautomation,
468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    uuid(C278A16D-B502-4131-B551-DCE3F4ED2B36),
478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    pointer_default(unique)
488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project]
498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectinterface IWebBackForwardList : IUnknown
508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{
518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method addItem:
538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Adds an entry to the list.
548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @param entry The entry to add.
558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @discussion The added entry is inserted immediately after the current entry.
568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        If the current position in the list is not at the end of the list, elements in the
578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        forward list will be dropped at this point.  In addition, entries may be dropped to keep
588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        the size of the list within the maximum size.
598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (void)addItem:(WebHistoryItem *)item;
608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT addItem([in] IWebHistoryItem* item);
628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method goBack
658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Move the current pointer back to the entry before the current entry.
668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (void)goBack;
678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT goBack();
698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method goForward
728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Move the current pointer ahead to the entry after the current entry.
738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (void)goForward;
748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT goForward();
768e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
778e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
788e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method goToItem:
798e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Move the current pointer to the given entry.
808e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @param item The history item to move the pointer to
818e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (void)goToItem:(WebHistoryItem *)item;
828e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
838e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT goToItem([in] IWebHistoryItem* item);
848e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
858e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
868e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method backItem
878e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Returns the entry right before the current entry.
888e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result The entry right before the current entry, or nil if there isn't one.
898e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (WebHistoryItem *)backItem;
908e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
918e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT backItem([out, retval] IWebHistoryItem** item);
928e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
938e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
948e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method currentItem
958e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Returns the current entry.
968e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result The current entry.
978e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (WebHistoryItem *)currentItem;
988e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
998e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT currentItem([out, retval] IWebHistoryItem** item);
1008e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1018e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
1028e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method forwardItem
1038e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Returns the entry right after the current entry.
1048e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result The entry right after the current entry, or nil if there isn't one.
1058e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (WebHistoryItem *)forwardItem;
1068e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
1078e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT forwardItem([out, retval] IWebHistoryItem** item);
1088e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1098e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
1108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method backListWithLimit:
1118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Returns a portion of the list before the current entry.
1128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @param limit A cap on the size of the array returned.
1138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result An array of items before the current entry, or nil if there are none.  The entries are in the order that they were originally visited.
1148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (NSArray *)backListWithLimit:(int)limit;
1158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
1168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT backListWithLimit([in] int limit, [out] int* listCount, [in] IWebHistoryItem** list);
1178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
1198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method forwardListWithLimit:
1208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Returns a portion of the list after the current entry.
1218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @param limit A cap on the size of the array returned.
1228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result An array of items after the current entry, or nil if there are none.  The entries are in the order that they were originally visited.
1238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (NSArray *)forwardListWithLimit:(int)limit;
1248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
1258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT forwardListWithLimit([in] int limit, [out] int* listCount, [in] IWebHistoryItem** list);
1268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
1288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method capacity
1298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Returns the list's maximum size.
1308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result The list's maximum size.
1318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (int)capacity;
1328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
1338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT capacity([out, retval] int* result);
1348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
1368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method setCacpacity
1378e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Sets the list's maximum size.
1388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @param size The new maximum size for the list.
1398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (void)setCapacity:(int)size;
1408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
1418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT setCapacity([in] int size);
1428e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
1448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method backListCount
1458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Returns the back list's current count.
1468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result The number of items in the list.
1478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (int)backListCount;
1488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
1498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT backListCount([out, retval] int* count);
1508e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
1528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method forwardListCount
1538e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Returns the forward list's current count.
1548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result The number of items in the list.
1558e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (int)forwardListCount;
1568e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
1578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT forwardListCount([out, retval] int* sizecount);
1588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1598e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
1608e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method containsItem:
1618e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @param item The item that will be checked for presence in the WebBackForwardList.
1628e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result Returns YES if the item is in the list.
1638e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (BOOL)containsItem:(WebHistoryItem *)item;
1648e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
1658e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT containsItem([in] IWebHistoryItem* item, [out, retval] BOOL* result);
1668e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project
1678e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    /*!
1688e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @method itemAtIndex:
1698e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @abstract Returns an entry the given distance from the current entry.
1708e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @param index Index of the desired list item relative to the current item; 0 is current item, -1 is back item, 1 is forward item, etc.
1718e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        @result The entry the given distance from the current entry. If index exceeds the limits of the list, nil is returned.
1728e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project        - (WebHistoryItem *)itemAtIndex:(int)index;
1738e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    */
1748e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project    HRESULT itemAtIndex([in] int index, [out, retval] IWebHistoryItem** item);
1758e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project}
176