Add "onResourceRequested" event, fired when request is started.

To see how this is being used, see the new examples/netsniff.js.

http://code.google.com/p/phantomjs/issues/detail?id=2
1.2
IceArmy 2011-06-07 02:31:33 -07:00
parent 150b33211f
commit 8314ad3197
3 changed files with 38 additions and 1 deletions

View File

@ -29,6 +29,16 @@ window.WebPage = function() {
this.loadFinished.connect(this.handlers.loadFinished);
});
page.__defineSetter__("onResourceRequested", function(f) {
if (this.handlers && typeof this.handlers.resourceRequested === 'function') {
try {
this.resourceRequested.disconnect(this.handlers.resourceRequested);
} catch (e) {}
}
this.handlers.resourceRequested = f;
this.resourceRequested.connect(this.handlers.resourceRequested);
});
page.onAlert = function (msg) {};
page.onConsoleMessage = function (msg) {};

View File

@ -18,7 +18,7 @@
'''
from PyQt4.QtGui import QDesktopServices
from PyQt4.QtCore import qDebug, qWarning
from PyQt4.QtCore import pyqtSignal, qDebug, qWarning
from PyQt4.QtNetwork import QNetworkAccessManager, QNetworkDiskCache, \
QNetworkRequest
@ -27,6 +27,8 @@ from plugincontroller import Bunch, do_action
class NetworkAccessManager(QNetworkAccessManager):
resourceRequested = pyqtSignal('QVariantMap')
def __init__(self, diskCacheEnabled, ignoreSslErrors, parent=None):
QNetworkAccessManager.__init__(self, parent)
self.m_ignoreSslErrors = ignoreSslErrors
@ -66,8 +68,14 @@ class NetworkAccessManager(QNetworkAccessManager):
if self.m_ignoreSslErrors == 'yes':
reply.ignoreSslErrors()
data = {
'url': req.url().toString(),
'method': toString(op)
}
do_action('NetworkAccessManagerCreateRequestPost', Bunch(locals()))
self.resourceRequested.emit(data)
return reply
def handleFinished(self, reply):
@ -84,3 +92,20 @@ class NetworkAccessManager(QNetworkAccessManager):
qDebug('"%s" = "%s"' % (pair[0], pair[1]))
do_action('NetworkAccessManager', Bunch(locals()))
def toString(op):
verb = '?'
if op == QNetworkAccessManager.HeadOperation:
verb = 'HEAD'
elif op == QNetworkAccessManager.GetOperation:
verb = 'GET'
elif op == QNetworkAccessManager.PutOperation:
verb = 'PUT'
elif op == QNetworkAccessManager.PostOperation:
verb = 'POST'
elif op == QNetworkAccessManager.DeleteOperation:
verb = 'DELETE'
return verb

View File

@ -72,6 +72,7 @@ class WebPage(QObject):
javaScriptConsoleMessageSent = pyqtSignal(str)
loadStarted = pyqtSignal()
loadFinished = pyqtSignal(str)
resourceRequested = pyqtSignal('QVariantMap')
def __init__(self, parent=None):
QObject.__init__(self, parent)
@ -215,6 +216,7 @@ class WebPage(QObject):
def setNetworkAccessManager(self, networkAccessManager):
self.m_webPage.setNetworkAccessManager(networkAccessManager)
networkAccessManager.resourceRequested.connect(self.resourceRequested)
def stringToPointSize(self, string):
units = (