Bug 629285 - Crash at AsyncGetBookmarksForURI.

r=sdwilsh a=blocker
This commit is contained in:
Marco Bonardo 2011-02-05 13:22:10 +01:00
Родитель fe7fd13d58
Коммит 97a3c4a767
2 изменённых файлов: 16 добавлений и 9 удалений

Просмотреть файл

@ -124,15 +124,19 @@ class AsyncGetBookmarksForURI : public AsyncStatementCallback
public:
AsyncGetBookmarksForURI(nsNavBookmarks* aBookmarksSvc,
Method aCallback,
DataType aData)
const DataType& aData)
: mBookmarksSvc(aBookmarksSvc)
, mCallback(aCallback)
, mData(aData)
{
}
void Init()
{
nsCOMPtr<mozIStorageStatement> stmt =
aBookmarksSvc->GetStatementById(DB_GET_BOOKMARKS_FOR_URI);
mBookmarksSvc->GetStatementById(DB_GET_BOOKMARKS_FOR_URI);
if (stmt) {
(void)URIBinder::Bind(stmt, NS_LITERAL_CSTRING("page_url"), aData.uri);
(void)URIBinder::Bind(stmt, NS_LITERAL_CSTRING("page_url"), mData.uri);
nsCOMPtr<mozIStoragePendingStatement> pendingStmt;
(void)stmt->ExecuteAsync(this, getter_AddRefs(pendingStmt));
}
@ -2916,14 +2920,14 @@ nsNavBookmarks::RemoveObserver(nsINavBookmarkObserver* aObserver)
}
void
nsNavBookmarks::NotifyItemVisited(ItemVisitData aData)
nsNavBookmarks::NotifyItemVisited(const ItemVisitData& aData)
{
NOTIFY_OBSERVERS(mCanNotify, mCacheObservers, mObservers, nsINavBookmarkObserver,
OnItemVisited(aData.itemId, aData.visitId, aData.time));
}
void
nsNavBookmarks::NotifyItemChanged(ItemChangeData aData)
nsNavBookmarks::NotifyItemChanged(const ItemChangeData& aData)
{
NOTIFY_OBSERVERS(mCanNotify, mCacheObservers, mObservers, nsINavBookmarkObserver,
OnItemChanged(aData.itemId, aData.property,
@ -2970,6 +2974,7 @@ nsNavBookmarks::OnVisit(nsIURI* aURI, PRInt64 aVisitId, PRTime aTime,
nsRefPtr< AsyncGetBookmarksForURI<ItemVisitMethod, ItemVisitData> > notifier =
new AsyncGetBookmarksForURI<ItemVisitMethod, ItemVisitData>(this, &nsNavBookmarks::NotifyItemVisited, visitData);
notifier->Init();
return NS_OK;
}
@ -2994,6 +2999,7 @@ nsNavBookmarks::OnDeleteURI(nsIURI* aURI)
nsRefPtr< AsyncGetBookmarksForURI<ItemChangeMethod, ItemChangeData> > notifier =
new AsyncGetBookmarksForURI<ItemChangeMethod, ItemChangeData>(this, &nsNavBookmarks::NotifyItemChanged, changeData);
notifier->Init();
return NS_OK;
}
@ -3054,6 +3060,7 @@ nsNavBookmarks::OnPageChanged(nsIURI* aURI, PRUint32 aWhat,
else {
nsRefPtr< AsyncGetBookmarksForURI<ItemChangeMethod, ItemChangeData> > notifier =
new AsyncGetBookmarksForURI<ItemChangeMethod, ItemChangeData>(this, &nsNavBookmarks::NotifyItemChanged, changeData);
notifier->Init();
}
}
return NS_OK;

Просмотреть файл

@ -74,8 +74,8 @@ namespace places {
PRUint16 itemType;
};
typedef void (nsNavBookmarks::*ItemVisitMethod)(ItemVisitData);
typedef void (nsNavBookmarks::*ItemChangeMethod)(ItemChangeData);
typedef void (nsNavBookmarks::*ItemVisitMethod)(const ItemVisitData&);
typedef void (nsNavBookmarks::*ItemChangeMethod)(const ItemChangeData&);
} // namespace places
} // namespace mozilla
@ -211,7 +211,7 @@ public:
* @param aData
* Details about the new visit.
*/
void NotifyItemVisited(mozilla::places::ItemVisitData aData);
void NotifyItemVisited(const mozilla::places::ItemVisitData& aData);
/**
* Notifies that a bookmark has changed.
@ -221,7 +221,7 @@ public:
* @param aData
* Details about the change.
*/
void NotifyItemChanged(mozilla::places::ItemChangeData aData);
void NotifyItemChanged(const mozilla::places::ItemChangeData& aData);
private:
static nsNavBookmarks* gBookmarksService;