[SCM] WebKit Debian packaging branch, webkit-1.3, updated. upstream/1.3.7-4207-g178b198
kbalazs at webkit.org
kbalazs at webkit.org
Sun Feb 20 22:47:16 UTC 2011
The following commit has been merged in the webkit-1.3 branch:
commit ff0f85836e38902ffc64e8f37f322c653e84598d
Author: kbalazs at webkit.org <kbalazs at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Jan 11 17:22:23 2011 +0000
2011-01-11 Anders Carlsson <andersca at apple.com>
Reviewed by Andreas Kling.
Work towards having the WebPageProxy decide when to create the DrawingAreaProxy
https://bugs.webkit.org/show_bug.cgi?id=52184
Qt part made my Balazs Kelemen.
* UIProcess/API/mac/PageClientImpl.h:
* UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::createDrawingAreaProxy):
Call -[WKView _createDrawingAreaProxy].
(WebKit::PageClientImpl::setViewNeedsDisplay):
Call setNeedsDisplayInRect on the WKView.
* UIProcess/API/mac/WKView.mm:
(-[WKView initWithFrame:contextRef:pageGroupRef:]):
No need to set the drawing area proxy anymore.
(-[WKView _createDrawingAreaProxy]):
Create a chunked update drawing area proxy for now.
* UIProcess/API/qt/qgraphicswkview.cpp:
Added a QGraphicsItem* member that is initialized in init to the accociated view.
Implement the new functions. This is a temporary solution, in the long term the view
and the page should be decoupled.
(QGraphicsWKView::QGraphicsWKView):
* UIProcess/API/qt/qwkpage.cpp:
(QWKPagePrivate::QWKPagePrivate):
(QWKPagePrivate::init):
(QWKPagePrivate::createDrawingAreaProxy):
(QWKPagePrivate::setViewNeedsDisplay):
* UIProcess/API/qt/qwkpage.h:
* UIProcess/API/qt/qwkpage_p.h:
* UIProcess/PageClient.h:
Add new pure virtual member functions.
* UIProcess/WebPageProxy.cpp:
(WebKit::WebPageProxy::initializeWebPage):
(WebKit::WebPageProxy::reinitializeWebPage):
Set the new drawing area proxy.
* UIProcess/win/WebView.cpp:
(WebKit::WebView::WebView):
No need to set the drawing area proxy anymore.
(WebKit::WebView::createDrawingAreaProxy):
Create a chunked update drawing area proxy for now.
(WebKit::WebView::setViewNeedsDisplay):
Invalidate the window.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@75506 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebKit2/ChangeLog b/WebKit2/ChangeLog
index 78ed3a2..6c90327 100644
--- a/WebKit2/ChangeLog
+++ b/WebKit2/ChangeLog
@@ -1,3 +1,58 @@
+2011-01-11 Anders Carlsson <andersca at apple.com>
+
+ Reviewed by Andreas Kling.
+
+ Work towards having the WebPageProxy decide when to create the DrawingAreaProxy
+ https://bugs.webkit.org/show_bug.cgi?id=52184
+
+ Qt part made my Balazs Kelemen.
+
+ * UIProcess/API/mac/PageClientImpl.h:
+ * UIProcess/API/mac/PageClientImpl.mm:
+ (WebKit::PageClientImpl::createDrawingAreaProxy):
+ Call -[WKView _createDrawingAreaProxy].
+
+ (WebKit::PageClientImpl::setViewNeedsDisplay):
+ Call setNeedsDisplayInRect on the WKView.
+
+ * UIProcess/API/mac/WKView.mm:
+ (-[WKView initWithFrame:contextRef:pageGroupRef:]):
+ No need to set the drawing area proxy anymore.
+
+ (-[WKView _createDrawingAreaProxy]):
+ Create a chunked update drawing area proxy for now.
+
+ * UIProcess/API/qt/qgraphicswkview.cpp:
+ Added a QGraphicsItem* member that is initialized in init to the accociated view.
+ Implement the new functions. This is a temporary solution, in the long term the view
+ and the page should be decoupled.
+ (QGraphicsWKView::QGraphicsWKView):
+ * UIProcess/API/qt/qwkpage.cpp:
+ (QWKPagePrivate::QWKPagePrivate):
+ (QWKPagePrivate::init):
+ (QWKPagePrivate::createDrawingAreaProxy):
+ (QWKPagePrivate::setViewNeedsDisplay):
+ * UIProcess/API/qt/qwkpage.h:
+ * UIProcess/API/qt/qwkpage_p.h:
+
+ * UIProcess/PageClient.h:
+ Add new pure virtual member functions.
+
+ * UIProcess/WebPageProxy.cpp:
+ (WebKit::WebPageProxy::initializeWebPage):
+ (WebKit::WebPageProxy::reinitializeWebPage):
+ Set the new drawing area proxy.
+
+ * UIProcess/win/WebView.cpp:
+ (WebKit::WebView::WebView):
+ No need to set the drawing area proxy anymore.
+
+ (WebKit::WebView::createDrawingAreaProxy):
+ Create a chunked update drawing area proxy for now.
+
+ (WebKit::WebView::setViewNeedsDisplay):
+ Invalidate the window.
+
2011-01-11 Adam Roben <aroben at apple.com>
Fix a typo in a comment
diff --git a/WebKit2/UIProcess/API/mac/PageClientImpl.h b/WebKit2/UIProcess/API/mac/PageClientImpl.h
index a8752c0..609039f 100644
--- a/WebKit2/UIProcess/API/mac/PageClientImpl.h
+++ b/WebKit2/UIProcess/API/mac/PageClientImpl.h
@@ -48,6 +48,9 @@ public:
private:
PageClientImpl(WKView*);
+ virtual PassOwnPtr<DrawingAreaProxy> createDrawingAreaProxy();
+ virtual void setViewNeedsDisplay(const WebCore::IntRect&);
+
virtual WebCore::IntSize viewSize();
virtual bool isViewWindowActive();
virtual bool isViewFocused();
diff --git a/WebKit2/UIProcess/API/mac/PageClientImpl.mm b/WebKit2/UIProcess/API/mac/PageClientImpl.mm
index 8779f2f..ae59eba 100644
--- a/WebKit2/UIProcess/API/mac/PageClientImpl.mm
+++ b/WebKit2/UIProcess/API/mac/PageClientImpl.mm
@@ -118,6 +118,16 @@ PageClientImpl::~PageClientImpl()
{
}
+PassOwnPtr<DrawingAreaProxy> PageClientImpl::createDrawingAreaProxy()
+{
+ return [m_wkView _createDrawingAreaProxy];
+}
+
+void PageClientImpl::setViewNeedsDisplay(const WebCore::IntRect& rect)
+{
+ [m_wkView setNeedsDisplayInRect:rect];
+}
+
IntSize PageClientImpl::viewSize()
{
return IntSize([m_wkView bounds].size);
diff --git a/WebKit2/UIProcess/API/mac/WKView.mm b/WebKit2/UIProcess/API/mac/WKView.mm
index 7c2dfeb..5322d7e 100644
--- a/WebKit2/UIProcess/API/mac/WKView.mm
+++ b/WebKit2/UIProcess/API/mac/WKView.mm
@@ -166,7 +166,6 @@ typedef HashMap<String, ValidationVector> ValidationMap;
_data->_pageClient = PageClientImpl::create(self);
_data->_page = toImpl(contextRef)->createWebPage(_data->_pageClient.get(), toImpl(pageGroupRef));
- _data->_page->setDrawingArea(ChunkedUpdateDrawingAreaProxy::create(self, _data->_page.get()));
_data->_page->initializeWebPage();
WebContext::statistics().wkViewCount++;
@@ -1199,6 +1198,11 @@ static void extractUnderlines(NSAttributedString *string, Vector<CompositionUnde
@implementation WKView (Internal)
+- (PassOwnPtr<WebKit::DrawingAreaProxy>)_createDrawingAreaProxy
+{
+ return ChunkedUpdateDrawingAreaProxy::create(self, _data->_page.get());
+}
+
- (BOOL)_isFocused
{
if (_data->_inBecomeFirstResponder)
diff --git a/WebKit2/UIProcess/API/mac/WKViewInternal.h b/WebKit2/UIProcess/API/mac/WKViewInternal.h
index 4939d91..1c70b38 100644
--- a/WebKit2/UIProcess/API/mac/WKViewInternal.h
+++ b/WebKit2/UIProcess/API/mac/WKViewInternal.h
@@ -28,10 +28,12 @@
#import <WebCore/KeyboardEvent.h>
namespace WebKit {
+ class DrawingAreaProxy;
class FindIndicator;
}
@interface WKView (Internal)
+- (PassOwnPtr<WebKit::DrawingAreaProxy>)_createDrawingAreaProxy;
- (BOOL)_isFocused;
- (void)_processDidCrash;
- (void)_didRelaunchProcess;
diff --git a/WebKit2/UIProcess/API/qt/qgraphicswkview.cpp b/WebKit2/UIProcess/API/qt/qgraphicswkview.cpp
index 4a2e6b1..44cdfa9 100644
--- a/WebKit2/UIProcess/API/qt/qgraphicswkview.cpp
+++ b/WebKit2/UIProcess/API/qt/qgraphicswkview.cpp
@@ -83,7 +83,7 @@ QGraphicsWKView::QGraphicsWKView(QWKContext* context, BackingStoreType backingSt
break;
}
- d->page->d->init(size().toSize(), drawingAreaProxy);
+ d->page->d->init(this, size().toSize(), drawingAreaProxy);
connect(d->page, SIGNAL(titleChanged(QString)), this, SIGNAL(titleChanged(QString)));
connect(d->page, SIGNAL(loadStarted()), this, SIGNAL(loadStarted()));
connect(d->page, SIGNAL(loadFinished(bool)), this, SIGNAL(loadFinished(bool)));
diff --git a/WebKit2/UIProcess/API/qt/qwkpage.cpp b/WebKit2/UIProcess/API/qt/qwkpage.cpp
index 99ee617..507e8d3 100644
--- a/WebKit2/UIProcess/API/qt/qwkpage.cpp
+++ b/WebKit2/UIProcess/API/qt/qwkpage.cpp
@@ -23,7 +23,9 @@
#include "qwkpreferences_p.h"
+#include "ChunkedUpdateDrawingAreaProxy.h"
#include "ClientImpl.h"
+#include "qgraphicswkview.h"
#include "qwkcontext.h"
#include "qwkcontext_p.h"
#include "qwkhistory.h"
@@ -31,6 +33,7 @@
#include "FindIndicator.h"
#include "LocalizedStrings.h"
#include "NativeWebKeyboardEvent.h"
+#include "TiledDrawingAreaProxy.h"
#include "WebContext.h"
#include "WebContextMenuProxyQt.h"
#include "WebEventFactoryQt.h"
@@ -81,6 +84,7 @@ static WebCore::ContextMenuAction contextMenuActionForWebAction(QWKPage::WebActi
QWKPagePrivate::QWKPagePrivate(QWKPage* qq, QWKContext* c)
: q(qq)
+ , view(0)
, context(c)
, preferences(0)
, createNewPageFn(0)
@@ -96,8 +100,9 @@ QWKPagePrivate::~QWKPagePrivate()
delete history;
}
-void QWKPagePrivate::init(const QSize& viewportSize, PassOwnPtr<DrawingAreaProxy> proxy)
+void QWKPagePrivate::init(QGraphicsItem* view, const QSize& viewportSize, PassOwnPtr<DrawingAreaProxy> proxy)
{
+ this->view = view;
page->setDrawingArea(proxy);
page->initializeWebPage();
}
@@ -120,6 +125,23 @@ void QWKPagePrivate::takeFocus(bool direction)
emit q->focusNextPrevChild(direction);
}
+PassOwnPtr<DrawingAreaProxy> QWKPagePrivate::createDrawingAreaProxy()
+{
+ // FIXME: We should avoid this cast by decoupling the view from the page.
+ QGraphicsWKView* wkView = static_cast<QGraphicsWKView*>(view);
+
+#if ENABLE(TILED_BACKING_STORE)
+ if (page->drawingArea()->info().type == DrawingAreaInfo::Tiled)
+ return TiledDrawingAreaProxy::create(wkView, page.get());
+#endif
+ return ChunkedUpdateDrawingAreaProxy::create(wkView, page.get());
+}
+
+void QWKPagePrivate::setViewNeedsDisplay(const WebCore::IntRect& rect)
+{
+ view->update(QRect(rect));
+}
+
WebCore::IntSize QWKPagePrivate::viewSize()
{
// FIXME: Implement.
diff --git a/WebKit2/UIProcess/API/qt/qwkpage.h b/WebKit2/UIProcess/API/qt/qwkpage.h
index 554ad8e..e0bb4c3 100644
--- a/WebKit2/UIProcess/API/qt/qwkpage.h
+++ b/WebKit2/UIProcess/API/qt/qwkpage.h
@@ -12,6 +12,7 @@
#include <WebKit2/WKPage.h>
class QCursor;
+class QGraphicsItem;
class QWKContext;
class QWKGraphicsWidget;
class QWKPreferences;
diff --git a/WebKit2/UIProcess/API/qt/qwkpage_p.h b/WebKit2/UIProcess/API/qt/qwkpage_p.h
index bbae5d6..52726c0 100644
--- a/WebKit2/UIProcess/API/qt/qwkpage_p.h
+++ b/WebKit2/UIProcess/API/qt/qwkpage_p.h
@@ -31,6 +31,7 @@
#include <QGraphicsView>
#include <QKeyEvent>
+class QGraphicsWKView;
class QWKPreferences;
class QWKPagePrivate : WebKit::PageClient {
@@ -40,9 +41,12 @@ public:
static QWKPagePrivate* get(QWKPage* page) { return page->d; }
- void init(const QSize& viewportSize, WTF::PassOwnPtr<WebKit::DrawingAreaProxy>);
+ void init(QGraphicsItem*, const QSize& viewportSize, WTF::PassOwnPtr<WebKit::DrawingAreaProxy>);
// PageClient
+ virtual PassOwnPtr<WebKit::DrawingAreaProxy> createDrawingAreaProxy();
+ virtual void setViewNeedsDisplay(const WebCore::IntRect&);
+
virtual WebCore::IntSize viewSize();
virtual bool isViewWindowActive();
virtual bool isViewFocused();
@@ -99,6 +103,7 @@ public:
QWKPage* q;
+ QGraphicsItem* view;
QWKContext* context;
QWKHistory* history;
diff --git a/WebKit2/UIProcess/PageClient.h b/WebKit2/UIProcess/PageClient.h
index 2af6677..f413342 100644
--- a/WebKit2/UIProcess/PageClient.h
+++ b/WebKit2/UIProcess/PageClient.h
@@ -37,6 +37,7 @@ namespace WebCore {
namespace WebKit {
+class DrawingAreaProxy;
class FindIndicator;
class NativeWebKeyboardEvent;
class NativeWebKeyboardEvent;
@@ -48,6 +49,12 @@ class PageClient {
public:
virtual ~PageClient() { }
+ // Create a new drawing area proxy for the given page.
+ virtual PassOwnPtr<DrawingAreaProxy> createDrawingAreaProxy() = 0;
+
+ // Tell the view to invalidate the given rect. The rect is in view coordinates.
+ virtual void setViewNeedsDisplay(const WebCore::IntRect&) = 0;
+
// Return the size of the view the page is associated with.
virtual WebCore::IntSize viewSize() = 0;
diff --git a/WebKit2/UIProcess/WebPageProxy.cpp b/WebKit2/UIProcess/WebPageProxy.cpp
index df0b071..703ebef 100644
--- a/WebKit2/UIProcess/WebPageProxy.cpp
+++ b/WebKit2/UIProcess/WebPageProxy.cpp
@@ -218,6 +218,7 @@ void WebPageProxy::initializeWebPage()
return;
}
+ m_drawingArea = m_pageClient->createDrawingAreaProxy();
ASSERT(m_drawingArea);
process()->send(Messages::WebProcess::CreateWebPage(m_pageID, creationParameters()), 0);
@@ -228,6 +229,7 @@ void WebPageProxy::reinitializeWebPage(const WebCore::IntSize& size)
if (!isValid())
return;
+ m_drawingArea = m_pageClient->createDrawingAreaProxy();
ASSERT(m_drawingArea);
process()->send(Messages::WebProcess::CreateWebPage(m_pageID, creationParameters()), 0);
diff --git a/WebKit2/UIProcess/win/WebView.cpp b/WebKit2/UIProcess/win/WebView.cpp
index c49637a..c22d54d 100644
--- a/WebKit2/UIProcess/win/WebView.cpp
+++ b/WebKit2/UIProcess/win/WebView.cpp
@@ -236,7 +236,6 @@ WebView::WebView(RECT rect, WebContext* context, WebPageGroup* pageGroup, HWND p
registerWebViewWindowClass();
m_page = context->createWebPage(this, pageGroup);
- m_page->setDrawingArea(ChunkedUpdateDrawingAreaProxy::create(this, m_page.get()));
m_window = ::CreateWindowEx(0, kWebKit2WebViewWindowClassName, 0, WS_CHILD | WS_CLIPSIBLINGS | WS_CLIPCHILDREN,
rect.top, rect.left, rect.right - rect.left, rect.bottom - rect.top, parentWindow ? parentWindow : HWND_MESSAGE, 0, instanceHandle(), this);
@@ -575,6 +574,17 @@ void WebView::close()
// PageClient
+PassOwnPtr<DrawingAreaProxy> WebView::createDrawingAreaProxy()
+{
+ return ChunkedUpdateDrawingAreaProxy::create(this, m_page.get());
+}
+
+void WebView::setViewNeedsDisplay(const WebCore::IntRect& rect)
+{
+ RECT r = rect;
+ ::InvalidateRect(m_window, &r, false);
+}
+
WebCore::IntSize WebView::viewSize()
{
RECT clientRect;
diff --git a/WebKit2/UIProcess/win/WebView.h b/WebKit2/UIProcess/win/WebView.h
index bfff344..8bf8a5c 100644
--- a/WebKit2/UIProcess/win/WebView.h
+++ b/WebKit2/UIProcess/win/WebView.h
@@ -104,6 +104,8 @@ private:
void updateNativeCursor();
// PageClient
+ virtual PassOwnPtr<DrawingAreaProxy> createDrawingAreaProxy();
+ virtual void setViewNeedsDisplay(const WebCore::IntRect&);
virtual WebCore::IntSize viewSize();
virtual bool isViewWindowActive();
virtual bool isViewFocused();
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list