提交 97682d3d 编写于 作者: Huan (李卓桓)'s avatar Huan (李卓桓)

code clean

上级 3fcc1a68
......@@ -141,26 +141,28 @@ class Browser extends EventEmitter {
return Promise.resolve('no driver session')
}
return this.driver.close() // http://stackoverflow.com/a/32341885/1123955
.then(() => this.driver.quit())
.catch(e => {
// console.log(e)
// log.warn('PuppetWebBrowser', 'err: %s %s %s %s', e.code, e.errno, e.syscall, e.message)
const crashMsgs = [
'ECONNREFUSED'
, 'WebDriverError: .* not reachable'
, 'NoSuchWindowError: no such window: target window already closed'
]
const crashRegex = new RegExp(crashMsgs.join('|'), 'i')
if (crashRegex.test(e.message)) { log.warn('PuppetWebBrowser', 'driver.quit() browser crashed') }
else { log.warn('PuppetWebBrowser', 'driver.quit() exception: %s', e.message) }
})
.then(() => { this.driver = null })
.then(() => this.clean())
.catch(e => {
log.error('PuppetWebBrowser', 'quit() exception: %s', e.message)
throw e
})
.then(_ => this.driver.quit())
.catch(e => {
// console.log(e)
// log.warn('PuppetWebBrowser', 'err: %s %s %s %s', e.code, e.errno, e.syscall, e.message)
const crashMsgs = [
'ECONNREFUSED'
, 'WebDriverError: .* not reachable'
, 'NoSuchWindowError: no such window: target window already closed'
]
const crashRegex = new RegExp(crashMsgs.join('|'), 'i')
if (crashRegex.test(e.message)) { log.warn('PuppetWebBrowser', 'driver.quit() browser crashed') }
else { log.warn('PuppetWebBrowser', 'driver.quit() exception: %s', e.message) }
})
.then(_ => {
this.driver = null
return this.clean()
})
.catch(e => {
log.error('PuppetWebBrowser', 'quit() exception: %s', e.message)
throw e
})
}
clean() {
......@@ -182,6 +184,7 @@ class Browser extends EventEmitter {
this.getBrowserPids()
.then(pids => {
if (pids.length === 0) {
log.verbose('PuppetWebBrowser', 'clean() retryPromise() resolved')
resolve('clean() no browser process, confirm clean')
} else {
reject(new Error('clean() found browser process, not clean, dirty'))
......@@ -327,8 +330,8 @@ class Browser extends EventEmitter {
log.warn('PuppetWebBrowser', 'dead() because %s', errMsg)
this.live = false
// must use nextTick here, or promise will hang... 2016/6/10
process.nextTick(() => {
log.verbose('PuppetWebBrowser', 'dead() emit a `dead` event')
process.nextTick(_ => {
log.verbose('PuppetWebBrowser', 'dead() emit a `dead` event because %s', errMsg)
this.emit('dead', errMsg)
})
}
......
......@@ -51,7 +51,7 @@ const PuppetWebEvent = {
}
function onBrowserDead(e) {
log.verbose('PuppetWebEvent', 'onBrowserDead()')
log.verbose('PuppetWebEvent', 'onBrowserDead(%s)', e)
// because this function is async, so maybe entry more than one times.
// guard by variable: isBrowserBirthing to prevent the 2nd time entrance.
if (this.isBrowserBirthing) {
......@@ -84,10 +84,11 @@ function onBrowserDead(e) {
})
log.verbose('PuppetWebEvent', 'old browser quited')
yield this.initBrowser()
this.browser = yield this.initBrowser()
log.verbose('PuppetWebEvent', 'new browser inited')
yield this.bridge.init()
// this.bridge = yield this.bridge.init()
this.bridge = yield this.initBridge()
log.verbose('PuppetWebEvent', 'bridge re-inited')
const dong = yield this.ding()
......
......@@ -88,7 +88,7 @@ class PuppetWeb extends Puppet {
if (this.bridge) {
yield this.bridge.quit().catch(e => { // fail safe
log.warn('PuppetWeb', 'quite() bridge.quit() exception: %s', e.message)
log.warn('PuppetWeb', 'quit() bridge.quit() exception: %s', e.message)
})
this.bridge = null
} else { log.warn('PuppetWeb', 'quit() without a bridge') }
......@@ -99,9 +99,10 @@ class PuppetWeb extends Puppet {
} else { log.verbose('PuppetWeb', 'quit() without a server') }
if (this.browser) {
yield (this.browser.quit().catch(e => { // fail safe
log.warn('PuppetWeb', 'quit() browser.quit() exception: %s', e.message)
}))
yield this.browser.quit()
.catch(e => { // fail safe
log.warn('PuppetWeb', 'quit() browser.quit() exception: %s', e.message)
})
this.browser = null
} else { log.warn('PuppetWeb', 'quit() without a browser') }
......@@ -127,7 +128,7 @@ class PuppetWeb extends Puppet {
initBrowser() {
log.verbose('PuppetWeb', 'initBrowser()')
const browser = this.browser = new Browser({
const browser = new Browser({
head: this.head
, sessionFile: this.profile
})
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册