void HistoryManager::addHistoryEntry(const QString &url) { QUrl cleanUrl(url); cleanUrl.setPassword(QString()); cleanUrl.setHost(cleanUrl.host().toLower()); HistoryEntry item(atomicString(cleanUrl.toString()), QDateTime::currentDateTime()); addHistoryEntry(item); }
void HistoryManager::updateHistoryEntry(const QUrl &url, const QString &title) { for (int i = 0; i < m_history.count(); ++i) { if (url == m_history.at(i).url) { m_history[i].title = atomicString(title); m_saveTimer->changeOccurred(); if (m_lastSavedUrl.isEmpty()) m_lastSavedUrl = m_history.at(i).url; emit entryUpdated(i); break; } } }
void HistoryManager::load() { loadSettings(); QFile historyFile(QDesktopServices::storageLocation(QDesktopServices::DataLocation) + QLatin1String("/history")); if (!historyFile.exists()) return; if (!historyFile.open(QFile::ReadOnly)) { qWarning() << "Unable to open history file" << historyFile.fileName(); return; } QList<HistoryEntry> list; QDataStream in(&historyFile); // Double check that the history file is sorted as it is read in bool needToSort = false; HistoryEntry lastInsertedItem; QByteArray data; QDataStream stream; QBuffer buffer; QString string; stream.setDevice(&buffer); while (!historyFile.atEnd()) { in >> data; buffer.close(); buffer.setBuffer(&data); buffer.open(QIODevice::ReadOnly); quint32 ver; stream >> ver; if (ver != HISTORY_VERSION) continue; HistoryEntry item; stream >> string; item.url = atomicString(string); stream >> item.dateTime; stream >> string; item.title = atomicString(string); if (!item.dateTime.isValid()) continue; if (item == lastInsertedItem) { if (lastInsertedItem.title.isEmpty() && !list.isEmpty()) list[0].title = item.title; continue; } if (!needToSort && !list.isEmpty() && lastInsertedItem < item) needToSort = true; list.prepend(item); lastInsertedItem = item; } if (needToSort) qSort(list.begin(), list.end()); setHistory(list, true); // If we had to sort re-write the whole history sorted if (needToSort) { m_lastSavedUrl.clear(); m_saveTimer->changeOccurred(); } }
TEST(StringOperatorsTest, DISABLED_StringOperators) { String string("String"); AtomicString atomicString("AtomicString"); const char* literal = "ASCIILiteral"; EXPECT_EQ(0, wtfStringCopyCount); EXPECT_N_WTF_STRING_COPIES(2, string + string); EXPECT_N_WTF_STRING_COPIES(2, string + atomicString); EXPECT_N_WTF_STRING_COPIES(2, atomicString + string); EXPECT_N_WTF_STRING_COPIES(2, atomicString + atomicString); EXPECT_N_WTF_STRING_COPIES(1, "C string" + string); EXPECT_N_WTF_STRING_COPIES(1, string + "C string"); EXPECT_N_WTF_STRING_COPIES(1, "C string" + atomicString); EXPECT_N_WTF_STRING_COPIES(1, atomicString + "C string"); EXPECT_N_WTF_STRING_COPIES(1, literal + string); EXPECT_N_WTF_STRING_COPIES(1, string + literal); EXPECT_N_WTF_STRING_COPIES(1, literal + atomicString); EXPECT_N_WTF_STRING_COPIES(1, atomicString + literal); EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + "C string" + string); EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + "C string" + string)); EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + ("C string" + string)); EXPECT_N_WTF_STRING_COPIES(2, string + "C string" + string + "C string"); EXPECT_N_WTF_STRING_COPIES(2, string + ("C string" + string + "C string")); EXPECT_N_WTF_STRING_COPIES(2, (string + "C string") + (string + "C string")); EXPECT_N_WTF_STRING_COPIES(2, literal + string + literal + string); EXPECT_N_WTF_STRING_COPIES(2, literal + (string + literal + string)); EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + (literal + string)); EXPECT_N_WTF_STRING_COPIES(2, string + literal + string + literal); EXPECT_N_WTF_STRING_COPIES(2, string + (literal + string + literal)); EXPECT_N_WTF_STRING_COPIES(2, (string + literal) + (string + literal)); EXPECT_N_WTF_STRING_COPIES(2, literal + string + "C string" + string); EXPECT_N_WTF_STRING_COPIES(2, literal + (string + "C string" + string)); EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + ("C string" + string)); EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + literal + string); EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + literal + string)); EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + (literal + string)); EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + "C string" + atomicString); EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + "C string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + ("C string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + literal + atomicString); EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + literal + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + (literal + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + "C string" + string); EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + "C string" + string)); EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + ("C string" + string)); EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + literal + string); EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + literal + string)); EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + (literal + string)); EXPECT_N_WTF_STRING_COPIES(2, literal + string + "C string" + atomicString); EXPECT_N_WTF_STRING_COPIES(2, literal + (string + "C string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + ("C string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + literal + atomicString); EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + literal + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + (literal + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + "C string" + atomicString); EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + "C string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + ("C string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, atomicString + "C string" + atomicString + "C string"); EXPECT_N_WTF_STRING_COPIES(2, atomicString + ("C string" + atomicString + "C string")); EXPECT_N_WTF_STRING_COPIES(2, (atomicString + "C string") + (atomicString + "C string")); EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + literal + atomicString); EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + literal + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + (literal + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, atomicString + literal + atomicString + literal); EXPECT_N_WTF_STRING_COPIES(2, atomicString + (literal + atomicString + literal)); EXPECT_N_WTF_STRING_COPIES(2, (atomicString + literal) + (atomicString + literal)); EXPECT_N_WTF_STRING_COPIES(2, "C string" + string + "C string" + atomicString); EXPECT_N_WTF_STRING_COPIES(2, "C string" + (string + "C string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, ("C string" + string) + ("C string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, string + "C string" + atomicString + "C string"); EXPECT_N_WTF_STRING_COPIES(2, string + ("C string" + atomicString + "C string")); EXPECT_N_WTF_STRING_COPIES(2, (string + "C string") + (atomicString + "C string")); EXPECT_N_WTF_STRING_COPIES(2, literal + string + literal + atomicString); EXPECT_N_WTF_STRING_COPIES(2, literal + (string + literal + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, (literal + string) + (literal + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, string + literal + atomicString + literal); EXPECT_N_WTF_STRING_COPIES(2, string + (literal + atomicString + literal)); EXPECT_N_WTF_STRING_COPIES(2, (string + literal) + (atomicString + literal)); EXPECT_N_WTF_STRING_COPIES(2, "C string" + atomicString + "C string" + string); EXPECT_N_WTF_STRING_COPIES(2, "C string" + (atomicString + "C string" + string)); EXPECT_N_WTF_STRING_COPIES(2, ("C string" + atomicString) + ("C string" + string)); EXPECT_N_WTF_STRING_COPIES(2, atomicString + "C string" + string + "C string"); EXPECT_N_WTF_STRING_COPIES(2, atomicString + ("C string" + string + "C string")); EXPECT_N_WTF_STRING_COPIES(2, (atomicString + "C string") + (string + "C string")); EXPECT_N_WTF_STRING_COPIES(2, literal + atomicString + literal + string); EXPECT_N_WTF_STRING_COPIES(2, literal + (atomicString + literal + string)); EXPECT_N_WTF_STRING_COPIES(2, (literal + atomicString) + (literal + string)); EXPECT_N_WTF_STRING_COPIES(2, atomicString + literal + string + literal); EXPECT_N_WTF_STRING_COPIES(2, atomicString + (literal + string + literal)); EXPECT_N_WTF_STRING_COPIES(2, (atomicString + literal) + (string + literal)); #if COMPILER(MSVC) EXPECT_N_WTF_STRING_COPIES(1, L"wide string" + string); EXPECT_N_WTF_STRING_COPIES(1, string + L"wide string"); EXPECT_N_WTF_STRING_COPIES(1, L"wide string" + atomicString); EXPECT_N_WTF_STRING_COPIES(1, atomicString + L"wide string"); EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + string + L"wide string" + string); EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (string + L"wide string" + string)); EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + string) + (L"wide string" + string)); EXPECT_N_WTF_STRING_COPIES(2, string + L"wide string" + string + L"wide string"); EXPECT_N_WTF_STRING_COPIES(2, string + (L"wide string" + string + L"wide string")); EXPECT_N_WTF_STRING_COPIES(2, (string + L"wide string") + (string + L"wide string")); EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + atomicString + L"wide string" + atomicString); EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (atomicString + L"wide string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + atomicString) + (L"wide string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, atomicString + L"wide string" + atomicString + L"wide string"); EXPECT_N_WTF_STRING_COPIES(2, atomicString + (L"wide string" + atomicString + L"wide string")); EXPECT_N_WTF_STRING_COPIES(2, (atomicString + L"wide string") + (atomicString + L"wide string")); EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + string + L"wide string" + atomicString); EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (string + L"wide string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + string) + (L"wide string" + atomicString)); EXPECT_N_WTF_STRING_COPIES(2, string + L"wide string" + atomicString + L"wide string"); EXPECT_N_WTF_STRING_COPIES(2, string + (L"wide string" + atomicString + L"wide string")); EXPECT_N_WTF_STRING_COPIES(2, (string + L"wide string") + (atomicString + L"wide string")); EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + atomicString + L"wide string" + string); EXPECT_N_WTF_STRING_COPIES(2, L"wide string" + (atomicString + L"wide string" + string)); EXPECT_N_WTF_STRING_COPIES(2, (L"wide string" + atomicString) + (L"wide string" + string)); EXPECT_N_WTF_STRING_COPIES(2, atomicString + L"wide string" + string + L"wide string"); EXPECT_N_WTF_STRING_COPIES(2, atomicString + (L"wide string" + string + L"wide string")); EXPECT_N_WTF_STRING_COPIES(2, (atomicString + L"wide string") + (string + L"wide string")); #endif }