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());
    }
}
void LocalStorageDatabaseTracker::updateTrackerDatabaseFromLocalStorageDatabaseFiles()
{
    Vector<String> paths = listDirectory(m_localStorageDirectory, "*.localstorage");

    HashSet<String> origins(m_origins);
    HashSet<String> originsFromLocalStorageDatabaseFiles;

    for (size_t i = 0; i < paths.size(); ++i) {
        const String& path = paths[i];

        if (!path.endsWith(".localstorage"))
            continue;

        String filename = pathGetFileName(path);

        String originIdentifier = filename.substring(0, filename.length() - strlen(".localstorage"));

        if (!m_origins.contains(originIdentifier))
            addDatabaseWithOriginIdentifier(originIdentifier, path);

        originsFromLocalStorageDatabaseFiles.add(originIdentifier);
    }

    for (auto it = origins.begin(), end = origins.end(); it != end; ++it) {
        const String& originIdentifier = *it;
        if (origins.contains(originIdentifier))
            continue;

        removeDatabaseWithOriginIdentifier(originIdentifier);
    }
}
Example #3
0
const CcsProperty *SearchState::doSearch(const std::string &propertyName)
const {
    auto it = properties.find(propertyName);
    if (it == properties.end()) {
        if (parent) return parent->doSearch(propertyName);
        return NULL;
    }

    if (it->second.values.size() == 1)
        return *it->second.values.begin();

    // it->second.values.size() > 1
    std::vector<const Property *> values(it->second.values.begin(),
                                         it->second.values.end());
    std::sort(values.begin(), values.end(),
    [](const Property *l, const Property *r) {
        return l->propertyNumber() < r->propertyNumber();
    });
    std::ostringstream msg;
    msg << "Conflict detected for property '" << propertyName
        << "' in context [" << *this << "]. "
        << "(Conflicting settings at: [";
    origins(msg, values);
    msg << "].) Using most recent value.";
    log.warn(msg.str());
    return values.back();
}
void DatabaseTracker::deleteAllDatabases()
{
    Vector<RefPtr<SecurityOrigin>> originsCopy;
    origins(originsCopy);

    for (unsigned i = 0; i < originsCopy.size(); ++i)
        deleteOrigin(originsCopy[i].get());
}
Example #5
0
JSValueRef TestRunner::originsWithApplicationCache()
{
    WKRetainPtr<WKArrayRef> origins(AdoptWK, WKBundleCopyOriginsWithApplicationCache(InjectedBundle::shared().bundle()));

    WKBundleFrameRef mainFrame = WKBundlePageGetMainFrame(InjectedBundle::shared().page()->page());
    JSContextRef context = WKBundleFrameGetJavaScriptContext(mainFrame);

    return stringArrayToJS(context, origins.get());
}
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);
}
Example #7
0
void filter_point(joined_point& pq)
{
    //get polygon from bounds
    Eigen::MatrixXd origins(3,7); //origin, front, back, right, left, top, bottom


    origins<<0, bounds.front + offset, -bounds.back - offset, 0, 0, 0, 0,
             0, 0, 0, bounds.right + offset, -bounds.left - offset, 0, 0,
             0, 0, 0, 0, 0, -bounds.top - offset, bounds.bottom + offset;


    //convert vehicle bounds to world coordinates
    //get transformation

    Eigen::MatrixXd rot_matrix = snark::rotation_matrix::rotation(pq.bounding.value.orientation);

    for(int cntr2=0; cntr2<origins.cols(); cntr2++)
    {
        origins.col(cntr2)=rot_matrix*origins.col(cntr2)+pq.bounding.value.coordinates;
    }

    //get plane equations
    Eigen::MatrixXd A(6,3);
    Eigen::VectorXd b(6);

    for(int cntr2=1; cntr2<origins.cols(); cntr2++)
    {
        A.row(cntr2-1)<<origins.col(0).transpose()-origins.col(cntr2).transpose();
        b(cntr2-1)=origins.col(cntr2).transpose()*(origins.col(0)-origins.col(cntr2));
    }

    //check polygon in 3d
    // use if statement not assignment because point might already be filtered
    if(snark::geometry::convex_polytope(A,b).has(pq.bounded.coordinates))
    {
        pq.bounded.flag=0;
    }
}