void MediaPlayerPrivate::load(const WTF::String& url) { WTF::String modifiedUrl(url); if (modifiedUrl.startsWith("local://")) { KURL kurl = KURL(KURL(), modifiedUrl); kurl.setProtocol("file"); WTF::String tempPath(BlackBerry::Platform::Settings::instance()->applicationLocalDirectory().c_str()); tempPath.append(kurl.path()); kurl.setPath(tempPath); modifiedUrl = kurl.string(); } if (modifiedUrl.startsWith("file://")) { // The QNX Multimedia Framework cannot handle filenames containing URL escape sequences. modifiedUrl = decodeURLEscapeSequences(modifiedUrl); } void* tabId = m_webCorePlayer->mediaPlayerClient()->mediaPlayerHostWindow()->platformPageClient(); int playerID = m_webCorePlayer->mediaPlayerClient()->mediaPlayerHostWindow()->platformPageClient()->playerID(); deleteGuardedObject(m_platformPlayer); #if USE(ACCELERATED_COMPOSITING) m_platformPlayer = PlatformPlayer::create(this, tabId, true, modifiedUrl.utf8().data()); #else m_platformPlayer = PlatformPlayer::create(this, tabId, false, modifiedUrl.utf8().data()); #endif WTF::String cookiePairs; if (!url.isEmpty()) cookiePairs = cookieManager().getCookie(KURL(ParsedURLString, url.utf8().data()), WithHttpOnlyCookies); if (!cookiePairs.isEmpty() && cookiePairs.utf8().data()) m_platformPlayer->load(playerID, modifiedUrl.utf8().data(), m_webCorePlayer->userAgent().utf8().data(), cookiePairs.utf8().data()); else m_platformPlayer->load(playerID, modifiedUrl.utf8().data(), m_webCorePlayer->userAgent().utf8().data(), 0); }
/** * Sets the current path to the directory WebKit will write Web * Database databases. * * @path: the new database directory path * */ void ewk_settings_web_database_path_set(const char *path) { #if ENABLE(DATABASE) WTF::String corePath = WTF::String::fromUTF8(path); WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(corePath); if (!_ewk_default_web_database_path) _ewk_default_web_database_path = eina_stringshare_add(corePath.utf8().data()); else eina_stringshare_replace(&_ewk_default_web_database_path, corePath.utf8().data()); #endif }
bool NetscapePluginStream::start(const WTF::String& responseURLString, uint32_t streamLength, uint32_t lastModifiedTime, const String& mimeType, const String& headers) { m_responseURL = responseURLString.utf8(); m_mimeType = mimeType.utf8(); m_headers = headers.utf8(); m_npStream.ndata = this; m_npStream.url = m_responseURL.data(); m_npStream.end = streamLength; m_npStream.lastmodified = lastModifiedTime; m_npStream.notifyData = m_notificationData; m_npStream.headers = m_headers.length() == 0 ? 0 : m_headers.data(); NPError error = m_plugin->NPP_NewStream(const_cast<char*>(m_mimeType.data()), &m_npStream, false, &m_transferMode); if (error != NPERR_NO_ERROR) { // We failed to start the stream, cancel the load and destroy it. cancel(); notifyAndDestroyStream(NPRES_NETWORK_ERR); return false; } // We successfully started the stream. m_isStarted = true; if (!isSupportedTransferMode(m_transferMode)) { // Cancel the load and stop the stream. cancel(); stop(NPRES_NETWORK_ERR); return false; } return true; }
/** * @internal * * Gets the default user agent string. * * @return a pointer to an eina_stringshare containing the user agent string */ const char* ewk_settings_default_user_agent_get() { WTF::String uaVersion = String::number(WEBKIT_MAJOR_VERSION) + '.' + String::number(WEBKIT_MINOR_VERSION) + '+'; WTF::String staticUa = "Mozilla/5.0 (" + _ewk_settings_webkit_platform_get() + "; " + _ewk_settings_webkit_os_version_get() + ") AppleWebKit/" + uaVersion + " (KHTML, like Gecko) Version/5.0 Safari/" + uaVersion; return eina_stringshare_add(staticUa.utf8().data()); }
/** * @internal * * Gets the default user agent string. * * @return a pointer to an eina_stringshare containing the user agent string */ const char* ewk_settings_default_user_agent_get() { WTF::String uaVersion = makeString(String::number(WEBKIT_USER_AGENT_MAJOR_VERSION), '.', String::number(WEBKIT_USER_AGENT_MINOR_VERSION), '+'); WTF::String staticUa = makeString("Mozilla/5.0 (", _ewk_settings_webkit_platform_get(), "; ", _ewk_settings_webkit_os_version_get(), ") AppleWebKit/", uaVersion) + makeString(" (KHTML, like Gecko) Version/5.0 Safari/", uaVersion); return eina_stringshare_add(staticUa.utf8().data()); }
void showGraphicsLayerTree(const WebCore::GraphicsLayer* layer) { if (!layer) return; WTF::String output = layer->layerTreeAsText(LayerTreeAsTextDebug); fprintf(stderr, "%s\n", output.utf8().data()); }
bool MediaConstraints::getOptionalConstraintValue(const char* name, std::string& value) const { ASSERT(!isNull()); WTF::String result; if (m_private->getOptionalConstraintValue(name, result)) { value = result.utf8().data(); return true; } return false; }
/** * webkit_set_web_database_directory_path: * @path: the new database directory path * * Sets the current path to the directory WebKit will write Web * Database databases. * * Since: 1.1.14 **/ void webkit_set_web_database_directory_path(const gchar* path) { #if ENABLE(DATABASE) WTF::String corePath = WTF::String::fromUTF8(path); WebCore::DatabaseTracker::tracker().setDatabaseDirectoryPath(corePath); g_free(webkit_database_directory_path); webkit_database_directory_path = g_strdup(corePath.utf8().data()); #endif }
KURL RegisterMockedUrl(const std::string& urlRoot, const WTF::String& filename) { WebURLResponse response; response.initialize(); response.setMIMEType("text/html"); WTF::String localPath = m_baseFilePath; localPath.append(filename); KURL url = toKURL(urlRoot + filename.utf8().data()); Platform::current()->unitTestSupport()->registerMockedURL(url, response, localPath); return url; }
/** * webkit_security_origin_get_host: * @securityOrigin: a #WebKitSecurityOrigin * * Returns the hostname for the security origin. * * Returns: the hostname for the security origin * * Since: 1.1.14 **/ G_CONST_RETURN gchar* webkit_security_origin_get_host(WebKitSecurityOrigin* securityOrigin) { g_return_val_if_fail(WEBKIT_IS_SECURITY_ORIGIN(securityOrigin), NULL); WebKitSecurityOriginPrivate* priv = securityOrigin->priv; WTF::String host = priv->coreOrigin->host(); if (!priv->host) priv->host = g_strdup(host.utf8().data()); return priv->host; }
static gchar* replaceCharactersForResults(gchar* str) { WTF::String uString = WTF::String::fromUTF8(str); // The object replacement character is passed along to ATs so we need to be // able to test for their presence and do so without causing test failures. uString.replace(objectReplacementCharacter, "<obj>"); // The presence of newline characters in accessible text of a single object // is appropriate, but it makes test results (especially the accessible tree) // harder to read. uString.replace("\n", "<\\n>"); return g_strdup(uString.utf8().data()); }
/** * webkit_get_web_database_directory_path: * * Returns the current path to the directory WebKit will write Web * Database databases. By default this path will be in the user data * directory. * * Returns: the current database directory path * * Since: 1.1.14 **/ G_CONST_RETURN gchar* webkit_get_web_database_directory_path() { #if ENABLE(DATABASE) WTF::String path = WebCore::DatabaseTracker::tracker().databaseDirectoryPath(); if (path.isEmpty()) return ""; g_free(webkit_database_directory_path); webkit_database_directory_path = g_strdup(path.utf8().data()); return webkit_database_directory_path; #else return ""; #endif }
char* DumpRenderTreeWKC::dumpRenderTree(WKC::WKCWebFrame* frame) { WKC::Frame* wkcframe = frame->core(); WebCore::Frame* core_frame= wkcframe->priv().webcore(); if (!core_frame) return strdup(""); WebCore::FrameView* view = core_frame->view(); if (view && view->layoutPending()) view->layout(); WTF::String string = WebCore::externalRepresentation(core_frame); return strdup(string.utf8().data()); }
const char* ewk_web_database_filename_get(Ewk_Web_Database* database) { #if ENABLE(SQL_DATABASE) if (database->filename) return database->filename; WebCore::SecurityOrigin* origin = database->securityOrigin.get(); WTF::String path = WebCore::DatabaseManager::manager().fullPathForDatabase(origin, database->coreName); database->filename = eina_stringshare_add(path.utf8().data()); return database->filename; #else UNUSED_PARAM(database); return 0; #endif }
/** * webkit_web_database_get_display_name: * @webDatabase: a #WebKitWebDatabase * * Returns the name of the #WebKitWebDatabase as seen by the user. * * Returns: the name of the database as seen by the user. * * Since: 1.1.14 **/ G_CONST_RETURN gchar* webkit_web_database_get_display_name(WebKitWebDatabase* webDatabase) { g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL); #if ENABLE(DATABASE) WebKitWebDatabasePrivate* priv = webDatabase->priv; WebCore::DatabaseDetails details = WebCore::DatabaseTracker::tracker().detailsForNameAndOrigin(priv->name, core(priv->origin)); WTF::String displayName = details.displayName(); if (displayName.isEmpty()) return ""; g_free(priv->displayName); priv->displayName = g_strdup(displayName.utf8().data()); return priv->displayName; #else return ""; #endif }
static void onConsoleMessage(Ewk_View_Smart_Data*, const char* message, unsigned int lineNumber, const char*) { // Tests expect only the filename part of local URIs WTF::String newMessage = message; if (!newMessage.isEmpty()) { const size_t fileProtocol = newMessage.find("file://"); if (fileProtocol != WTF::notFound) newMessage = newMessage.left(fileProtocol) + urlSuitableForTestResult(newMessage.substring(fileProtocol)); } // Ignore simple translation-related messages and unnecessary messages if (newMessage.contains("Localized string") || newMessage.contains("Protocol Error: the message is for non-existing domain 'Profiler'")) return; printf("CONSOLE MESSAGE: "); if (lineNumber) printf("line %u: ", lineNumber); printf("%s\n", newMessage.utf8().data()); }
/** * webkit_web_database_get_filename: * @webDatabase: a #WebKitWebDatabase * * Returns the absolute filename to the #WebKitWebDatabase file on disk. * * Returns: the absolute filename of the database * * Since: 1.1.14 **/ G_CONST_RETURN gchar* webkit_web_database_get_filename(WebKitWebDatabase* webDatabase) { g_return_val_if_fail(WEBKIT_IS_WEB_DATABASE(webDatabase), NULL); #if ENABLE(DATABASE) WebKitWebDatabasePrivate* priv = webDatabase->priv; WTF::String coreName = WTF::String::fromUTF8(priv->name); WTF::String corePath = WebCore::DatabaseTracker::tracker().fullPathForDatabase(core(priv->origin), coreName); if (corePath.isEmpty()) return""; g_free(priv->filename); priv->filename = g_strdup(corePath.utf8().data()); return priv->filename; #else return ""; #endif }
const string WebResponse::resolveMimeType(const string& url, const string& old_mime) { // Use "text/html" as a default (matching the behaviour of the Apache // HTTP stack -- see guessMimeType() in LoadListener.java). string mimeType = old_mime.length() ? old_mime : "text/html"; // Try to guess a better MIME type from the URL. We call // getMIMETypeForExtension rather than getMIMETypeForPath because the // latter defaults to "application/octet-stream" on failure. WebCore::KURL kurl(WebCore::ParsedURLString, url.c_str()); WTF::String path = kurl.path(); size_t extensionPos = path.reverseFind('.'); if (extensionPos != WTF::notFound) { // We found a file extension. path.remove(0, extensionPos + 1); // TODO: Should use content-disposition instead of url if it is there WTF::String mime = WebCore::MIMETypeRegistry::getMIMETypeForExtension(path); if (!mime.isEmpty()) { // Great, we found a MIME type. mimeType = std::string(mime.utf8().data(), mime.length()); } } return mimeType; }
bool matchesMimeType(const WTF::String &mimeType) { return evaluator->matchesMimeType(mimeType.utf8().data()); }
void LayoutTestController::setUserStyleSheetLocation(JSStringRef path) { WTF::String pathStr = jsStringRefToWebCoreString(path); BlackBerry::WebKit::DumpRenderTree::currentInstance()->page()->settings()->setUserStyleSheetLocation(pathStr.utf8().data()); }
virtual void IsJavascriptPopupWindowIntercepted(const WTF::String& str) { webkitWebViewJavascriptPopupWindowIntercepted(m_webView, str.utf8()); }
static void Sync(JNIEnv* env, jobject obj, jint frame) { WebCore::Frame* pFrame = (WebCore::Frame*)frame; ALOG_ASSERT(pFrame, "%s must take a valid frame pointer!", __FUNCTION__); WebCore::Settings* s = pFrame->settings(); if (!s) return; WebCore::CachedResourceLoader* cachedResourceLoader = pFrame->document()->cachedResourceLoader(); #ifdef ANDROID_LAYOUT jobject layout = env->GetObjectField(obj, gFieldIds->mLayoutAlgorithm); WebCore::Settings::LayoutAlgorithm l = (WebCore::Settings::LayoutAlgorithm) env->CallIntMethod(layout, gFieldIds->mOrdinal); if (s->layoutAlgorithm() != l) { s->setLayoutAlgorithm(l); if (pFrame->document()) { pFrame->document()->styleSelectorChanged(WebCore::RecalcStyleImmediately); if (pFrame->document()->renderer()) { recursiveCleanupForFullLayout(pFrame->document()->renderer()); ALOG_ASSERT(pFrame->view(), "No view for this frame when trying to relayout"); pFrame->view()->layout(); // FIXME: This call used to scroll the page to put the focus into view. // It worked on the WebViewCore, but now scrolling is done outside of the // WebViewCore, on the UI side, so there needs to be a new way to do this. //pFrame->makeFocusVisible(); } } } #endif jint textSize = env->GetIntField(obj, gFieldIds->mTextSize); float zoomFactor = textSize / 100.0f; if (pFrame->textZoomFactor() != zoomFactor) pFrame->setTextZoomFactor(zoomFactor); jstring str = (jstring)env->GetObjectField(obj, gFieldIds->mStandardFontFamily); s->setStandardFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mFixedFontFamily); s->setFixedFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mSansSerifFontFamily); s->setSansSerifFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mSerifFontFamily); s->setSerifFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mCursiveFontFamily); s->setCursiveFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mFantasyFontFamily); s->setFantasyFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mDefaultTextEncoding); //SAMSUNG Change >> String defaultEncoding = jstringToWtfString(env, str); if (defaultEncoding == "AutoDetect") { s->setUsesEncodingDetector(true); } else { s->setUsesEncodingDetector(false); s->setDefaultTextEncodingName(defaultEncoding); } //SAMSUNG Change << //s->setDefaultTextEncodingName(jstringToWtfString(env, str)); str = (jstring)env->CallObjectMethod(obj, gFieldIds->mGetUserAgentString);//4.2 Merge WebFrame::getWebFrame(pFrame)->setUserAgent(jstringToWtfString(env, str)); WebViewCore::getWebViewCore(pFrame->view())->setWebRequestContextUserAgent(); jint cacheMode = env->GetIntField(obj, gFieldIds->mOverrideCacheMode); WebViewCore::getWebViewCore(pFrame->view())->setWebRequestContextCacheMode(cacheMode); str = (jstring)env->CallObjectMethod(obj, gFieldIds->mGetAcceptLanguage);//4.2 Merge WebRequestContext::setAcceptLanguage(jstringToWtfString(env, str)); jint size = env->GetIntField(obj, gFieldIds->mMinimumFontSize); s->setMinimumFontSize(size); size = env->GetIntField(obj, gFieldIds->mMinimumLogicalFontSize); s->setMinimumLogicalFontSize(size); size = env->GetIntField(obj, gFieldIds->mDefaultFontSize); s->setDefaultFontSize(size); size = env->GetIntField(obj, gFieldIds->mDefaultFixedFontSize); s->setDefaultFixedFontSize(size); jboolean flag = env->GetBooleanField(obj, gFieldIds->mLoadsImagesAutomatically); s->setLoadsImagesAutomatically(flag); if (flag) cachedResourceLoader->setAutoLoadImages(true); #ifdef ANDROID_BLOCK_NETWORK_IMAGE flag = env->GetBooleanField(obj, gFieldIds->mBlockNetworkImage); s->setBlockNetworkImage(flag); if(!flag) cachedResourceLoader->setBlockNetworkImage(false); #endif flag = env->GetBooleanField(obj, gFieldIds->mBlockNetworkLoads); WebFrame* webFrame = WebFrame::getWebFrame(pFrame); webFrame->setBlockNetworkLoads(flag); flag = env->GetBooleanField(obj, gFieldIds->mJavaScriptEnabled); s->setJavaScriptEnabled(flag); // SERI - WebGL >> #if ENABLE(WEBGL) flag = env->GetBooleanField(obj, gFieldIds->mWebGLEnabled); s->setWebGLEnabled(flag); #endif // SERI - WebGL << flag = env->GetBooleanField(obj, gFieldIds->mAllowUniversalAccessFromFileURLs); s->setAllowUniversalAccessFromFileURLs(flag); flag = env->GetBooleanField(obj, gFieldIds->mAllowFileAccessFromFileURLs); s->setAllowFileAccessFromFileURLs(flag); // Hyperlink auditing (the ping attribute) has similar privacy // considerations as does the running of JavaScript, so to keep the UI // simpler, we leverage the same setting. s->setHyperlinkAuditingEnabled(flag); // ON = 0 // ON_DEMAND = 1 // OFF = 2 jobject pluginState = env->GetObjectField(obj, gFieldIds->mPluginState); int state = env->CallIntMethod(pluginState, gFieldIds->mOrdinal); s->setPluginsEnabled(state < 2); #ifdef ANDROID_PLUGINS s->setPluginsOnDemand(state == 1); #endif #if ENABLE(OFFLINE_WEB_APPLICATIONS) // We only enable AppCache if it's been enabled with a call to // setAppCacheEnabled() and if a valid path has been supplied to // setAppCachePath(). Note that the path is applied to all WebViews // whereas enabling is applied per WebView. // WebCore asserts that the path is only set once. Since the path is // shared between WebViews, we can't do the required checks to guard // against this in the Java WebSettings. bool isPathValid = false; if (cacheStorage().cacheDirectory().isNull()) { str = static_cast<jstring>(env->GetObjectField(obj, gFieldIds->mAppCachePath)); // Check for non-null string as an optimization, as this is the common case. if (str) { String path = jstringToWtfString(env, str); ALOG_ASSERT(!path.empty(), "Java side should never send empty string for AppCache path"); // This database is created on the first load. If the file // doesn't exist, we create it and set its permissions. The // filename must match that in ApplicationCacheStorage.cpp. String filename = pathByAppendingComponent(path, "ApplicationCache.db"); int fd = open(filename.utf8().data(), O_CREAT, permissionFlags660); if (fd >= 0) { close(fd); cacheStorage().setCacheDirectory(path); isPathValid = true; } } } else isPathValid = true; flag = env->GetBooleanField(obj, gFieldIds->mAppCacheEnabled); s->setOfflineWebApplicationCacheEnabled(flag && isPathValid); jlong maxsize = env->GetLongField(obj, gFieldIds->mAppCacheMaxSize); cacheStorage().setMaximumSize(maxsize); #endif flag = env->GetBooleanField(obj, gFieldIds->mJavaScriptCanOpenWindowsAutomatically); s->setJavaScriptCanOpenWindowsAutomatically(flag); #ifdef ANDROID_LAYOUT flag = env->GetBooleanField(obj, gFieldIds->mUseWideViewport); s->setUseWideViewport(flag); #endif #ifdef ANDROID_MULTIPLE_WINDOWS flag = env->GetBooleanField(obj, gFieldIds->mSupportMultipleWindows); s->setSupportMultipleWindows(flag); #endif flag = env->GetBooleanField(obj, gFieldIds->mShrinksStandaloneImagesToFit); s->setShrinksStandaloneImagesToFit(flag); jlong maxImage = env->GetLongField(obj, gFieldIds->mMaximumDecodedImageSize); // Since in ImageSourceAndroid.cpp, the image will always not exceed // MAX_SIZE_BEFORE_SUBSAMPLE, there's no need to pass the max value to // WebCore, which checks (image_width * image_height * 4) as an // estimation against the max value, which is done in CachedImage.cpp. // And there're cases where the decoded image size will not // exceed the max, but the WebCore estimation will. So the following // code is commented out to fix those cases. // if (maxImage == 0) // maxImage = computeMaxBitmapSizeForCache(); s->setMaximumDecodedImageSize(maxImage); flag = env->GetBooleanField(obj, gFieldIds->mPrivateBrowsingEnabled); s->setPrivateBrowsingEnabled(flag); flag = env->GetBooleanField(obj, gFieldIds->mSyntheticLinksEnabled); s->setDefaultFormatDetection(flag); s->setFormatDetectionAddress(flag); s->setFormatDetectionEmail(flag); s->setFormatDetectionTelephone(flag); #if ENABLE(DATABASE) flag = env->GetBooleanField(obj, gFieldIds->mDatabaseEnabled); WebCore::Database::setIsAvailable(flag); flag = env->GetBooleanField(obj, gFieldIds->mDatabasePathHasBeenSet); if (flag) { // If the user has set the database path, sync it to the DatabaseTracker. str = (jstring)env->GetObjectField(obj, gFieldIds->mDatabasePath); if (str) { String path = jstringToWtfString(env, str); DatabaseTracker::tracker().setDatabaseDirectoryPath(path); // This database is created when the first HTML5 Database object is // instantiated. If the file doesn't exist, we create it and set its // permissions. The filename must match that in // DatabaseTracker.cpp. String filename = SQLiteFileSystem::appendDatabaseFileNameToPath(path, "Databases.db"); int fd = open(filename.utf8().data(), O_CREAT | O_EXCL, permissionFlags660); if (fd >= 0) close(fd); } } #endif #if ENABLE(FILE_SYSTEM) flag = env->GetBooleanField(obj, gFieldIds->mFilesystemEnabled); flag = env->GetBooleanField(obj, gFieldIds->mFileSystemPathHasBeenSet); if (flag) { // If the user has set the filesystem path, sync it to the LocalFileSystem. str = (jstring)env->GetObjectField(obj, gFieldIds->mFileSystemPath); if (str) { String path = jstringToWtfString(env, str); LocalFileSystem::localFileSystem().initializeLocalFileSystem(path); } } #endif // Samsung Change - HTML5 Web Notification >> #if ENABLE(NOTIFICATIONS) flag = env->GetBooleanField(obj, gFieldIds->mWebnotificationEnabled); //flag = env->GetBooleanField(obj, gFieldIds->mFileSystemPathHasBeenSet); //if (flag) { // If the user has set the Web notification path, sync it to the NotificationPresenterImpl. str = (jstring)env->GetObjectField(obj, gFieldIds->mWebnotificationDatabasePath); if (str) { String path = jstringToWtfString(env, str); NotificationPresenterImpl::setDatabasePath(path); } // ALWAYS ON = 0 // ON_DEMAND = 1 // OFF = 2 jobject notificationState = env->GetObjectField(obj, gFieldIds->mNotificationState); int notifystate = env->CallIntMethod(notificationState, gFieldIds->mOrdinal); NotificationPresenterImpl::setSettingsValue(notifystate); //s->setPluginsEnabled(state < 2); //} #endif // Samsung Change - HTML5 Web Notification << #if ENABLE(DOM_STORAGE) flag = env->GetBooleanField(obj, gFieldIds->mDomStorageEnabled); s->setLocalStorageEnabled(flag); str = (jstring)env->GetObjectField(obj, gFieldIds->mDatabasePath); if (str) { WTF::String localStorageDatabasePath = jstringToWtfString(env,str); if (localStorageDatabasePath.length()) { localStorageDatabasePath = WebCore::pathByAppendingComponent( localStorageDatabasePath, "localstorage"); // We need 770 for folders mkdir(localStorageDatabasePath.utf8().data(), permissionFlags660 | S_IXUSR | S_IXGRP); s->setLocalStorageDatabasePath(localStorageDatabasePath); } } #endif //SISO_HTMLComposer Start flag = env->GetBooleanField(obj, gFieldIds->mEditableSupport); if(flag) s->setEditableLinkBehavior(WebCore::EditableLinkNeverLive); s->setEditableSupportEnabled(flag); flag = env->GetBooleanField(obj, gFieldIds->mDisableAnimation); s->setDisableAnimation(flag); flag = env->GetBooleanField(obj, gFieldIds->mHighResolutionDevice); s->setHighResolutionDevice(flag); //SISO_HTMLComposer End //SAMSUNG ADVANCED TEXT SELECTION - BEGIN flag = env->GetBooleanField(obj, gFieldIds->mAdvanceTextSelection); s->setAdvancedSelectionEnabled(flag); jlong color = env->GetLongField(obj, gFieldIds->mAdvanceSelectionBgColor); if (-1 != color) { int r = ((color & 0x00FF0000) >> 16); int g = ((color & 0x0000FF00) >> 8); int b = (color & 0x000000FF); s->setAdvancedSelectionBgColor(r, g, b); }
void NotificationPresenterImpl::providePermissionState(const WTF::String& origin, bool allow) { m_result = 0; LOGV("NotificationPresenterImpl::requestPermission FOR originStr %s , value is %d",origin.utf8().data(), allow); s_notificationPermissions.set(origin,allow); m_callback->handleEvent(); }
static void Sync(JNIEnv* env, jobject obj, jint frame) { WebCore::Frame* pFrame = (WebCore::Frame*)frame; ALOG_ASSERT(pFrame, "%s must take a valid frame pointer!", __FUNCTION__); WebCore::Settings* s = pFrame->settings(); if (!s) return; WebCore::CachedResourceLoader* cachedResourceLoader = pFrame->document()->cachedResourceLoader(); #ifdef ANDROID_LAYOUT jobject layout = env->GetObjectField(obj, gFieldIds->mLayoutAlgorithm); WebCore::Settings::LayoutAlgorithm l = (WebCore::Settings::LayoutAlgorithm) env->CallIntMethod(layout, gFieldIds->mOrdinal); if (s->layoutAlgorithm() != l) { s->setLayoutAlgorithm(l); if (pFrame->document()) { pFrame->document()->styleSelectorChanged(WebCore::RecalcStyleImmediately); if (pFrame->document()->renderer()) { recursiveCleanupForFullLayout(pFrame->document()->renderer()); ALOG_ASSERT(pFrame->view(), "No view for this frame when trying to relayout"); pFrame->view()->layout(); // FIXME: This call used to scroll the page to put the focus into view. // It worked on the WebViewCore, but now scrolling is done outside of the // WebViewCore, on the UI side, so there needs to be a new way to do this. //pFrame->makeFocusVisible(); } } } #endif jint textSize = env->GetIntField(obj, gFieldIds->mTextSize); float zoomFactor = textSize / 100.0f; if (pFrame->textZoomFactor() != zoomFactor) pFrame->setTextZoomFactor(zoomFactor); jstring str = (jstring)env->GetObjectField(obj, gFieldIds->mStandardFontFamily); s->setStandardFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mFixedFontFamily); s->setFixedFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mSansSerifFontFamily); s->setSansSerifFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mSerifFontFamily); s->setSerifFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mCursiveFontFamily); s->setCursiveFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mFantasyFontFamily); s->setFantasyFontFamily(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mDefaultTextEncoding); s->setDefaultTextEncodingName(jstringToWtfString(env, str)); str = (jstring)env->GetObjectField(obj, gFieldIds->mUserAgent); WebFrame::getWebFrame(pFrame)->setUserAgent(jstringToWtfString(env, str)); WebViewCore::getWebViewCore(pFrame->view())->setWebRequestContextUserAgent(); jint cacheMode = env->GetIntField(obj, gFieldIds->mOverrideCacheMode); WebViewCore::getWebViewCore(pFrame->view())->setWebRequestContextCacheMode(cacheMode); str = (jstring)env->GetObjectField(obj, gFieldIds->mAcceptLanguage); WebRequestContext::setAcceptLanguage(jstringToWtfString(env, str)); jint size = env->GetIntField(obj, gFieldIds->mMinimumFontSize); s->setMinimumFontSize(size); size = env->GetIntField(obj, gFieldIds->mMinimumLogicalFontSize); s->setMinimumLogicalFontSize(size); size = env->GetIntField(obj, gFieldIds->mDefaultFontSize); s->setDefaultFontSize(size); size = env->GetIntField(obj, gFieldIds->mDefaultFixedFontSize); s->setDefaultFixedFontSize(size); jboolean flag = env->GetBooleanField(obj, gFieldIds->mLoadsImagesAutomatically); s->setLoadsImagesAutomatically(flag); if (flag) cachedResourceLoader->setAutoLoadImages(true); flag = env->GetBooleanField(obj, gFieldIds->mMediaPreloadEnabled); s->setMediaPreloadEnabled(flag); #ifdef ANDROID_BLOCK_NETWORK_IMAGE flag = env->GetBooleanField(obj, gFieldIds->mBlockNetworkImage); s->setBlockNetworkImage(flag); if(!flag) cachedResourceLoader->setBlockNetworkImage(false); #endif flag = env->GetBooleanField(obj, gFieldIds->mBlockNetworkLoads); WebFrame* webFrame = WebFrame::getWebFrame(pFrame); webFrame->setBlockNetworkLoads(flag); flag = env->GetBooleanField(obj, gFieldIds->mJavaScriptEnabled); s->setJavaScriptEnabled(flag); flag = env->GetBooleanField(obj, gFieldIds->mAllowUniversalAccessFromFileURLs); s->setAllowUniversalAccessFromFileURLs(flag); flag = env->GetBooleanField(obj, gFieldIds->mAllowFileAccessFromFileURLs); s->setAllowFileAccessFromFileURLs(flag); // Hyperlink auditing (the ping attribute) has similar privacy // considerations as does the running of JavaScript, so to keep the UI // simpler, we leverage the same setting. s->setHyperlinkAuditingEnabled(flag); // ON = 0 // ON_DEMAND = 1 // OFF = 2 jobject pluginState = env->GetObjectField(obj, gFieldIds->mPluginState); int state = env->CallIntMethod(pluginState, gFieldIds->mOrdinal); s->setPluginsEnabled(state < 2); #ifdef ANDROID_PLUGINS s->setPluginsOnDemand(state == 1); #endif #if ENABLE(OFFLINE_WEB_APPLICATIONS) // We only enable AppCache if it's been enabled with a call to // setAppCacheEnabled() and if a valid path has been supplied to // setAppCachePath(). Note that the path is applied to all WebViews // whereas enabling is applied per WebView. // WebCore asserts that the path is only set once. Since the path is // shared between WebViews, we can't do the required checks to guard // against this in the Java WebSettings. bool isPathValid = false; if (cacheStorage().cacheDirectory().isNull()) { str = static_cast<jstring>(env->GetObjectField(obj, gFieldIds->mAppCachePath)); // Check for non-null string as an optimization, as this is the common case. if (str) { String path = jstringToWtfString(env, str); ALOG_ASSERT(!path.empty(), "Java side should never send empty string for AppCache path"); // This database is created on the first load. If the file // doesn't exist, we create it and set its permissions. The // filename must match that in ApplicationCacheStorage.cpp. String filename = pathByAppendingComponent(path, "ApplicationCache.db"); int fd = open(filename.utf8().data(), O_CREAT, permissionFlags660); if (fd >= 0) { close(fd); cacheStorage().setCacheDirectory(path); isPathValid = true; } } } else isPathValid = true; flag = env->GetBooleanField(obj, gFieldIds->mAppCacheEnabled); s->setOfflineWebApplicationCacheEnabled(flag && isPathValid); jlong maxsize = env->GetLongField(obj, gFieldIds->mAppCacheMaxSize); cacheStorage().setMaximumSize(maxsize); #endif flag = env->GetBooleanField(obj, gFieldIds->mJavaScriptCanOpenWindowsAutomatically); s->setJavaScriptCanOpenWindowsAutomatically(flag); #ifdef ANDROID_LAYOUT flag = env->GetBooleanField(obj, gFieldIds->mUseWideViewport); s->setUseWideViewport(flag); #endif #ifdef ANDROID_MULTIPLE_WINDOWS flag = env->GetBooleanField(obj, gFieldIds->mSupportMultipleWindows); s->setSupportMultipleWindows(flag); #endif flag = env->GetBooleanField(obj, gFieldIds->mShrinksStandaloneImagesToFit); s->setShrinksStandaloneImagesToFit(flag); jlong maxImage = env->GetLongField(obj, gFieldIds->mMaximumDecodedImageSize); // Since in ImageSourceAndroid.cpp, the image will always not exceed // MAX_SIZE_BEFORE_SUBSAMPLE, there's no need to pass the max value to // WebCore, which checks (image_width * image_height * 4) as an // estimation against the max value, which is done in CachedImage.cpp. // And there're cases where the decoded image size will not // exceed the max, but the WebCore estimation will. So the following // code is commented out to fix those cases. // if (maxImage == 0) // maxImage = computeMaxBitmapSizeForCache(); s->setMaximumDecodedImageSize(maxImage); flag = env->GetBooleanField(obj, gFieldIds->mPrivateBrowsingEnabled); s->setPrivateBrowsingEnabled(flag); flag = env->GetBooleanField(obj, gFieldIds->mSyntheticLinksEnabled); s->setDefaultFormatDetection(flag); s->setFormatDetectionAddress(flag); s->setFormatDetectionEmail(flag); s->setFormatDetectionTelephone(flag); #if ENABLE(DATABASE) flag = env->GetBooleanField(obj, gFieldIds->mDatabaseEnabled); WebCore::Database::setIsAvailable(flag); flag = env->GetBooleanField(obj, gFieldIds->mDatabasePathHasBeenSet); if (flag) { // If the user has set the database path, sync it to the DatabaseTracker. str = (jstring)env->GetObjectField(obj, gFieldIds->mDatabasePath); if (str) { String path = jstringToWtfString(env, str); DatabaseTracker::tracker().setDatabaseDirectoryPath(path); // This database is created when the first HTML5 Database object is // instantiated. If the file doesn't exist, we create it and set its // permissions. The filename must match that in // DatabaseTracker.cpp. String filename = SQLiteFileSystem::appendDatabaseFileNameToPath(path, "Databases.db"); int fd = open(filename.utf8().data(), O_CREAT | O_EXCL, permissionFlags660); if (fd >= 0) close(fd); } } #endif #if ENABLE(DOM_STORAGE) flag = env->GetBooleanField(obj, gFieldIds->mDomStorageEnabled); s->setLocalStorageEnabled(flag); str = (jstring)env->GetObjectField(obj, gFieldIds->mDatabasePath); if (str) { WTF::String localStorageDatabasePath = jstringToWtfString(env,str); if (localStorageDatabasePath.length()) { localStorageDatabasePath = WebCore::pathByAppendingComponent( localStorageDatabasePath, "localstorage"); // We need 770 for folders mkdir(localStorageDatabasePath.utf8().data(), permissionFlags660 | S_IXUSR | S_IXGRP); s->setLocalStorageDatabasePath(localStorageDatabasePath); } } #endif flag = env->GetBooleanField(obj, gFieldIds->mGeolocationEnabled); GeolocationPermissions::setAlwaysDeny(!flag); str = (jstring)env->GetObjectField(obj, gFieldIds->mGeolocationDatabasePath); if (str) { String path = jstringToWtfString(env, str); GeolocationPermissions::setDatabasePath(path); GeolocationPositionCache::instance()->setDatabasePath(path); // This database is created when the first Geolocation object is // instantiated. If the file doesn't exist, we create it and set its // permissions. The filename must match that in // GeolocationPositionCache.cpp. String filename = SQLiteFileSystem::appendDatabaseFileNameToPath(path, "CachedGeoposition.db"); int fd = open(filename.utf8().data(), O_CREAT | O_EXCL, permissionFlags660); if (fd >= 0) close(fd); } flag = env->GetBooleanField(obj, gFieldIds->mXSSAuditorEnabled); s->setXSSAuditorEnabled(flag); #if ENABLE(LINK_PREFETCH) flag = env->GetBooleanField(obj, gFieldIds->mLinkPrefetchEnabled); s->setLinkPrefetchEnabled(flag); #endif size = env->GetIntField(obj, gFieldIds->mPageCacheCapacity); if (size > 0) { s->setUsesPageCache(true); WebCore::pageCache()->setCapacity(size); } else s->setUsesPageCache(false); #if ENABLE(WEB_AUTOFILL) flag = env->GetBooleanField(obj, gFieldIds->mAutoFillEnabled); // TODO: This updates the Settings WebCore side with the user's // preference for autofill and will stop WebCore making requests // into the chromium autofill code. That code in Chromium also has // a notion of being enabled/disabled that gets read from the users // preferences. At the moment, it's hardcoded to true on Android // (see chrome/browser/autofill/autofill_manager.cc:405). This // setting should probably be synced into Chromium also. s->setAutoFillEnabled(flag); if (flag) { EditorClientAndroid* editorC = static_cast<EditorClientAndroid*>(pFrame->page()->editorClient()); WebAutofill* webAutofill = editorC->getAutofill(); // Set the active AutofillProfile data. jobject autoFillProfile = env->GetObjectField(obj, gFieldIds->mAutoFillProfile); if (autoFillProfile) syncAutoFillProfile(env, autoFillProfile, webAutofill); else { // The autofill profile is null. We need to tell Chromium about this because // this may be because the user just deleted their profile but left the // autofill feature setting enabled. webAutofill->clearProfiles(); } } #endif // This is required to enable the XMLTreeViewer when loading an XML document that // has no style attached to it. http://trac.webkit.org/changeset/79799 s->setDeveloperExtrasEnabled(true); s->setSpatialNavigationEnabled(true); bool echoPassword = env->GetBooleanField(obj, gFieldIds->mPasswordEchoEnabled); s->setPasswordEchoEnabled(echoPassword); }
void NotificationPresenterImpl::dispatchNotificationEvents(const WTF::String& eventName, int counter) { LOGV("NotificationPresenterImpl::dispatchNotificationEvents with counter as %d and EVENT as %s ", counter,eventName.utf8().data()); int res = s_notificationMap.isEmpty(); int size = s_notificationMap.size(); LOGV("NotificationPresenterImpl::dispatchNotificationEvents with res as %d size as %d ", res,size); RefPtr<Notification> notificationptr = s_notificationMap.get(counter); ScriptExecutionContext* sec = notificationptr->scriptExecutionContext(); LOGV("Inside NotificationPresenterImpl::dispatchNotificationEvents notification pointer is %u and ScriptExecutionContext is %u",notificationptr.get() ,sec); if (notificationptr->scriptExecutionContext()){ LOGV("Inside scriptExecutionContext" ); notificationptr->dispatchEvent(Event::create(eventName,false, true)); } }
void evaluate(const WTF::String &mimeType, const WebCore::ScriptSourceCode& sourceCode, void *context) { evaluator->evaluate(mimeType.utf8().data(), sourceCode.jsSourceCode().toString().utf8().data(), context); }
void ChromeClient::addMessageToConsole(WebCore::MessageSource source, WebCore::MessageType type, WebCore::MessageLevel level, const WTF::String& message, unsigned int lineNumber, const WTF::String& sourceId) { gboolean retval; g_signal_emit_by_name(m_webView, "console-message", message.utf8().data(), lineNumber, sourceId.utf8().data(), &retval); }