Changeset 102809 in webkit


Ignore:
Timestamp:
Dec 14, 2011 12:00:22 PM (12 years ago)
Author:
caio.oliveira@openbossa.org
Message:

[Qt] [WK2] Move QWebPreferences out of QtWebPageProxy
https://bugs.webkit.org/show_bug.cgi?id=74525

Reviewed by Luiz Agostini.

This patch also uses internal WebKit API to set the Accelerate Compositing
directly instead of going thru QWebPreferencesPrivate. The previous approach was
always causing the QWebPreferences to be created making the "lazy initialization"
useless.

  • UIProcess/API/qt/qquickwebview.cpp:

(QQuickWebViewPrivate::QQuickWebViewPrivate):
(QQuickWebViewPrivate::initialize):
(QQuickWebViewPrivate::navigatorQtObjectEnabled):
(QQuickWebViewPrivate::setNavigatorQtObjectEnabled):
(QQuickWebViewExperimental::postMessage):
(QQuickWebView::preferences):

  • UIProcess/API/qt/qquickwebview_p_p.h:
  • UIProcess/API/qt/qwebpreferences.cpp:

(QWebPreferencesPrivate::createPreferences):
(QWebPreferencesPrivate::testAttribute):
(QWebPreferencesPrivate::setAttribute):
(QWebPreferences::navigatorQtObjectEnabled):
(QWebPreferences::setNavigatorQtObjectEnabled):
(QWebPreferencesPrivate::preferencesRef):

  • UIProcess/API/qt/qwebpreferences_p_p.h:
  • UIProcess/qt/QtWebPageProxy.cpp:

(QtWebPageProxy::QtWebPageProxy):

  • UIProcess/qt/QtWebPageProxy.h:
Location:
trunk/Source/WebKit2
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r102804 r102809  
     12011-12-14  Caio Marcelo de Oliveira Filho  <caio.oliveira@openbossa.org>
     2
     3        [Qt] [WK2] Move QWebPreferences out of QtWebPageProxy
     4        https://bugs.webkit.org/show_bug.cgi?id=74525
     5
     6        Reviewed by Luiz Agostini.
     7
     8        This patch also uses internal WebKit API to set the Accelerate Compositing
     9        directly instead of going thru QWebPreferencesPrivate. The previous approach was
     10        always causing the QWebPreferences to be created making the "lazy initialization"
     11        useless.
     12
     13        * UIProcess/API/qt/qquickwebview.cpp:
     14        (QQuickWebViewPrivate::QQuickWebViewPrivate):
     15        (QQuickWebViewPrivate::initialize):
     16        (QQuickWebViewPrivate::navigatorQtObjectEnabled):
     17        (QQuickWebViewPrivate::setNavigatorQtObjectEnabled):
     18        (QQuickWebViewExperimental::postMessage):
     19        (QQuickWebView::preferences):
     20        * UIProcess/API/qt/qquickwebview_p_p.h:
     21        * UIProcess/API/qt/qwebpreferences.cpp:
     22        (QWebPreferencesPrivate::createPreferences):
     23        (QWebPreferencesPrivate::testAttribute):
     24        (QWebPreferencesPrivate::setAttribute):
     25        (QWebPreferences::navigatorQtObjectEnabled):
     26        (QWebPreferences::setNavigatorQtObjectEnabled):
     27        (QWebPreferencesPrivate::preferencesRef):
     28        * UIProcess/API/qt/qwebpreferences_p_p.h:
     29        * UIProcess/qt/QtWebPageProxy.cpp:
     30        (QtWebPageProxy::QtWebPageProxy):
     31        * UIProcess/qt/QtWebPageProxy.h:
     32
    1332011-12-14  Carlos Garcia Campos  <cgarcia@igalia.com>
    234
  • trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview.cpp

    r102779 r102809  
    3939#include "qwebnavigationhistory_p.h"
    4040#include "qwebnavigationhistory_p_p.h"
     41#include "qwebpreferences_p.h"
    4142#include "qwebpreferences_p_p.h"
    4243
     
    5657    , isTransitioningToNewPage(false)
    5758    , pageIsSuspended(false)
     59    , m_navigatorQtObjectEnabled(false)
    5860{
    5961    viewport->setFlags(QQuickItem::ItemClipsChildrenToShape);
     
    8385    // Any page setting should preferrable be set before creating the page, so set them here:
    8486    setUseTraditionalDesktopBehaviour(false);
    85     QWebPreferencesPrivate::get(pageProxy->preferences())->setAttribute(QWebPreferencesPrivate::AcceleratedCompositingEnabled, true);
     87    webPageProxy()->pageGroup()->preferences()->setAcceleratedCompositingEnabled(true);
    8688
    8789    pageClient.initialize(q_ptr, pageProxy.data(), pageViewPrivate->eventHandler.data(), &undoController);
     
    471473}
    472474
     475bool QQuickWebViewPrivate::navigatorQtObjectEnabled() const
     476{
     477    return m_navigatorQtObjectEnabled;
     478}
     479
     480void QQuickWebViewPrivate::setNavigatorQtObjectEnabled(bool enabled)
     481{
     482    ASSERT(enabled != m_navigatorQtObjectEnabled);
     483    // FIXME: Currently we have to keep this information in both processes and the setting is asynchronous.
     484    m_navigatorQtObjectEnabled = enabled;
     485    context->setNavigatorQtObjectEnabled(webPageProxy(), enabled);
     486}
     487
    473488// FIXME: Remove this once QtWebPageProxy is removed.
    474489WebKit::WebPageProxy* QQuickWebViewPrivate::webPageProxy() const
     
    546561{
    547562    Q_D(QQuickWebView);
    548     d->pageProxy->postMessageToNavigatorQtObject(message);
     563    d->context->postMessageToNavigatorQtObject(d->webPageProxy(), message);
    549564}
    550565
     
    741756QWebPreferences* QQuickWebView::preferences() const
    742757{
    743     Q_D(const QQuickWebView);
    744     return d->pageProxy->preferences();
     758    QQuickWebViewPrivate* d = const_cast<QQuickWebViewPrivate*>(d_ptr.data());
     759    if (!d->preferences)
     760        d->preferences = adoptPtr(QWebPreferencesPrivate::createPreferences(d));
     761    return d->preferences.get();
    745762}
    746763
  • trunk/Source/WebKit2/UIProcess/API/qt/qquickwebview_p_p.h

    r102779 r102809  
    9898    void setViewInAttachedProperties(QObject*);
    9999
     100    bool navigatorQtObjectEnabled() const;
     101    void setNavigatorQtObjectEnabled(bool);
     102
    100103    WebKit::WebPageProxy* webPageProxy() const;
    101104
     
    145148    QtWebUndoController undoController;
    146149    OwnPtr<QWebNavigationHistory> navigationHistory;
     150    OwnPtr<QWebPreferences> preferences;
    147151
    148152    QScopedPointer<QtWebPageLoadClient> pageLoadClient;
     
    163167    WebCore::ViewportArguments viewportArguments;
    164168    OwnPtr<PostTransitionState> postTransitionState;
     169    QFileDialog* fileDialog;
     170    WKOpenPanelResultListenerRef openPanelResultListener;
     171
    165172    bool isTransitioningToNewPage;
    166173    bool pageIsSuspended;
    167174
    168175    bool useTraditionalDesktopBehaviour;
    169     QFileDialog* fileDialog;
    170     WKOpenPanelResultListenerRef openPanelResultListener;
     176    bool m_navigatorQtObjectEnabled;
    171177};
    172178
  • trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences.cpp

    r100602 r102809  
    2121#include "qwebpreferences_p.h"
    2222
    23 #include "QtWebPageProxy.h"
    2423#include "WKPageGroup.h"
    2524#include "WKPreferences.h"
     
    2726#include "WKRetainPtr.h"
    2827#include "WKStringQt.h"
     28#include "qquickwebview_p_p.h"
    2929#include "qwebpreferences_p_p.h"
    3030
    31 QWebPreferences* QWebPreferencesPrivate::createPreferences(QtWebPageProxy* qtWebPageProxy)
     31QWebPreferences* QWebPreferencesPrivate::createPreferences(QQuickWebViewPrivate* webViewPrivate)
    3232{
    3333    QWebPreferences* prefs = new QWebPreferences;
    34     prefs->d->qtWebPageProxy = qtWebPageProxy;
     34    prefs->d->webViewPrivate = webViewPrivate;
    3535    return prefs;
    3636}
     
    5555    case DnsPrefetchEnabled:
    5656        return WKPreferencesGetDNSPrefetchingEnabled(preferencesRef());
    57     case AcceleratedCompositingEnabled:
    58         return WKPreferencesGetAcceleratedCompositingEnabled(preferencesRef());
    5957    default:
    6058        ASSERT_NOT_REACHED();
     
    8987    case DnsPrefetchEnabled:
    9088        WKPreferencesSetDNSPrefetchingEnabled(preferencesRef(), enable);
    91         break;
    92     case AcceleratedCompositingEnabled:
    93         WKPreferencesSetAcceleratedCompositingEnabled(preferencesRef(), enable);
    9489        break;
    9590    default:
     
    288283bool QWebPreferences::navigatorQtObjectEnabled() const
    289284{
    290     return d->qtWebPageProxy->navigatorQtObjectEnabled();
     285    return d->webViewPrivate->navigatorQtObjectEnabled();
    291286}
    292287
     
    295290    if (enable == navigatorQtObjectEnabled())
    296291        return;
    297     d->qtWebPageProxy->setNavigatorQtObjectEnabled(enable);
     292    d->webViewPrivate->setNavigatorQtObjectEnabled(enable);
    298293    emit navigatorQtObjectEnabledChanged();
    299294}
     
    400395WKPreferencesRef QWebPreferencesPrivate::preferencesRef() const
    401396{
    402     WKPageGroupRef pageGroupRef = WKPageGetPageGroup(qtWebPageProxy->pageRef());
     397    WKPageGroupRef pageGroupRef = toAPI(webViewPrivate->webPageProxy()->pageGroup());
    403398    return WKPageGroupGetPreferences(pageGroupRef);
    404399}
  • trunk/Source/WebKit2/UIProcess/API/qt/qwebpreferences_p_p.h

    r100602 r102809  
    2323#include "WKPreferences.h"
    2424
    25 class QtWebPageProxy;
     25class QQuickWebViewPrivate;
    2626
    2727class QWebPreferencesPrivate {
     
    3737        FrameFlatteningEnabled,
    3838        PrivateBrowsingEnabled,
    39         AcceleratedCompositingEnabled,
    4039        DnsPrefetchEnabled
    4140    };
     
    5655    };
    5756
    58     static QWebPreferences* createPreferences(QtWebPageProxy*);
     57    static QWebPreferences* createPreferences(QQuickWebViewPrivate*);
    5958
    6059    void setAttribute(WebAttribute attr, bool enable);
     
    6968    WKPreferencesRef preferencesRef() const;
    7069
    71     QtWebPageProxy* qtWebPageProxy;
     70    QQuickWebViewPrivate* webViewPrivate;
    7271
    7372    static QWebPreferencesPrivate* get(QWebPreferences*);
  • trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.cpp

    r102779 r102809  
    2525#include "qquickwebview_p.h"
    2626#include "qquickwebview_p_p.h"
    27 #include "qwebpreferences_p.h"
    28 #include "qwebpreferences_p_p.h"
    2927
    3028#include "QtPageClient.h"
     
    4240    : m_qmlWebView(qmlWebView)
    4341    , m_context(context)
    44     , m_navigatorQtObjectEnabled(false)
    4542{
    4643    m_webPageProxy = m_context->createWebPage(pageClient, toImpl(pageGroupRef));
     
    9491}
    9592
    96 QWebPreferences* QtWebPageProxy::preferences() const
    97 {
    98     if (!m_preferences)
    99         m_preferences = adoptPtr(QWebPreferencesPrivate::createPreferences(const_cast<QtWebPageProxy*>(this)));
    100     return m_preferences.get();
    101 }
    102 
    10393void QtWebPageProxy::setCustomUserAgent(const QString& userAgent)
    10494{
     
    110100{
    111101    return WKStringCopyQString(WKPageCopyCustomUserAgent(pageRef()));
    112 }
    113 
    114 void QtWebPageProxy::setNavigatorQtObjectEnabled(bool enabled)
    115 {
    116     ASSERT(enabled != m_navigatorQtObjectEnabled);
    117     // FIXME: Currently we have to keep this information in both processes and the setting is asynchronous.
    118     m_navigatorQtObjectEnabled = enabled;
    119     m_context->setNavigatorQtObjectEnabled(m_webPageProxy.get(), enabled);
    120 }
    121 
    122 void QtWebPageProxy::postMessageToNavigatorQtObject(const QString& message)
    123 {
    124     m_context->postMessageToNavigatorQtObject(m_webPageProxy.get(), message);
    125102}
    126103
  • trunk/Source/WebKit2/UIProcess/qt/QtWebPageProxy.h

    r102779 r102809  
    3030class QtPageClient;
    3131class QQuickWebView;
    32 class QWebPreferences;
    3332
    3433namespace WebKit {
     
    4847    WKPageRef pageRef() const;
    4948
    50     QWebPreferences* preferences() const;
    51 
    5249    void setCustomUserAgent(const QString&);
    5350    QString customUserAgent() const;
    54 
    55     void setNavigatorQtObjectEnabled(bool);
    56     bool navigatorQtObjectEnabled() const { return m_navigatorQtObjectEnabled; }
    57 
    58     void postMessageToNavigatorQtObject(const QString&);
    5951
    6052    qreal textZoomFactor() const;
     
    8476    RefPtr<QtWebContext> m_context;
    8577
    86     mutable OwnPtr<QWebPreferences> m_preferences;
    87 
    88     bool m_navigatorQtObjectEnabled;
    89 
    9078    QSharedPointer<QMenu> activeMenu;
    9179};
Note: See TracChangeset for help on using the changeset viewer.