Updated patch that includes comments from the webkit folks. I added some performance numbers to: https://bugs.webkit.org/show_bug.cgi?id=55973
Any chance this can make it in 1.2.8? --- WebCore/ChangeLog.orig Tue Mar 8 16:16:50 2011 +++ WebCore/ChangeLog Tue Mar 8 16:10:10 2011 @@ -1,3 +1,19 @@ +2011-03-08 Marco Peereboom <[email protected]> + + Reviewed no one yet + + Backport code to enable/disable dns prefetching. + DNS prefetching is enabled by default. + https://bugs.webkit.org/show_bug.cgi?id=28825 + + * dom/Document.cpp: + (WebCore::Document::initDNSPrefetch): Check settings->dnsPrefetchingEnabled(). + * page/Settings.cpp: + (WebCore::Settings::Settings): Set m_dnsPrefetchingEnabled to true. + (WebCore::Settings::setDNSPrefetchingEnabled): Added. Set m_dnsPrefetchingEnabled. + * page/Settings.h: + (WebCore::Settings::dnsPrefetchingEnabled): Added. Return m_dnsPrefetchingEnabled. + 2010-06-21 Philippe Normand <[email protected]> Reviewed by Xan Lopez. --- WebCore/dom/Document.cpp.orig Fri Sep 10 08:20:33 2010 +++ WebCore/dom/Document.cpp Tue Mar 8 10:16:45 2011 @@ -4639,8 +4639,10 @@ HTMLCanvasElement* Document::getCSSCanvasElement(const void Document::initDNSPrefetch() { + Settings* settings = this->settings(); + m_haveExplicitlyDisabledDNSPrefetch = false; - m_isDNSPrefetchEnabled = securityOrigin()->protocol() == "http"; + m_isDNSPrefetchEnabled = settings && settings->dnsPrefetchingEnabled() && securityOrigin()->protocol() == "http"; // Inherit DNS prefetch opt-out from parent frame if (Document* parent = parentDocument()) { --- WebCore/page/Settings.cpp.orig Fri Sep 10 08:20:33 2010 +++ WebCore/page/Settings.cpp Tue Mar 8 15:48:38 2011 @@ -128,6 +128,7 @@ Settings::Settings(Page* page) , m_webGLEnabled(false) , m_loadDeferringEnabled(true) , m_tiledBackingStoreEnabled(false) + , m_dnsPrefetchingEnabled(true) { // A Frame may not have been created yet, so we initialize the AtomicString // hash before trying to use it. @@ -509,6 +510,11 @@ void Settings::setShouldPaintNativeControls(bool shoul void Settings::setUsesEncodingDetector(bool usesEncodingDetector) { m_usesEncodingDetector = usesEncodingDetector; +} + +void Settings::setDNSPrefetchingEnabled(bool dnsPrefetchingEnabled) +{ + m_dnsPrefetchingEnabled = dnsPrefetchingEnabled; } void Settings::setAllowScriptsToCloseWindows(bool allowScriptsToCloseWindows) --- WebCore/page/Settings.h.orig Fri Sep 10 08:20:33 2010 +++ WebCore/page/Settings.h Tue Mar 8 10:16:45 2011 @@ -158,6 +158,9 @@ namespace WebCore { void setUsesEncodingDetector(bool); bool usesEncodingDetector() const { return m_usesEncodingDetector; } + void setDNSPrefetchingEnabled(bool); + bool dnsPrefetchingEnabled() const { return m_dnsPrefetchingEnabled; } + void setUserStyleSheetLocation(const KURL&); const KURL& userStyleSheetLocation() const { return m_userStyleSheetLocation; } @@ -376,6 +379,7 @@ namespace WebCore { bool m_webGLEnabled : 1; bool m_loadDeferringEnabled : 1; bool m_tiledBackingStoreEnabled : 1; + bool m_dnsPrefetchingEnabled : 1; #if USE(SAFARI_THEME) static bool gShouldPaintNativeControls; --- WebKit/gtk/ChangeLog.orig Tue Mar 8 16:17:18 2011 +++ WebKit/gtk/ChangeLog Tue Mar 8 16:14:29 2011 @@ -1,3 +1,20 @@ +2011-03-08 Marco Peereboom <[email protected]> + + Reviewed no one yet + + Provide a knob to enable/disable DNS prefetching. + DNS prefetching is enabled by default. + https://bugs.webkit.org/show_bug.cgi?id=28825 + + * WebKit/gtk/webkit/webkitwebsettings.cpp: + (webkit_web_settings_class_init): + (webkit_web_settings_set_property): + (webkit_web_settings_get_property): + (webkit_web_settings_copy): + * webkit/webkitwebview.cpp: + (webkit_web_view_update_settings): + (webkit_web_view_settings_notify): + 2010-06-15 Xan Lopez <[email protected]> Reviewed by Gustavo Noronha. --- WebKit/gtk/webkit/webkitwebsettings.cpp.orig Tue Mar 8 11:35:14 2011 +++ WebKit/gtk/webkit/webkitwebsettings.cpp Wed Mar 9 05:43:47 2011 @@ -108,6 +108,7 @@ struct _WebKitWebSettingsPrivate { gboolean enable_page_cache; gboolean auto_resize_window; gboolean enable_java_applet; + gboolean dns_prefetching; }; #define WEBKIT_WEB_SETTINGS_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE((obj), WEBKIT_TYPE_WEB_SETTINGS, WebKitWebSettingsPrivate)) @@ -157,7 +158,8 @@ enum { PROP_ENABLE_SITE_SPECIFIC_QUIRKS, PROP_ENABLE_PAGE_CACHE, PROP_AUTO_RESIZE_WINDOW, - PROP_ENABLE_JAVA_APPLET + PROP_ENABLE_JAVA_APPLET, + PROP_DNS_PREFETCHING }; // Create a default user agent string @@ -857,6 +859,21 @@ static void webkit_web_settings_class_init(WebKitWebSe TRUE, flags)); + /** + * WebKitWebSettings:dns-prefetching + * + * Whether webkit prefetches domain names + * + * Since: 1.1.13. + */ + g_object_class_install_property(gobject_class, + PROP_DNS_PREFETCHING, + g_param_spec_boolean("dns-prefetching", + _("WebKit prefetches domain names"), + _("Whether WebKit prefetches domain names"), + TRUE, + flags)); + g_type_class_add_private(klass, sizeof(WebKitWebSettingsPrivate)); } @@ -1077,6 +1094,9 @@ static void webkit_web_settings_set_property(GObject* case PROP_ENABLE_JAVA_APPLET: priv->enable_java_applet = g_value_get_boolean(value); break; + case PROP_DNS_PREFETCHING: + priv->dns_prefetching = g_value_get_boolean(value); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -1218,6 +1238,9 @@ static void webkit_web_settings_get_property(GObject* case PROP_ENABLE_JAVA_APPLET: g_value_set_boolean(value, priv->enable_java_applet); break; + case PROP_DNS_PREFETCHING: + g_value_set_boolean(value, priv->dns_prefetching); + break; default: G_OBJECT_WARN_INVALID_PROPERTY_ID(object, prop_id, pspec); break; @@ -1291,6 +1314,7 @@ WebKitWebSettings* webkit_web_settings_copy(WebKitWebS "enable-page-cache", priv->enable_page_cache, "auto-resize-window", priv->auto_resize_window, "enable-java-applet", priv->enable_java_applet, + "dns-prefetching", priv->dns_prefetching, NULL)); return copy; --- WebKit/gtk/webkit/webkitwebview.cpp.orig Tue Mar 8 11:29:41 2011 +++ WebKit/gtk/webkit/webkitwebview.cpp Wed Mar 9 05:37:41 2011 @@ -2662,7 +2662,7 @@ static void webkit_web_view_update_settings(WebKitWebV javaScriptCanAccessClipboard, enableOfflineWebAppCache, enableUniversalAccessFromFileURI, enableFileAccessFromFileURI, enableDOMPaste, tabKeyCyclesThroughElements, - enableSiteSpecificQuirks, usePageCache, enableJavaApplet; + enableSiteSpecificQuirks, usePageCache, enableJavaApplet, dnsPrefetching; WebKitEditingBehavior editingBehavior; @@ -2699,6 +2699,7 @@ static void webkit_web_view_update_settings(WebKitWebV "enable-site-specific-quirks", &enableSiteSpecificQuirks, "enable-page-cache", &usePageCache, "enable-java-applet", &enableJavaApplet, + "dns-prefetching", &dnsPrefetching, NULL); settings->setDefaultTextEncodingName(defaultEncoding); @@ -2734,6 +2735,7 @@ static void webkit_web_view_update_settings(WebKitWebV settings->setNeedsSiteSpecificQuirks(enableSiteSpecificQuirks); settings->setUsesPageCache(usePageCache); settings->setJavaEnabled(enableJavaApplet); + settings->setDNSPrefetchingEnabled(dnsPrefetching); Page* page = core(webView); if (page) @@ -2845,6 +2847,8 @@ static void webkit_web_view_settings_notify(WebKitWebS settings->setUsesPageCache(g_value_get_boolean(&value)); else if (name == g_intern_string("enable-java-applet")) settings->setJavaEnabled(g_value_get_boolean(&value)); + else if (name == g_intern_string("dns-prefetching")) + settings->setDNSPrefetchingEnabled(g_value_get_boolean(&value)); else if (!g_object_class_find_property(G_OBJECT_GET_CLASS(webSettings), name)) g_warning("Unexpected setting '%s'", name); g_value_unset(&value); _______________________________________________ webkit-gtk mailing list [email protected] http://lists.webkit.org/mailman/listinfo.cgi/webkit-gtk
