Title: [98851] trunk/Source/WebKit2
Revision
98851
Author
[email protected]
Date
2011-10-31 06:51:19 -0700 (Mon, 31 Oct 2011)

Log Message

[Qt] Make QWebPreferences hold a QtWebPageProxy
https://bugs.webkit.org/show_bug.cgi?id=71219

Reviewed by Andreas Kling.

Change QWebPreferences to keep a pointer to QtWebPageProxy.  The reason is that
some features we want to control (like the messaging exchange between WebView and
the web process) are not available via WKPreferencesRef.

QtWebPageProxy now uses an OwnPtr to keep the QWebPreferences to clarify the
ownership relationship. Before this change the QWebPreferences created was leaking.

* UIProcess/API/qt/qwebpreferences.cpp:
(QWebPreferencesPrivate::createPreferences):
(QWebPreferencesPrivate::testAttribute):
(QWebPreferencesPrivate::setAttribute):
(QWebPreferencesPrivate::setFontFamily):
(QWebPreferencesPrivate::fontFamily):
(QWebPreferencesPrivate::setFontSize):
(QWebPreferencesPrivate::fontSize):
(QWebPreferencesPrivate::preferencesRef):
* UIProcess/API/qt/qwebpreferences.h:
* UIProcess/API/qt/qwebpreferences_p.h:
* UIProcess/qt/QtWebPageProxy.cpp:
(QtWebPageProxy::QtWebPageProxy):
(QtWebPageProxy::preferences):
* UIProcess/qt/QtWebPageProxy.h:

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (98850 => 98851)


--- trunk/Source/WebKit2/ChangeLog	2011-10-31 12:45:40 UTC (rev 98850)
+++ trunk/Source/WebKit2/ChangeLog	2011-10-31 13:51:19 UTC (rev 98851)
@@ -1,3 +1,33 @@
+2011-10-31  Caio Marcelo de Oliveira Filho  <[email protected]>
+
+        [Qt] Make QWebPreferences hold a QtWebPageProxy
+        https://bugs.webkit.org/show_bug.cgi?id=71219
+
+        Reviewed by Andreas Kling.
+
+        Change QWebPreferences to keep a pointer to QtWebPageProxy.  The reason is that
+        some features we want to control (like the messaging exchange between WebView and
+        the web process) are not available via WKPreferencesRef.
+
+        QtWebPageProxy now uses an OwnPtr to keep the QWebPreferences to clarify the
+        ownership relationship. Before this change the QWebPreferences created was leaking.
+
+        * UIProcess/API/qt/qwebpreferences.cpp:
+        (QWebPreferencesPrivate::createPreferences):
+        (QWebPreferencesPrivate::testAttribute):
+        (QWebPreferencesPrivate::setAttribute):
+        (QWebPreferencesPrivate::setFontFamily):
+        (QWebPreferencesPrivate::fontFamily):
+        (QWebPreferencesPrivate::setFontSize):
+        (QWebPreferencesPrivate::fontSize):
+        (QWebPreferencesPrivate::preferencesRef):
+        * UIProcess/API/qt/qwebpreferences.h:
+        * UIProcess/API/qt/qwebpreferences_p.h:
+        * UIProcess/qt/QtWebPageProxy.cpp:
+        (QtWebPageProxy::QtWebPageProxy):
+        (QtWebPageProxy::preferences):
+        * UIProcess/qt/QtWebPageProxy.h:
+
 2011-10-31  Carlos Garcia Campos  <[email protected]>
 
         [GTK] Add webkit_settings_new_with_settings() to WebKit2 GTK+ API

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp (98850 => 98851)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp	2011-10-31 12:45:40 UTC (rev 98850)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp	2011-10-31 13:51:19 UTC (rev 98851)
@@ -20,6 +20,7 @@
 #include "config.h"
 #include "qwebpreferences.h"
 
+#include "QtWebPageProxy.h"
 #include "WKPageGroup.h"
 #include "WKPreferences.h"
 #include "WKPreferencesPrivate.h"
@@ -27,10 +28,10 @@
 #include "WKStringQt.h"
 #include "qwebpreferences_p.h"
 
-QWebPreferences* QWebPreferencesPrivate::createPreferences(WKPageGroupRef pageGroupRef)
+QWebPreferences* QWebPreferencesPrivate::createPreferences(QtWebPageProxy* qtWebPageProxy)
 {
     QWebPreferences* prefs = new QWebPreferences;
-    prefs->d->ref = WKPageGroupGetPreferences(pageGroupRef);
+    prefs->d->qtWebPageProxy = qtWebPageProxy;
     return prefs;
 }
 
@@ -38,23 +39,23 @@
 {
     switch (attr) {
     case AutoLoadImages:
-        return WKPreferencesGetLoadsImagesAutomatically(ref);
+        return WKPreferencesGetLoadsImagesAutomatically(preferencesRef());
     case _javascript_Enabled:
-        return WKPreferencesGetJavaScriptEnabled(ref);
+        return WKPreferencesGetJavaScriptEnabled(preferencesRef());
     case PluginsEnabled:
-        return WKPreferencesGetPluginsEnabled(ref);
+        return WKPreferencesGetPluginsEnabled(preferencesRef());
     case OfflineWebApplicationCacheEnabled:
-        return WKPreferencesGetOfflineWebApplicationCacheEnabled(ref);
+        return WKPreferencesGetOfflineWebApplicationCacheEnabled(preferencesRef());
     case LocalStorageEnabled:
-        return WKPreferencesGetLocalStorageEnabled(ref);
+        return WKPreferencesGetLocalStorageEnabled(preferencesRef());
     case XSSAuditingEnabled:
-        return WKPreferencesGetXSSAuditorEnabled(ref);
+        return WKPreferencesGetXSSAuditorEnabled(preferencesRef());
     case PrivateBrowsingEnabled:
-        return WKPreferencesGetPrivateBrowsingEnabled(ref);
+        return WKPreferencesGetPrivateBrowsingEnabled(preferencesRef());
     case DnsPrefetchEnabled:
-        return WKPreferencesGetDNSPrefetchingEnabled(ref);
+        return WKPreferencesGetDNSPrefetchingEnabled(preferencesRef());
     case AcceleratedCompositingEnabled:
-        return WKPreferencesGetAcceleratedCompositingEnabled(ref);
+        return WKPreferencesGetAcceleratedCompositingEnabled(preferencesRef());
     default:
         ASSERT_NOT_REACHED();
         return false;
@@ -65,31 +66,31 @@
 {
     switch (attr) {
     case AutoLoadImages:
-        WKPreferencesSetLoadsImagesAutomatically(ref, enable);
+        WKPreferencesSetLoadsImagesAutomatically(preferencesRef(), enable);
         break;
     case _javascript_Enabled:
-        WKPreferencesSetJavaScriptEnabled(ref, enable);
+        WKPreferencesSetJavaScriptEnabled(preferencesRef(), enable);
         break;
     case PluginsEnabled:
-        WKPreferencesSetPluginsEnabled(ref, enable);
+        WKPreferencesSetPluginsEnabled(preferencesRef(), enable);
         break;
     case OfflineWebApplicationCacheEnabled:
-        WKPreferencesSetOfflineWebApplicationCacheEnabled(ref, enable);
+        WKPreferencesSetOfflineWebApplicationCacheEnabled(preferencesRef(), enable);
         break;
     case LocalStorageEnabled:
-        WKPreferencesSetLocalStorageEnabled(ref, enable);
+        WKPreferencesSetLocalStorageEnabled(preferencesRef(), enable);
         break;
     case XSSAuditingEnabled:
-        WKPreferencesSetXSSAuditorEnabled(ref, enable);
+        WKPreferencesSetXSSAuditorEnabled(preferencesRef(), enable);
         break;
     case PrivateBrowsingEnabled:
-        WKPreferencesSetPrivateBrowsingEnabled(ref, enable);
+        WKPreferencesSetPrivateBrowsingEnabled(preferencesRef(), enable);
         break;
     case DnsPrefetchEnabled:
-        WKPreferencesSetDNSPrefetchingEnabled(ref, enable);
+        WKPreferencesSetDNSPrefetchingEnabled(preferencesRef(), enable);
         break;
     case AcceleratedCompositingEnabled:
-        WKPreferencesSetAcceleratedCompositingEnabled(ref, enable);
+        WKPreferencesSetAcceleratedCompositingEnabled(preferencesRef(), enable);
         break;
     default:
         ASSERT_NOT_REACHED();
@@ -100,22 +101,22 @@
 {
     switch (which) {
     case StandardFont:
-        WKPreferencesSetStandardFontFamily(ref, WKStringCreateWithQString(family));
+        WKPreferencesSetStandardFontFamily(preferencesRef(), WKStringCreateWithQString(family));
         break;
     case FixedFont:
-        WKPreferencesSetFixedFontFamily(ref, WKStringCreateWithQString(family));
+        WKPreferencesSetFixedFontFamily(preferencesRef(), WKStringCreateWithQString(family));
         break;
     case SerifFont:
-        WKPreferencesSetSerifFontFamily(ref, WKStringCreateWithQString(family));
+        WKPreferencesSetSerifFontFamily(preferencesRef(), WKStringCreateWithQString(family));
         break;
     case SansSerifFont:
-        WKPreferencesSetSansSerifFontFamily(ref, WKStringCreateWithQString(family));
+        WKPreferencesSetSansSerifFontFamily(preferencesRef(), WKStringCreateWithQString(family));
         break;
     case CursiveFont:
-        WKPreferencesSetCursiveFontFamily(ref, WKStringCreateWithQString(family));
+        WKPreferencesSetCursiveFontFamily(preferencesRef(), WKStringCreateWithQString(family));
         break;
     case FantasyFont:
-        WKPreferencesSetFantasyFontFamily(ref, WKStringCreateWithQString(family));
+        WKPreferencesSetFantasyFontFamily(preferencesRef(), WKStringCreateWithQString(family));
         break;
     default:
         break;
@@ -126,27 +127,27 @@
 {
     switch (which) {
     case StandardFont: {
-        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyStandardFontFamily(ref));
+        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyStandardFontFamily(preferencesRef()));
         return WKStringCopyQString(stringRef.get());
     }
     case FixedFont: {
-        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFixedFontFamily(ref));
+        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFixedFontFamily(preferencesRef()));
         return WKStringCopyQString(stringRef.get());
     }
     case SerifFont: {
-        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySerifFontFamily(ref));
+        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySerifFontFamily(preferencesRef()));
         return WKStringCopyQString(stringRef.get());
     }
     case SansSerifFont: {
-        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySansSerifFontFamily(ref));
+        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopySansSerifFontFamily(preferencesRef()));
         return WKStringCopyQString(stringRef.get());
     }
     case CursiveFont: {
-        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyCursiveFontFamily(ref));
+        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyCursiveFontFamily(preferencesRef()));
         return WKStringCopyQString(stringRef.get());
     }
     case FantasyFont: {
-        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFantasyFontFamily(ref));
+        WKRetainPtr<WKStringRef> stringRef(AdoptWK, WKPreferencesCopyFantasyFontFamily(preferencesRef()));
         return WKStringCopyQString(stringRef.get());
     }
     default:
@@ -158,13 +159,13 @@
 {
     switch (type) {
     case MinimumFontSize:
-         WKPreferencesSetMinimumFontSize(ref, size);
+         WKPreferencesSetMinimumFontSize(preferencesRef(), size);
          break;
     case DefaultFontSize:
-         WKPreferencesSetDefaultFontSize(ref, size);
+         WKPreferencesSetDefaultFontSize(preferencesRef(), size);
          break;
     case DefaultFixedFontSize:
-         WKPreferencesSetDefaultFixedFontSize(ref, size);
+         WKPreferencesSetDefaultFixedFontSize(preferencesRef(), size);
          break;
     default:
         ASSERT_NOT_REACHED();
@@ -175,11 +176,11 @@
 {
     switch (type) {
     case MinimumFontSize:
-         return WKPreferencesGetMinimumFontSize(ref);
+         return WKPreferencesGetMinimumFontSize(preferencesRef());
     case DefaultFontSize:
-         return WKPreferencesGetDefaultFontSize(ref);
+         return WKPreferencesGetDefaultFontSize(preferencesRef());
     case DefaultFixedFontSize:
-         return WKPreferencesGetDefaultFixedFontSize(ref);
+         return WKPreferencesGetDefaultFixedFontSize(preferencesRef());
     default:
         ASSERT_NOT_REACHED();
         return false;
@@ -383,6 +384,12 @@
     emit defaultFixedFontSizeChanged();
 }
 
+WKPreferencesRef QWebPreferencesPrivate::preferencesRef() const
+{
+    WKPageGroupRef pageGroupRef = WKPageGetPageGroup(qtWebPageProxy->pageRef());
+    return WKPageGroupGetPreferences(pageGroupRef);
+}
+
 QWebPreferencesPrivate* QWebPreferencesPrivate::get(QWebPreferences* preferences)
 {
     return preferences->d;

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences.h (98850 => 98851)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences.h	2011-10-31 12:45:40 UTC (rev 98850)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences.h	2011-10-31 13:51:19 UTC (rev 98851)
@@ -29,6 +29,8 @@
 class QWEBKIT_EXPORT QWebPreferences : public QObject {
     Q_OBJECT
 public:
+    ~QWebPreferences();
+
     Q_PROPERTY(bool autoLoadImages READ autoLoadImages WRITE setAutoLoadImages NOTIFY autoLoadImagesChanged FINAL)
     Q_PROPERTY(bool _javascript_Enabled READ _javascript_Enabled WRITE setJavascriptEnabled NOTIFY _javascript_EnabledChanged FINAL)
     Q_PROPERTY(bool pluginsEnabled READ pluginsEnabled WRITE setPluginsEnabled NOTIFY pluginsEnabledChanged FINAL)
@@ -125,7 +127,6 @@
     Q_DISABLE_COPY(QWebPreferences)
 
     QWebPreferences();
-    ~QWebPreferences();
 
     QWebPreferencesPrivate *d;
 

Modified: trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h (98850 => 98851)


--- trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h	2011-10-31 12:45:40 UTC (rev 98850)
+++ trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p.h	2011-10-31 13:51:19 UTC (rev 98851)
@@ -19,6 +19,8 @@
 
 #include "WKPreferences.h"
 
+class QtWebPageProxy;
+
 class QWebPreferencesPrivate {
 public:
 
@@ -50,7 +52,7 @@
         DefaultFixedFontSize
     };
 
-    static QWebPreferences* createPreferences(WKPageGroupRef);
+    static QWebPreferences* createPreferences(QtWebPageProxy*);
 
     void setAttribute(WebAttribute attr, bool enable);
     bool testAttribute(WebAttribute attr) const;
@@ -61,7 +63,9 @@
     void setFontSize(FontSizeType type, unsigned size);
     unsigned fontSize(FontSizeType type) const;
 
-    WKPreferencesRef ref;
+    WKPreferencesRef preferencesRef() const;
 
+    QtWebPageProxy* qtWebPageProxy;
+
     static QWebPreferencesPrivate* get(QWebPreferences*);
 };

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp (98850 => 98851)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp	2011-10-31 12:45:40 UTC (rev 98850)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp	2011-10-31 13:51:19 UTC (rev 98851)
@@ -22,6 +22,7 @@
 #include "QtWebPageProxy.h"
 
 #include "QtWebError.h"
+#include "qwebpreferences.h"
 #include "qwebpreferences_p.h"
 
 #include "ClientImpl.h"
@@ -104,7 +105,6 @@
     : m_viewInterface(viewInterface)
     , m_policyInterface(policyInterface)
     , m_context(contextRef ? toImpl(contextRef) : defaultWKContext())
-    , m_preferences(0)
     , m_undoStack(adoptPtr(new QUndoStack(this)))
     , m_loadProgress(0)
 {
@@ -459,12 +459,9 @@
 
 QWebPreferences* QtWebPageProxy::preferences() const
 {
-    if (!m_preferences) {
-        WKPageGroupRef pageGroupRef = WKPageGetPageGroup(pageRef());
-        m_preferences = QWebPreferencesPrivate::createPreferences(pageGroupRef);
-    }
-
-    return m_preferences;
+    if (!m_preferences)
+        m_preferences = adoptPtr(QWebPreferencesPrivate::createPreferences(const_cast<QtWebPageProxy*>(this)));
+    return m_preferences.get();
 }
 
 void QtWebPageProxy::setCustomUserAgent(const QString& userAgent)

Modified: trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h (98850 => 98851)


--- trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h	2011-10-31 12:45:40 UTC (rev 98850)
+++ trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h	2011-10-31 13:51:19 UTC (rev 98851)
@@ -201,7 +201,7 @@
     RefPtr<WebContext> m_context;
     QWKHistory* m_history;
 
-    mutable QWebPreferences* m_preferences;
+    mutable OwnPtr<QWebPreferences> m_preferences;
 
     OwnPtr<QUndoStack> m_undoStack;
     int m_loadProgress;
_______________________________________________
webkit-changes mailing list
[email protected]
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes

Reply via email to