static void Open(JNIEnv* env, jobject obj, jstring path) { WebCore::IconDatabaseBase& iconDb = WebCore::iconDatabase(); if (iconDb.isOpen()) return; iconDb.setEnabled(true); iconDb.setClient(gIconDatabaseClient); ALOG_ASSERT(path, "No path given to nativeOpen"); WTF::String pathStr = jstringToWtfString(env, path); WTF::CString fullPath = WebCore::pathByAppendingComponent(pathStr, WebCore::IconDatabase::defaultDatabaseFilename()).utf8(); mode_t mode = S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP; bool didSetPermissions = false; if (access(fullPath.data(), F_OK) == 0) { if (chmod(fullPath.data(), mode) == 0) didSetPermissions = true; } else { int fd = open(fullPath.data(), O_CREAT, mode); if (fd >= 0) { close(fd); didSetPermissions = true; } } if (didSetPermissions) { ALOGV("Opening WebIconDatabase file '%s'", pathStr.latin1().data()); bool res = iconDb.open(pathStr, WebCore::IconDatabase::defaultDatabaseFilename()); if (!res) ALOGE("Open failed!"); } else ALOGE("Failed to set permissions on '%s'", fullPath.data()); }
bool elementPatternMatches(const char* pattern, const HTMLInputElement* inputElement) { WTF::String patternString(pattern); if (!inputElement || patternString.isEmpty()) return false; if (inputElement->fastHasAttribute(HTMLNames::patternAttr)) { WTF::String patternAttribute = inputElement->fastGetAttribute(HTMLNames::patternAttr); if (patternAttribute.startsWith(patternString)) { // The pattern is for hexadecimal, make sure nothing else is permitted. // Check if it was an exact match. if (patternAttribute.length() == patternString.length()) return true; // Check for * if (patternAttribute.length() == patternString.length() + 1 && patternAttribute[patternString.length()] == '*') return true; // Is the regex specifying a character count? if (patternAttribute[patternString.length()] != '{' || !patternAttribute.endsWith('}')) return false; // Make sure the number in the regex is actually a number. unsigned count = 0; patternString = patternString + "{%d}"; return (sscanf(patternAttribute.latin1().data(), patternString.latin1().data() + '\0', &count) == 1) && count > 0; } } return false; }
static void ReleaseIconForPageUrl(JNIEnv* env, jobject obj, jstring url) { ALOG_ASSERT(url, "No url given to releaseIconForPageUrl"); WTF::String urlStr = jstringToWtfString(env, url); ALOGV("Releasing icon for '%s'", urlStr.latin1().data()); WebCore::iconDatabase().releaseIconForPageURL(urlStr); }
static jobject IconForPageUrl(JNIEnv* env, jobject obj, jstring url) { ALOG_ASSERT(url, "No url given to iconForPageUrl"); WTF::String urlStr = jstringToWtfString(env, url); // FIXME: This method should not be used from outside WebCore and will be removed. // http://trac.webkit.org/changeset/81484 WebCore::Image* icon = WebCore::iconDatabase().synchronousIconForPageURL(urlStr, WebCore::IntSize(16, 16)); ALOGV("Retrieving icon for '%s' %p", urlStr.latin1().data(), icon); return webcoreImageToJavaBitmap(env, icon); }