| 'use strict'; | 
|   | 
| var inherits = require('inherits') | 
|   , AjaxBasedTransport = require('./lib/ajax-based') | 
|   , XhrReceiver = require('./receiver/xhr') | 
|   , XHRCorsObject = require('./sender/xhr-cors') | 
|   , XHRLocalObject = require('./sender/xhr-local') | 
|   , browser = require('../utils/browser') | 
|   ; | 
|   | 
| function XhrStreamingTransport(transUrl) { | 
|   if (!XHRLocalObject.enabled && !XHRCorsObject.enabled) { | 
|     throw new Error('Transport created when disabled'); | 
|   } | 
|   AjaxBasedTransport.call(this, transUrl, '/xhr_streaming', XhrReceiver, XHRCorsObject); | 
| } | 
|   | 
| inherits(XhrStreamingTransport, AjaxBasedTransport); | 
|   | 
| XhrStreamingTransport.enabled = function(info) { | 
|   if (info.nullOrigin) { | 
|     return false; | 
|   } | 
|   // Opera doesn't support xhr-streaming #60 | 
|   // But it might be able to #92 | 
|   if (browser.isOpera()) { | 
|     return false; | 
|   } | 
|   | 
|   return XHRCorsObject.enabled; | 
| }; | 
|   | 
| XhrStreamingTransport.transportName = 'xhr-streaming'; | 
| XhrStreamingTransport.roundTrips = 2; // preflight, ajax | 
|   | 
| // Safari gets confused when a streaming ajax request is started | 
| // before onload. This causes the load indicator to spin indefinetely. | 
| // Only require body when used in a browser | 
| XhrStreamingTransport.needBody = !!global.document; | 
|   | 
| module.exports = XhrStreamingTransport; |