Source/WebKit2/ChangeLog

 12012-02-27 Caio Marcelo de Oliveira Filho <caio.oliveira@openbossa.org>
 2
 3 [Qt] API changes to QWebNavigationRequest
 4 https://bugs.webkit.org/show_bug.cgi?id=78821
 5
 6 Reviewed by NOBODY (OOPS!).
 7
 8 * UIProcess/API/qt/qwebnavigationrequest.cpp:
 9 (QWebNavigationRequestPrivate::QWebNavigationRequestPrivate):
 10 (QWebNavigationRequestPrivate):
 11 (QWebNavigationRequest::QWebNavigationRequest):
 12 (QWebNavigationRequest::setAction):
 13 (QWebNavigationRequest::mouseButton):
 14 (QWebNavigationRequest::keyboardModifiers):
 15 (QWebNavigationRequest::action):
 16 * UIProcess/API/qt/qwebnavigationrequest_p.h:
 17 * UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp:
 18 * UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_navigationRequested.qml:
 19 * UIProcess/qt/QtWebPagePolicyClient.cpp:
 20 (QtWebPagePolicyClient::decidePolicyForNavigationAction):
 21 * UIProcess/qt/QtWebPagePolicyClient.h:
 22 (QtWebPagePolicyClient):
 23
1242012-02-26 YoungTaeck Song <youngtaeck.song@samsung.com>
225
326 [EFL][WK2] Add InjectedBundleEfl.cpp

Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest.cpp

2525
2626class QWebNavigationRequestPrivate {
2727public:
28  QWebNavigationRequestPrivate(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton button,
29  Qt::KeyboardModifiers modifiers, QQuickWebView::NavigationType navigationType)
 28 QWebNavigationRequestPrivate(const QUrl& url, Qt::MouseButton mouseButton,
 29 Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType)
3030 : url(url)
31  , originatingUrl(originatingUrl)
32  , button(button)
33  , modifiers(modifiers)
 31 , mouseButton(mouseButton)
 32 , keyboardModifiers(keyboardModifiers)
3433 , action(QQuickWebView::AcceptRequest)
3534 , navigationType(navigationType)
3635 {

@@public:
4140 }
4241
4342 QUrl url;
44  QUrl originatingUrl;
45  Qt::MouseButton button;
46  Qt::KeyboardModifiers modifiers;
47  int action;
 43 Qt::MouseButton mouseButton;
 44 Qt::KeyboardModifiers keyboardModifiers;
 45 QQuickWebView::NavigationRequestAction action;
4846 QQuickWebView::NavigationType navigationType;
4947};
5048
51 QWebNavigationRequest::QWebNavigationRequest(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton button,
52  Qt::KeyboardModifiers modifiers, QQuickWebView::NavigationType navigationType, QObject* parent)
 49QWebNavigationRequest::QWebNavigationRequest(const QUrl& url, Qt::MouseButton mouseButton,
 50 Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, QObject* parent)
5351 : QObject(parent)
54  , d(new QWebNavigationRequestPrivate(url, originatingUrl, button, modifiers, navigationType))
 52 , d(new QWebNavigationRequestPrivate(url, mouseButton, keyboardModifiers, navigationType))
5553{
5654}
5755

@@QWebNavigationRequest::~QWebNavigationRequest()
6058 delete d;
6159}
6260
63 void QWebNavigationRequest::setAction(int action)
 61void QWebNavigationRequest::setAction(QQuickWebView::NavigationRequestAction action)
6462{
6563 if (d->action == action)
6664 return;

@@QUrl QWebNavigationRequest::url() const
7472 return d->url;
7573}
7674
77 QUrl QWebNavigationRequest::originatingUrl() const
 75int QWebNavigationRequest::mouseButton() const
7876{
79  return d->originatingUrl;
 77 return int(d->mouseButton);
8078}
8179
82 int QWebNavigationRequest::button() const
 80int QWebNavigationRequest::keyboardModifiers() const
8381{
84  return int(d->button);
 82 return int(d->keyboardModifiers);
8583}
8684
87 int QWebNavigationRequest::modifiers() const
 85QQuickWebView::NavigationRequestAction QWebNavigationRequest::action() const
8886{
89  return int(d->modifiers);
90 }
91 
92 int QWebNavigationRequest::action() const
93 {
94  return int(d->action);
 87 return d->action;
9588}
9689
9790QQuickWebView::NavigationType QWebNavigationRequest::navigationType() const

Source/WebKit2/UIProcess/API/qt/qwebnavigationrequest_p.h

@@class QWebNavigationRequestPrivate;
3131class QWEBKIT_EXPORT QWebNavigationRequest : public QObject {
3232 Q_OBJECT
3333 Q_PROPERTY(QUrl url READ url CONSTANT FINAL)
34  Q_PROPERTY(QUrl originatingUrl READ originatingUrl CONSTANT FINAL)
35  Q_PROPERTY(int button READ button CONSTANT FINAL)
36  Q_PROPERTY(int modifiers READ modifiers CONSTANT FINAL)
37  Q_PROPERTY(int action READ action WRITE setAction NOTIFY actionChanged FINAL)
 34 Q_PROPERTY(int mouseButton READ mouseButton CONSTANT FINAL)
 35 Q_PROPERTY(int keyboardModifiers READ keyboardModifiers CONSTANT FINAL)
 36 Q_PROPERTY(QQuickWebView::NavigationRequestAction action READ action WRITE setAction NOTIFY actionChanged FINAL)
3837 Q_PROPERTY(QQuickWebView::NavigationType navigationType READ navigationType CONSTANT FINAL)
3938
4039public:
41  QWebNavigationRequest(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton button, Qt::KeyboardModifiers modifiers,
 40 QWebNavigationRequest(const QUrl& url, Qt::MouseButton mouseButton, Qt::KeyboardModifiers keyboardModifiers,
4241 QQuickWebView::NavigationType navigationType, QObject* parent = 0);
4342 ~QWebNavigationRequest();
4443
4544 QUrl url() const;
46  QUrl originatingUrl() const;
47  int button() const;
48  int modifiers() const;
49  int action() const;
 45 int mouseButton() const;
 46 int keyboardModifiers() const;
 47 QQuickWebView::NavigationRequestAction action() const;
5048
51  void setAction(int action);
 49 void setAction(QQuickWebView::NavigationRequestAction action);
5250 QQuickWebView::NavigationType navigationType() const;
5351
5452Q_SIGNALS:

Source/WebKit2/UIProcess/API/qt/tests/publicapi/tst_publicapi.cpp

@@static QStringList expectedAPI = QStringList()
8383 << "QWebLoadRequest.errorDomain --> QQuickWebView::ErrorDomain"
8484 << "QWebLoadRequest.errorCode --> int"
8585 << "QWebNavigationRequest.url --> QUrl"
86  << "QWebNavigationRequest.originatingUrl --> QUrl"
87  << "QWebNavigationRequest.button --> int"
88  << "QWebNavigationRequest.modifiers --> int"
89  << "QWebNavigationRequest.action --> int"
 86 << "QWebNavigationRequest.mouseButton --> int"
 87 << "QWebNavigationRequest.keyboardModifiers --> int"
 88 << "QWebNavigationRequest.action --> QQuickWebView::NavigationRequestAction"
9089 << "QWebNavigationRequest.navigationType --> QQuickWebView::NavigationType"
9190 << "QWebNavigationRequest.actionChanged() --> void"
9291 ;

Source/WebKit2/UIProcess/API/qt/tests/qmltests/DesktopBehavior/tst_navigationRequested.qml

@@Item {
88 property int expectedLength: 0
99 property int totalBytes: 0
1010 property bool shouldDownload: false
11  property string originatingUrl: ""
1211 property url beginUrl: Qt.resolvedUrl("../common/test2.html")
1312 property url endUrl: Qt.resolvedUrl("../common/test1.html")
1413

@@Item {
2221 onNavigationRequested: {
2322 if (shouldDownload)
2423 request.action = WebViewExperimental.DownloadRequest
25  else if (request.button == Qt.MiddleButton && request.modifiers & Qt.ControlModifier) {
 24 else if (request.mouseButton == Qt.MiddleButton && request.keyboardModifiers & Qt.ControlModifier) {
2625 otherWebView.load(request.url)
2726 request.action = WebView.IgnoreRequest
2827 }
29  originatingUrl = request.originatingUrl
3028 }
3129
3230 experimental.onDownloadRequested: {

@@Item {
7876 downloadSpy.clear()
7977 downloadFinishedSpy.clear()
8078 shouldDownload = false
81  originatingUrl = ""
8279 }
8380
8481 function test_usePolicy() {

@@Item {
115112 compare(downloadFinishedSpy.count, 1)
116113 compare(totalBytes, expectedLength)
117114 }
118 
119  function test_originatingUrl() {
120  webView.load(beginUrl)
121  verify(webView.waitForLoadSucceeded())
122  mouseClick(webView, 100, 100, Qt.LeftButton)
123  verify(webView.waitForLoadSucceeded())
124  compare(webView.title, "Test page 1")
125  compare(webView.url, endUrl)
126  compare(originatingUrl, beginUrl)
127  }
128115 }
129116}

Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.cpp

@@QtWebPagePolicyClient::QtWebPagePolicyClient(WKPageRef pageRef, QQuickWebView* w
4141 WKPageSetPagePolicyClient(pageRef, &policyClient);
4242}
4343
44 void QtWebPagePolicyClient::decidePolicyForNavigationAction(const QUrl& url, const QUrl& originatingUrl, Qt::MouseButton mouseButton,
 44void QtWebPagePolicyClient::decidePolicyForNavigationAction(const QUrl& url, Qt::MouseButton mouseButton,
4545 Qt::KeyboardModifiers keyboardModifiers, QQuickWebView::NavigationType navigationType, WKFramePolicyListenerRef listener)
4646{
4747 // NOTE: even though the C API (and the WebKit2 IPC) supports an asynchronous answer, this is not currently working.
4848 // We are expected to call the listener immediately. See the patch for https://bugs.webkit.org/show_bug.cgi?id=53785.
49  QWebNavigationRequest navigationRequest(url, originatingUrl, mouseButton, keyboardModifiers, navigationType);
 49 QWebNavigationRequest navigationRequest(url, mouseButton, keyboardModifiers, navigationType);
5050 emit m_webView->navigationRequested(&navigationRequest);
5151
5252 switch (navigationRequest.action()) {

@@void QtWebPagePolicyClient::decidePolicyForNavigationAction(WKPageRef, WKFrameRe
123123{
124124 WKRetainPtr<WKURLRef> frameURL(AdoptWK, WKFrameCopyURL(frame));
125125 WKRetainPtr<WKURLRef> requestURL(AdoptWK, WKURLRequestCopyURL(request));
126  QUrl qUrlFrame = WKURLCopyQUrl(frameURL.get());
127126 QUrl qUrl = WKURLCopyQUrl(requestURL.get());
128  toQtWebPagePolicyClient(clientInfo)->decidePolicyForNavigationAction(qUrl, qUrlFrame, toQtMouseButton(mouseButton), toQtKeyboardModifiers(modifiers), toQuickWebViewNavigationType(navigationType), listener);
 127 toQtWebPagePolicyClient(clientInfo)->decidePolicyForNavigationAction(qUrl, toQtMouseButton(mouseButton), toQtKeyboardModifiers(modifiers), toQuickWebViewNavigationType(navigationType), listener);
129128}
130129
131130void QtWebPagePolicyClient::decidePolicyForResponse(WKPageRef page, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef, const void*)

Source/WebKit2/UIProcess/qt/QtWebPagePolicyClient.h

@@public:
3131 QtWebPagePolicyClient(WKPageRef, QQuickWebView*);
3232
3333private:
34  void decidePolicyForNavigationAction(const QUrl&, const QUrl&, Qt::MouseButton, Qt::KeyboardModifiers, QQuickWebView::NavigationType, WKFramePolicyListenerRef);
 34 void decidePolicyForNavigationAction(const QUrl&, Qt::MouseButton, Qt::KeyboardModifiers, QQuickWebView::NavigationType, WKFramePolicyListenerRef);
3535
3636 // WKPagePolicyClient callbacks.
3737 static void decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType, WKEventModifiers, WKEventMouseButton, WKURLRequestRef, WKFramePolicyListenerRef, WKTypeRef userData, const void* clientInfo);