예제 #1
0
static uint64_t getIDForHistoryItem(HistoryItem* item)
{
    uint64_t itemID = 0;

    std::pair<HistoryItemToIDMap::iterator, bool> result = historyItemToIDMap().add(item, 0);
    if (result.second) {
        itemID = generateHistoryItemID();
        result.first->second = itemID;
        idToHistoryItemMap().set(itemID, item);
    } else
        itemID = result.first->second;

    ASSERT(itemID);
    return itemID;
}
void WebBackForwardListProxy::addItem(PassRefPtr<HistoryItem> prpItem)
{
    RefPtr<HistoryItem> item = prpItem;

    ASSERT(!historyItemToIDMap().contains(item));

    if (!m_page)
        return;

    uint64_t itemID = generateHistoryItemID();

    ASSERT(!idToHistoryItemMap().contains(itemID));

    historyItemToIDMap().set(item, itemID);
    idToHistoryItemMap().set(itemID, item);

    updateBackForwardItem(itemID, item.get());
    m_page->send(Messages::WebPageProxy::BackForwardAddItem(itemID));
}