1+ <!DOCTYPE html>
2+ < html lang ="en ">
3+ < head >
4+ < meta charset ="utf8 ">
5+ < title > test</ title >
6+ < style type ="text/css ">
7+ tr {
8+ border-top : solid;
9+ border-bottom : solid;
10+ text-align : center;
11+ }
12+ td {
13+ border-left : solid;
14+ }
15+ </ style >
16+ </ head >
17+ < body >
18+ < div >
19+ < ol >
20+ < li > Click Quit Button(Automatical)</ li >
21+ < li > Click native window red dot.(left top or right top)</ li >
22+ < li > Press COMMAND-Q(MAC ONLY)</ li >
23+ < li > Press left top system menu node-webkit and click nw-quit.(MAC ONLY)</ li >
24+ </ ol >
25+ </ div >
26+
27+ < div >
28+ < table id ="result ">
29+ < thead >
30+ < tr >
31+ < td > Method</ td >
32+ < td > closeHandlerInNode</ td >
33+ < td > showSplashScreen</ td >
34+ < td > startServer</ td >
35+ < td > Result</ td >
36+ </ tr >
37+ </ thead >
38+ < tbody id ="result-body ">
39+ </ tbody >
40+ </ table >
41+ </ div >
42+ < script type ="text/javascript ">
43+ var os = require ( 'os' ) ;
44+ var url = require ( 'url' ) ;
45+ var http = require ( 'http' ) ;
46+ var spawn = require ( 'child_process' ) . spawn ;
47+ var resultFlag = 0 ;
48+
49+ var caseIndex = 1 ;
50+ var methodIndex = 0 ;
51+ var casesArgs = [
52+ [ 0 , 0 , 2 ] , //false,none,true
53+ [ 1 , 0 , 0 ] , //true,close,false
54+ [ 0 , 0 , 0 ] , //false,close,false
55+ ] ;
56+
57+ var updateStatus = function ( pathname , query ) {
58+ if ( pathname === '/crontab' ) {
59+ if ( resultFlag === 0 ) {
60+ resultFlag = 1 ;
61+ return ;
62+ } else if ( resultFlag === 2 ) {
63+ resultFlag = 3 ;
64+ return ;
65+ }
66+ } else if ( pathname === "/close" ) {
67+ if ( resultFlag === 1 ) {
68+ resultFlag = 2 ;
69+ return ;
70+ }
71+ }
72+ console . log ( "RESULT FLAG:" + resultFlag ) ;
73+ } ;
74+
75+ var resultBody = document . getElementById ( 'result-body' ) ;
76+ var methodId2Text = function ( id ) {
77+ id = parseInt ( id ) ;
78+ switch ( id ) {
79+ case 0 :
80+ return "Click Quit Button" ;
81+ break ;
82+ case 1 :
83+ return "Click native window red dot." ;
84+ break ;
85+ case 2 :
86+ return "Press COMMAND-Q(MAC ONLY)" ;
87+ break ;
88+ case 3 :
89+ return "Press left top system menu node-webkit and click nw-quit.(MAC ONLY)" ;
90+ break ;
91+ }
92+ } ;
93+ var generateView = function ( ) {
94+ var row = document . createElement ( "tr" ) ;
95+ var methodText = methodId2Text ( methodIndex ) ;
96+ var currentArgs = casesArgs [ caseIndex ] . slice ( ) ;
97+ var closerText = ( parseInt ( currentArgs [ 0 ] ) === 0 ?false :true ) + "" ;
98+ var splashMode = parseInt ( currentArgs [ 1 ] ) ;
99+ var splashText = undefined ;
100+ switch ( splashMode ) {
101+ case 0 :
102+ splashText = "close" ;
103+ break ;
104+ case 1 :
105+ splashText = "none" ;
106+ break ;
107+ case 2 :
108+ splashText = "hide" ;
109+ break ;
110+ }
111+ var serverText = ( parseInt ( currentArgs [ 2 ] ) == 0 ?false :true ) + "" ;
112+
113+ var resultText = undefined ;
114+ if ( resultFlag === 3 ) {
115+ resultText = "SUCCESS" ;
116+ } else {
117+ resultText = "FAIL"
118+ }
119+ resultFlag = 0 ;
120+
121+ var rowHTML =
122+ "<tr> <td class='Method'>" + methodText + "</td> <td class='closeHandlerInNode'>" + closerText + "</td> <td class='showSplashScreen'>" + splashText + "</td> <td class='startServer'>" + serverText + "</td> <td class='Result'>" + resultText + "</td></tr>" ;
123+ resultBody . innerHTML += rowHTML ;
124+ return ;
125+ } ;
126+ var server = http . createServer ( function ( req , res ) {
127+ var location = url . parse ( req . url , true ) ;
128+ var pathname = location . pathname ;
129+ var query = location . query ;
130+ updateStatus ( pathname , query ) ;
131+ res . end ( ) ;
132+ } ) ;
133+ server . listen ( 9000 , function ( ) {
134+ console . log ( "Result server is running on localhost:9000" ) ;
135+ } ) ;
136+
137+ var appNum = 2 ;
138+ if ( os . platform ( ) === 'darwin' ) {
139+ appNum = 3 ; //the last method should launch manual, could not as a child process.
140+ caseIndex = 0 ; //only mac need the first row args
141+ }
142+
143+
144+
145+ var next = function ( ) {
146+ var args = casesArgs [ caseIndex ] ;
147+ if ( args ) {
148+ args = args . slice ( ) ;
149+ } else {
150+ return ;
151+ }
152+ if ( methodIndex < appNum ) {
153+ args . unshift ( methodIndex ) ;
154+ args . unshift ( "app" ) ;
155+ var app = spawn ( process . execPath , args ) ;
156+ app . on ( "exit" , function ( code , signal ) {
157+ generateView ( ) ;
158+ ++ methodIndex ;
159+ next ( ) ;
160+ } ) ;
161+ } else {
162+ ++ caseIndex ;
163+ methodIndex = 0 ;
164+ next ( ) ;
165+ }
166+ }
167+
168+
169+ next ( ) ;
170+ </ script >
171+ </ body >
172+ </ html >
173+
0 commit comments