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); } }
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()); }
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); }
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; } }