class Poltergeist.Browser extends Poltergeist.Browser
constructor: (@owner, width, height) -> originalResetFunc = this.resetPage initialReset = => originalResetFunc.apply(this) this.resetPage = => initialReset() @additionalReset() super(@owner, width, height) additionalReset: => @jsonRequests = [] @page.onResourceRequested = (request) => @jsonRequests.push(request.id) sendResponse: (response) -> if not @responseCallback(response) callback = => @responseCallback(response) @responseInterval = setInterval(callback, 10) responseCallback: (response)=> if (@page.allRequestsReceived(@jsonRequests) || @page.errors().count > 0) errors = @page.errors() @page.clearErrors() if errors.length > 0 && @js_errors @owner.sendError(new Poltergeist.JavascriptError(errors)) clearInterval(@responseInterval) else @owner.sendResponse(response) clearInterval(@responseInterval) return true return false
class Poltergeist.WebPage extends Poltergeist.WebPage
allRequestsReceived: (ids)-> for requestId in ids if @networkTraffic()[requestId].responseParts.length == 0 return false return true