2007-03-22 10:30:00 -07:00
|
|
|
/* -*- Mode: IDL; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
|
|
|
|
/* ***** BEGIN LICENSE BLOCK *****
|
|
|
|
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
|
|
|
|
*
|
|
|
|
* The contents of this file are subject to the Mozilla Public License Version
|
|
|
|
* 1.1 (the "License"); you may not use this file except in compliance with
|
|
|
|
* the License. You may obtain a copy of the License at
|
|
|
|
* http://www.mozilla.org/MPL/
|
|
|
|
*
|
|
|
|
* Software distributed under the License is distributed on an "AS IS" basis,
|
|
|
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
|
|
|
|
* for the specific language governing rights and limitations under the
|
|
|
|
* License.
|
|
|
|
*
|
|
|
|
* The Original Code is Places.
|
|
|
|
*
|
|
|
|
* The Initial Developer of the Original Code is
|
|
|
|
* Google Inc.
|
|
|
|
* Portions created by the Initial Developer are Copyright (C) 2005
|
|
|
|
* the Initial Developer. All Rights Reserved.
|
|
|
|
*
|
|
|
|
* Contributor(s):
|
|
|
|
* Brian Ryner <bryner@brianryner.com> (original author)
|
|
|
|
* Joe Hughes <joe@retrovirus.com>
|
2007-08-02 13:19:44 -07:00
|
|
|
* Dietrich Ayala <dietrich@mozilla.com>
|
|
|
|
* Asaf Romano <mano@mozilla.com>
|
2007-03-22 10:30:00 -07:00
|
|
|
*
|
|
|
|
* Alternatively, the contents of this file may be used under the terms of
|
|
|
|
* either the GNU General Public License Version 2 or later (the "GPL"), or
|
|
|
|
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
|
|
|
|
* in which case the provisions of the GPL or the LGPL are applicable instead
|
|
|
|
* of those above. If you wish to allow use of your version of this file only
|
|
|
|
* under the terms of either the GPL or the LGPL, and not to allow others to
|
|
|
|
* use your version of this file under the terms of the MPL, indicate your
|
|
|
|
* decision by deleting the provisions above and replace them with the notice
|
|
|
|
* and other provisions required by the GPL or the LGPL. If you do not delete
|
|
|
|
* the provisions above, a recipient may use your version of this file under
|
|
|
|
* the terms of any one of the MPL, the GPL or the LGPL.
|
|
|
|
*
|
|
|
|
* ***** END LICENSE BLOCK ***** */
|
|
|
|
|
|
|
|
#include "nsISupports.idl"
|
|
|
|
|
|
|
|
interface nsIFile;
|
|
|
|
interface nsIURI;
|
|
|
|
interface nsITransaction;
|
2007-05-31 17:44:43 -07:00
|
|
|
interface nsINavHistoryBatchCallback;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Observer for bookmark changes.
|
|
|
|
*/
|
|
|
|
|
2009-11-06 14:33:17 -08:00
|
|
|
[scriptable, uuid(1f7e9032-b2c0-4561-b35b-94ba3f8344e2)]
|
2007-03-22 10:30:00 -07:00
|
|
|
interface nsINavBookmarkObserver : nsISupports
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Notify this observer that a batch transaction has started.
|
|
|
|
* Other notifications will be sent during the batch change,
|
|
|
|
* but the observer is guaranteed that onEndUpdateBatch() will be called
|
|
|
|
* at the completion of changes.
|
|
|
|
*/
|
|
|
|
void onBeginUpdateBatch();
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Notify this observer that a batch transaction has ended.
|
|
|
|
*/
|
|
|
|
void onEndUpdateBatch();
|
|
|
|
|
|
|
|
/**
|
2007-05-10 11:18:34 -07:00
|
|
|
* Notify this observer that an item was added. Called after the actual
|
|
|
|
* add took place. The items following the index will be shifted down, but
|
|
|
|
* no additional notifications will be sent.
|
2007-03-22 10:30:00 -07:00
|
|
|
*
|
2007-05-10 11:18:34 -07:00
|
|
|
* @param aItemId
|
2007-05-10 01:05:19 -07:00
|
|
|
* The id of the bookmark that was added.
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aParentId
|
|
|
|
* The id of the folder to which the item was added.
|
2007-05-10 01:05:19 -07:00
|
|
|
* @param aIndex
|
|
|
|
* The item's index in the folder.
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aItemType
|
|
|
|
* The type of the item that was added (one of the TYPE_* constants
|
|
|
|
* defined above).
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
void onItemAdded(in long long aItemId, in long long aParentId,
|
|
|
|
in long aIndex, in unsigned short aItemType);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2009-03-19 12:56:51 -07:00
|
|
|
/**
|
|
|
|
* Notify this observer that an item is about to be removed. Called before
|
|
|
|
* the actual removal will take place.
|
|
|
|
*
|
|
|
|
* @param aItemId
|
|
|
|
* The id of the bookmark to be removed.
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aItemType
|
|
|
|
* The type of the item to be removed (one of the TYPE_* constants
|
|
|
|
* defined above).
|
2009-03-19 12:56:51 -07:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
void onBeforeItemRemoved(in long long aItemId, in unsigned short aItemType);
|
2009-03-19 12:56:51 -07:00
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
/**
|
2007-05-10 11:18:34 -07:00
|
|
|
* Notify this observer that an item was removed. Called after the actual
|
|
|
|
* remove took place. The items following the index will be shifted up, but
|
|
|
|
* no additional notifications will be sent.
|
2007-03-22 10:30:00 -07:00
|
|
|
*
|
2007-05-10 11:18:34 -07:00
|
|
|
* @param aItemId
|
2009-10-01 09:53:26 -07:00
|
|
|
* The id of the item that was removed.
|
|
|
|
* @param aParentId
|
|
|
|
* The id of the folder from which the item was removed.
|
2007-05-10 01:05:19 -07:00
|
|
|
* @param aIndex
|
|
|
|
* The bookmark's index in the folder.
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aItemType
|
|
|
|
* The type of the item that was removed (one of the TYPE_* constants
|
|
|
|
* defined above).
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
void onItemRemoved(in long long aItemId, in long long aParentId,
|
|
|
|
in long aIndex, in unsigned short aItemType);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-05-22 16:56:50 -07:00
|
|
|
* Notify this observer that an item's information has changed. This
|
2007-03-22 10:30:00 -07:00
|
|
|
* will be called whenever any attributes like "title" are changed.
|
|
|
|
*
|
2007-05-22 16:56:50 -07:00
|
|
|
* @param aItemId
|
|
|
|
* The id of the item that was changed.
|
2007-05-10 01:05:19 -07:00
|
|
|
* @param aProperty
|
|
|
|
* The property which changed.
|
|
|
|
* @param aIsAnnotationProperty
|
2009-10-01 09:53:26 -07:00
|
|
|
* Whether or not aProperty the name of an item annotation.
|
|
|
|
* @param aProperty
|
|
|
|
* The property which has been changed (see list below).
|
|
|
|
* @param aNewValue
|
|
|
|
* For certain properties, this is set to the new value of the
|
|
|
|
* property (see list below).
|
|
|
|
* @param aLastModified
|
|
|
|
* If the item's lastModified field has changed, this parameter is
|
|
|
|
* set to the new value, otherwise it's set to 0.
|
|
|
|
* @param aItemType
|
|
|
|
* The type of the item that has been changed(one of the TYPE_* constants
|
|
|
|
* defined above).
|
|
|
|
*
|
2007-03-22 10:30:00 -07:00
|
|
|
* property = "cleartime": (history was deleted, there is no last visit date):
|
2007-12-20 11:07:58 -08:00
|
|
|
* value = empty string.
|
|
|
|
* property = "title": value = new title.
|
2007-03-22 10:30:00 -07:00
|
|
|
* property = "favicon": value = new "moz-anno" URL of favicon image
|
2007-12-20 11:07:58 -08:00
|
|
|
* property = "uri": value = new uri spec.
|
|
|
|
* property = "tags: (tags set for the bookmarked uri have changed)
|
|
|
|
* value = empty string.
|
2008-03-17 16:25:36 -07:00
|
|
|
* property = "dateAdded": value = PRTime when the item was first added
|
|
|
|
* property = "lastModified": value = PRTime when the item was last modified
|
2007-12-20 11:07:58 -08:00
|
|
|
* aIsAnnotationProperty = true: value = empty string.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
void onItemChanged(in long long aItemId, in ACString aProperty,
|
2007-05-10 01:05:19 -07:00
|
|
|
in boolean aIsAnnotationProperty,
|
2009-10-01 09:53:26 -07:00
|
|
|
in AUTF8String aNewValue, in PRTime aLastModified,
|
|
|
|
in unsigned short aItemType);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Notify that the item was visited. Normally in bookmarks we use the last
|
|
|
|
* visit date, and normally the time will be a new visit that will be more
|
|
|
|
* recent, but this is not guaranteed. You should check to see if it's
|
|
|
|
* actually more recent before using this new time.
|
|
|
|
*
|
2007-05-10 01:05:19 -07:00
|
|
|
* @param aBookmarkId
|
|
|
|
* The id of the bookmark that was visited.
|
|
|
|
* @see onItemChanged property = "cleartime" for when all visit dates are
|
2007-03-22 10:30:00 -07:00
|
|
|
* deleted for the URI.
|
|
|
|
*/
|
2007-05-10 01:05:19 -07:00
|
|
|
void onItemVisited(in long long aBookmarkId, in long long aVisitID,
|
|
|
|
in PRTime time);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-05-22 15:03:53 -07:00
|
|
|
* Notify this observer that an item has been moved.
|
|
|
|
* @param aItemId
|
|
|
|
* The id of the item that was moved.
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aOldParentId
|
2007-05-22 15:03:53 -07:00
|
|
|
* The id of the old parent.
|
2007-05-10 01:05:19 -07:00
|
|
|
* @param aOldIndex
|
2009-10-01 09:53:26 -07:00
|
|
|
* The old index inside the old parent.
|
|
|
|
* @param aNewParentId
|
2007-05-22 15:03:53 -07:00
|
|
|
* The id of the new parent.
|
2007-05-10 01:05:19 -07:00
|
|
|
* @param aNewIndex
|
2009-10-01 09:53:26 -07:00
|
|
|
* The index inside the new parent.
|
|
|
|
* @param aItemType
|
|
|
|
* The type of the item that was moved (one of the TYPE_* constants
|
|
|
|
* defined above).
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2007-05-22 15:03:53 -07:00
|
|
|
void onItemMoved(in long long aItemId,
|
2009-10-01 09:53:26 -07:00
|
|
|
in long long aOldParentId, in long aOldIndex,
|
|
|
|
in long long aNewParentId, in long aNewIndex,
|
|
|
|
in unsigned short aItemType);
|
2007-03-22 10:30:00 -07:00
|
|
|
};
|
|
|
|
|
|
|
|
/**
|
|
|
|
* The BookmarksService interface provides methods for managing bookmarked
|
|
|
|
* history items. Bookmarks consist of a set of user-customizable
|
|
|
|
* folders. A URI in history can be contained in one or more such folders.
|
|
|
|
*/
|
|
|
|
|
2009-11-06 14:33:17 -08:00
|
|
|
[scriptable, uuid(573f99bd-988c-4253-836f-4ce009d33ac6)]
|
2007-03-22 10:30:00 -07:00
|
|
|
interface nsINavBookmarksService : nsISupports
|
|
|
|
{
|
|
|
|
/**
|
2007-11-19 18:01:53 -08:00
|
|
|
* The item ID of the Places root.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
readonly attribute long long placesRoot;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-11-19 18:01:53 -08:00
|
|
|
* The item ID of the bookmarks menu folder.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2007-11-19 18:01:53 -08:00
|
|
|
readonly attribute long long bookmarksMenuFolder;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-11-19 18:01:53 -08:00
|
|
|
* The item ID of the top-level folder that contain the tag "folders".
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2007-11-19 18:01:53 -08:00
|
|
|
readonly attribute long long tagsFolder;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2007-09-16 18:42:15 -07:00
|
|
|
/**
|
2007-11-19 18:01:53 -08:00
|
|
|
* The item ID of the unfiled-bookmarks folder.
|
2007-09-16 18:42:15 -07:00
|
|
|
*/
|
2007-11-19 18:01:53 -08:00
|
|
|
readonly attribute long long unfiledBookmarksFolder;
|
2007-09-16 18:42:15 -07:00
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
/**
|
2007-11-19 18:01:53 -08:00
|
|
|
* The item ID of the personal toolbar folder.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2007-11-19 18:01:53 -08:00
|
|
|
readonly attribute long long toolbarFolder;
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* This value should be used for APIs that allow passing in an index
|
|
|
|
* where an index is not known, or not required to be specified.
|
|
|
|
* e.g.: When appending an item to a folder.
|
|
|
|
*/
|
|
|
|
const short DEFAULT_INDEX = -1;
|
|
|
|
|
2007-05-10 11:18:34 -07:00
|
|
|
const unsigned short TYPE_BOOKMARK = 1;
|
|
|
|
const unsigned short TYPE_FOLDER = 2;
|
|
|
|
const unsigned short TYPE_SEPARATOR = 3;
|
2007-08-02 13:19:44 -07:00
|
|
|
const unsigned short TYPE_DYNAMIC_CONTAINER = 4;
|
2007-04-04 10:21:03 -07:00
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
/**
|
2007-08-14 23:07:18 -07:00
|
|
|
* Inserts a child bookmark into the given folder.
|
|
|
|
*
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aParentId
|
2007-05-10 11:18:34 -07:00
|
|
|
* The id of the parent folder
|
|
|
|
* @param aURI
|
|
|
|
* The URI to insert
|
|
|
|
* @param aIndex
|
2008-02-06 13:05:23 -08:00
|
|
|
* The index to insert at, or DEFAULT_INDEX to append
|
2007-05-22 18:06:31 -07:00
|
|
|
* @param aTitle
|
|
|
|
* The title for the new bookmark
|
2009-06-24 01:59:14 -07:00
|
|
|
* @return The ID of the newly-created bookmark.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
long long insertBookmark(in long long aParentId, in nsIURI aURI,
|
2008-01-08 19:54:37 -08:00
|
|
|
in long aIndex, in AUTF8String aTitle);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Removes a child item. Used to delete a bookmark or separator.
|
2007-05-10 11:18:34 -07:00
|
|
|
* @param aItemId
|
|
|
|
* The child item to remove
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
void removeItem(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Creates a new child folder and inserts it under the given parent.
|
2007-05-10 11:18:34 -07:00
|
|
|
* @param aParentFolder
|
|
|
|
* The id of the parent folder
|
|
|
|
* @param aName
|
|
|
|
* The name of the new folder
|
|
|
|
* @param aIndex
|
2008-02-06 13:05:23 -08:00
|
|
|
* The index to insert at, or DEFAULT_INDEX to append
|
2009-06-24 01:59:14 -07:00
|
|
|
* @return The ID of the newly-inserted folder.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2008-01-08 19:54:37 -08:00
|
|
|
long long createFolder(in long long aParentFolder, in AUTF8String name,
|
2007-05-10 11:18:34 -07:00
|
|
|
in long index);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-08-02 13:19:44 -07:00
|
|
|
* Creates a dynamic container under the given parent folder.
|
2007-05-08 18:19:12 -07:00
|
|
|
*
|
2007-05-10 11:18:34 -07:00
|
|
|
* @param aParentFolder
|
|
|
|
* The id of the parent folder
|
|
|
|
* @param aName
|
|
|
|
* The name of the new folder
|
2007-08-02 13:19:44 -07:00
|
|
|
* @param aContractId
|
|
|
|
* The contract id of the service which is to manipulate this
|
|
|
|
* container.
|
2007-05-10 11:18:34 -07:00
|
|
|
* @param aIndex
|
2008-02-06 13:05:23 -08:00
|
|
|
* The index to insert at, or DEFAULT_INDEX to append
|
2007-08-02 13:19:44 -07:00
|
|
|
*
|
2009-06-24 01:59:14 -07:00
|
|
|
* @return The ID of the newly-inserted folder.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2008-01-08 19:54:37 -08:00
|
|
|
long long createDynamicContainer(in long long aParentFolder, in AUTF8String aName,
|
2008-04-13 11:17:46 -07:00
|
|
|
in AString aContractId, in long aIndex);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Gets an undo-able transaction for removing a folder from the bookmarks
|
|
|
|
* tree.
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aItemId
|
2007-05-10 11:18:34 -07:00
|
|
|
* The id of the folder to remove.
|
2009-06-24 01:59:14 -07:00
|
|
|
* @return An object implementing nsITransaction that can be used to undo
|
|
|
|
* or redo the action.
|
2007-03-22 10:30:00 -07:00
|
|
|
*
|
|
|
|
* This method exists because complex delete->undo operations rely on
|
|
|
|
* recreated folders to have the same ID they had before they were deleted,
|
|
|
|
* so that any other items deleted in different transactions can be
|
|
|
|
* re-inserted correctly. This provides a safe encapsulation of this
|
|
|
|
* functionality without exposing the ability to recreate folders with
|
|
|
|
* specific IDs (potentially dangerous if abused by other code!) in the
|
|
|
|
* public API.
|
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
nsITransaction getRemoveFolderTransaction(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Convenience function for container services. Removes
|
|
|
|
* all children of the given folder.
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aItemId
|
2007-05-10 11:18:34 -07:00
|
|
|
* The id of the folder to remove children from.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
void removeFolderChildren(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-05-22 15:03:53 -07:00
|
|
|
* Moves an item to a different container, preserving its contents.
|
|
|
|
* @param aItemId
|
|
|
|
* The id of the item to move
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aNewParentId
|
2007-05-22 15:03:53 -07:00
|
|
|
* The id of the new parent
|
2007-05-10 11:18:34 -07:00
|
|
|
* @param aIndex
|
2008-02-06 13:05:23 -08:00
|
|
|
* The index under aNewParent, or DEFAULT_INDEX to append
|
2008-04-07 23:32:35 -07:00
|
|
|
*
|
|
|
|
* NOTE: When moving down in the same container we take into account the
|
|
|
|
* removal of the original item. If you want to move from index X to
|
|
|
|
* index Y > X you must use moveItem(id, folder, Y + 1)
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
void moveItem(in long long aItemId, in long long aNewParentId, in long aIndex);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Inserts a bookmark separator into the given folder at the given index.
|
|
|
|
* The separator can be removed using removeChildAt().
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aParentId
|
|
|
|
* The id of the parent folder
|
2007-05-10 11:18:34 -07:00
|
|
|
* @param aIndex
|
2008-02-06 13:05:23 -08:00
|
|
|
* The separator's index under folder, or DEFAULT_INDEX to append
|
2009-06-24 01:59:14 -07:00
|
|
|
* @return The ID of the new separator.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
long long insertSeparator(in long long aParentId, in long aIndex);
|
2007-07-25 20:53:59 -07:00
|
|
|
|
2008-02-06 13:05:23 -08:00
|
|
|
/**
|
|
|
|
* Get the itemId given the containing folder and the index.
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aParentId
|
|
|
|
* The id of the diret parent folder of the item
|
2008-02-06 13:05:23 -08:00
|
|
|
* @param aIndex
|
2009-10-01 09:53:26 -07:00
|
|
|
* The index of the item within the parent folder.
|
|
|
|
* Pass DEFAULT_INDEX for the last item.
|
2009-06-24 01:59:14 -07:00
|
|
|
* @return The ID of the found item, -1 if the item does not exists.
|
2008-02-06 13:05:23 -08:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
long long getIdForItemAt(in long long aParentId, in long aIndex);
|
2008-02-06 13:05:23 -08:00
|
|
|
|
2007-07-25 20:53:59 -07:00
|
|
|
/**
|
|
|
|
* Get a globally unique identifier for an item, meant to be used in
|
|
|
|
* sync scenarios. Even if their contents are exactly the same
|
|
|
|
* (including an item in a different profile with the same ItemId),
|
|
|
|
* the GUID would be different.
|
|
|
|
* @param aItemId
|
|
|
|
* The ID of the item to get the GUID for
|
2009-06-24 01:59:14 -07:00
|
|
|
* @return The GUID string.
|
2007-07-25 20:53:59 -07:00
|
|
|
*/
|
|
|
|
AString getItemGUID(in long long aItemId);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set a globally unique identifier. This can be useful when a sync
|
|
|
|
* algorithm deems two independently created items (on different
|
|
|
|
* profiles) to be the same item.
|
|
|
|
* @param aItemId
|
|
|
|
* The id of the item to set the GUID of
|
2007-08-14 23:07:18 -07:00
|
|
|
* @param aGUID
|
|
|
|
* The GUID string
|
2007-07-25 20:53:59 -07:00
|
|
|
*/
|
|
|
|
void setItemGUID(in long long aItemId, in AString aGUID);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the ID of the item with the given GUID.
|
|
|
|
* @param aGUID
|
|
|
|
* The GUID string of the item to search for
|
2009-06-24 01:59:14 -07:00
|
|
|
* @return The item ID, or -1 if not found.
|
2007-07-25 20:53:59 -07:00
|
|
|
*/
|
|
|
|
long long getItemIdForGUID(in AString aGUID);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-05-10 11:18:34 -07:00
|
|
|
* Set the title for an item.
|
|
|
|
* @param aItemId
|
|
|
|
* The id of the item whose title should be updated
|
|
|
|
* @param aTitle
|
|
|
|
* The new title for the bookmark.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2008-01-08 19:54:37 -08:00
|
|
|
void setItemTitle(in long long aItemId, in AUTF8String aTitle);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-05-10 11:18:34 -07:00
|
|
|
* Get the title for an item.
|
2007-03-22 10:30:00 -07:00
|
|
|
*
|
|
|
|
* If no item title is available it will return a void string (null in JS).
|
|
|
|
*
|
2007-05-10 11:18:34 -07:00
|
|
|
* @param aItemId
|
|
|
|
* The id of the item whose title should be retrieved
|
2009-06-24 01:59:14 -07:00
|
|
|
* @return The title of the item.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2008-01-08 19:54:37 -08:00
|
|
|
AUTF8String getItemTitle(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2007-05-18 17:40:55 -07:00
|
|
|
/**
|
|
|
|
* Set the date added time for an item.
|
|
|
|
*/
|
|
|
|
void setItemDateAdded(in long long aItemId, in PRTime aDateAdded);
|
|
|
|
/**
|
|
|
|
* Get the date added time for an item.
|
|
|
|
*/
|
|
|
|
PRTime getItemDateAdded(in long long aItemId);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Set the last modified time for an item.
|
2009-06-24 01:59:14 -07:00
|
|
|
*
|
|
|
|
* @note This is the only method that will send an itemChanged notification
|
|
|
|
* for the property. lastModified will still be updated in
|
|
|
|
* any other method that changes an item property, but we will send
|
|
|
|
* the corresponding itemChanged notification instead.
|
2007-05-18 17:40:55 -07:00
|
|
|
*/
|
|
|
|
void setItemLastModified(in long long aItemId, in PRTime aLastModified);
|
|
|
|
/**
|
|
|
|
* Get the last modified time for an item.
|
2009-06-24 01:59:14 -07:00
|
|
|
*
|
|
|
|
* @note When an item is added lastModified is set to the same value as
|
|
|
|
* dateAdded.
|
2007-05-18 17:40:55 -07:00
|
|
|
*/
|
|
|
|
PRTime getItemLastModified(in long long aItemId);
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
/**
|
|
|
|
* Get the URI for a bookmark item.
|
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
nsIURI getBookmarkURI(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-05-08 18:19:12 -07:00
|
|
|
* Get the index for an item.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
long getItemIndex(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2007-05-11 12:06:57 -07:00
|
|
|
/**
|
|
|
|
* Changes the index for a item. This method does not change the indices of
|
|
|
|
* any other items in the same folder, so ensure that the new index does not
|
|
|
|
* already exist, or change the index of other items accordingly, otherwise
|
|
|
|
* the indices will become corrupted.
|
|
|
|
*
|
2007-08-14 23:07:18 -07:00
|
|
|
* WARNING: This is API is intended for scenarios such as folder sorting,
|
|
|
|
* where the caller manages the indices of *all* items in the folder.
|
2009-08-21 02:54:12 -07:00
|
|
|
* You must always ensure each index is unique after a reordering.
|
2007-08-14 23:07:18 -07:00
|
|
|
*
|
2007-05-11 12:06:57 -07:00
|
|
|
* @param aItemId The id of the item to modify
|
|
|
|
* @param aNewIndex The new index
|
2009-08-21 02:54:12 -07:00
|
|
|
*
|
|
|
|
* @throws If aNewIndex is out of bounds.
|
2007-05-11 12:06:57 -07:00
|
|
|
*/
|
|
|
|
void setItemIndex(in long long aItemId, in long aNewIndex);
|
|
|
|
|
2007-05-08 18:19:12 -07:00
|
|
|
/**
|
|
|
|
* Get an item's type (bookmark, separator, folder).
|
|
|
|
* The type is one of the TYPE_* constants defined above.
|
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
unsigned short getItemType(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
2007-08-02 13:19:44 -07:00
|
|
|
* Checks whether a folder is marked as read-only.
|
2007-08-14 23:07:18 -07:00
|
|
|
* If this is set to true, UI will not allow the user to add, remove,
|
2007-08-02 13:19:44 -07:00
|
|
|
* or reorder children in this folder. The default for all folders is false.
|
2007-08-14 23:07:18 -07:00
|
|
|
* Note: This does not restrict API calls, only UI actions.
|
|
|
|
*
|
2009-10-01 09:53:26 -07:00
|
|
|
* @param aItemId
|
2007-08-02 13:19:44 -07:00
|
|
|
* the item-id of the folder.
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2009-10-01 09:53:26 -07:00
|
|
|
boolean getFolderReadonly(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
2007-08-02 13:19:44 -07:00
|
|
|
/**
|
2007-08-14 23:07:18 -07:00
|
|
|
* Sets or unsets the readonly flag from a folder.
|
|
|
|
* If this is set to true, UI will not allow the user to add, remove,
|
|
|
|
* or reorder children in this folder. The default for all folders is false.
|
|
|
|
* Note: This does not restrict API calls, only UI actions.
|
|
|
|
*
|
2007-08-02 13:19:44 -07:00
|
|
|
* @param aFolder
|
|
|
|
* the item-id of the folder.
|
|
|
|
* @param aReadOnly
|
|
|
|
* the read-only state (boolean).
|
|
|
|
*/
|
|
|
|
void setFolderReadonly(in long long aFolder, in boolean aReadOnly);
|
|
|
|
|
2007-03-22 10:30:00 -07:00
|
|
|
/**
|
|
|
|
* Returns true if the given URI is in any bookmark folder. If you want the
|
|
|
|
* results to be redirect-aware, use getBookmarkedURIFor()
|
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
boolean isBookmarked(in nsIURI aURI);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Used to see if the given URI is bookmarked, or any page that redirected to
|
|
|
|
* it is bookmarked. For example, if I bookmark "mozilla.org" by manually
|
|
|
|
* typing it in, and follow the bookmark, I will get redirected to
|
|
|
|
* "www.mozilla.org". Logically, this new page is also bookmarked. This
|
|
|
|
* function, if given "www.mozilla.org", will return the URI of the bookmark,
|
|
|
|
* in this case "mozilla.org".
|
|
|
|
*
|
|
|
|
* If there is no bookmarked page found, it will return NULL.
|
2010-03-10 04:40:52 -08:00
|
|
|
*
|
|
|
|
* @note The function will only return bookmarks in the first 3 levels of
|
|
|
|
* redirection (1 -> 2 -> 3 -> aURI).
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
nsIURI getBookmarkedURIFor(in nsIURI aURI);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Change the bookmarked URI for a bookmark.
|
|
|
|
* This changes which "place" the bookmark points at,
|
|
|
|
* which means all annotations, etc are carried along.
|
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
void changeBookmarkURI(in long long aItemId, in nsIURI aNewURI);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Get the parent folder's id for an item.
|
|
|
|
*/
|
2007-05-22 18:18:21 -07:00
|
|
|
long long getFolderIdForItem(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the list of bookmark ids that contain the given URI.
|
|
|
|
*/
|
2009-10-28 16:52:41 -07:00
|
|
|
void getBookmarkIdsForURI(in nsIURI aURI, [optional] out unsigned long count,
|
2007-05-10 11:18:34 -07:00
|
|
|
[array, retval, size_is(count)] out long long bookmarks);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Associates the given keyword with the given bookmark.
|
|
|
|
*
|
|
|
|
* Use an empty keyword to clear the keyword associated with the URI.
|
|
|
|
* In both of these cases, succeeds but does nothing if the URL/keyword is not found.
|
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
void setKeywordForBookmark(in long long aItemId, in AString aKeyword);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieves the keyword for the given URI. Will be void string
|
|
|
|
* (null in JS) if no such keyword is found.
|
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
AString getKeywordForURI(in nsIURI aURI);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Retrieves the keyword for the given bookmark. Will be void string
|
|
|
|
* (null in JS) if no such keyword is found.
|
|
|
|
*/
|
2007-05-10 11:18:34 -07:00
|
|
|
AString getKeywordForBookmark(in long long aItemId);
|
2007-03-22 10:30:00 -07:00
|
|
|
|
|
|
|
/**
|
|
|
|
* Returns the URI associated with the given keyword. Empty if no such
|
|
|
|
* keyword is found.
|
|
|
|
*/
|
|
|
|
nsIURI getURIForKeyword(in AString keyword);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Adds a bookmark observer. If ownsWeak is false, the bookmark service will
|
|
|
|
* keep an owning reference to the observer. If ownsWeak is true, then
|
|
|
|
* aObserver must implement nsISupportsWeakReference, and the bookmark
|
|
|
|
* service will keep a weak reference to the observer.
|
|
|
|
*/
|
|
|
|
void addObserver(in nsINavBookmarkObserver observer, in boolean ownsWeak);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Removes a bookmark observer.
|
|
|
|
*/
|
|
|
|
void removeObserver(in nsINavBookmarkObserver observer);
|
|
|
|
|
|
|
|
/**
|
2008-07-02 14:35:46 -07:00
|
|
|
* Runs the passed callback inside of a database transaction.
|
|
|
|
* Use this when a lot of things are about to change, for example
|
|
|
|
* adding or deleting a large number of bookmark items. Calls can
|
|
|
|
* be nested. Observers are notified when batches begin and end, via
|
|
|
|
* nsINavBookmarkObserver.onBeginUpdateBatch/onEndUpdateBatch.
|
2007-03-22 10:30:00 -07:00
|
|
|
*
|
2007-05-31 17:44:43 -07:00
|
|
|
* @param aCallback
|
|
|
|
* nsINavHistoryBatchCallback interface to call.
|
|
|
|
* @param aUserData
|
|
|
|
* Opaque parameter passed to nsINavBookmarksBatchCallback
|
2007-03-22 10:30:00 -07:00
|
|
|
*/
|
2007-05-31 17:44:43 -07:00
|
|
|
void runInBatchMode(in nsINavHistoryBatchCallback aCallback,
|
|
|
|
in nsISupports aUserData);
|
2007-03-22 10:30:00 -07:00
|
|
|
};
|