コード例 #1
0
void DatabaseTracker::deleteDatabasesModifiedSince(std::chrono::system_clock::time_point time)
{
    Vector<RefPtr<SecurityOrigin>> originsCopy;
    origins(originsCopy);

    for (auto& origin : originsCopy) {
        Vector<String> databaseNames;
        if (!databaseNamesForOrigin(origin.get(), databaseNames))
            continue;

        size_t deletedDatabases = 0;

        for (auto& databaseName : databaseNames) {
            auto fullPath = fullPathForDatabase(origin.get(), databaseName, false);

            time_t modificationTime;
            if (!getFileModificationTime(fullPath, modificationTime))
                continue;

            if (modificationTime < std::chrono::system_clock::to_time_t(time))
                continue;

            deleteDatabase(origin.get(), databaseName);
            ++deletedDatabases;
        }

        if (deletedDatabases == databaseNames.size())
            deleteOrigin(origin.get());
    }
}
コード例 #2
0
void DatabaseTracker::deleteAllDatabases()
{
    Vector<RefPtr<SecurityOrigin>> originsCopy;
    origins(originsCopy);

    for (unsigned i = 0; i < originsCopy.size(); ++i)
        deleteOrigin(originsCopy[i].get());
}
コード例 #3
0
void DatabaseTracker::deleteAllDatabasesImmediately()
{
    Vector<RefPtr<SecurityOrigin>> originsCopy;
    origins(originsCopy);

    // This method is only intended for use by DumpRenderTree / WebKitTestRunner.
    // Actually deleting the databases is necessary to reset to a known state before running
    // each test case, but may be unsafe in deployment use cases (where multiple applications
    // may be accessing the same databases concurrently).
    for (auto& origin : originsCopy)
        deleteOrigin(origin.get(), DeletionMode::Immediate);
}
コード例 #4
0
void StorageTracker::deleteOriginWithIdentifier(const String& originIdentifier)
{
    deleteOrigin(&SecurityOrigin::createFromDatabaseIdentifier(originIdentifier).get());
}
コード例 #5
0
// It is the caller's responsibility to make sure that nobody is trying to create, delete, open, or close databases in this origin while the deletion is
// taking place.
bool DatabaseTracker::deleteOrigin(SecurityOrigin* origin)
{
    return deleteOrigin(origin, DeletionMode::Default);
}