webengine/osswebengine/WebKitTools/iExploder/htdocs/webserver.rb
changeset 0 dd21522fd290
equal deleted inserted replaced
-1:000000000000 0:dd21522fd290
       
     1 #!/usr/bin/ruby
       
     2 # iExploder - Generates bad HTML files to perform QA for web browsers.
       
     3 # Developed for the Mozilla Foundation.
       
     4 #####################
       
     5 #
       
     6 # Copyright (c) 2006 Thomas Stromberg <thomas%stromberg.org>
       
     7 # 
       
     8 # This software is provided 'as-is', without any express or implied warranty.
       
     9 # In no event will the authors be held liable for any damages arising from the
       
    10 # use of this software.
       
    11 # 
       
    12 # Permission is granted to anyone to use this software for any purpose,
       
    13 # including commercial applications, and to alter it and redistribute it
       
    14 # freely, subject to the following restrictions:
       
    15 # 
       
    16 # 1. The origin of this software must not be misrepresented; you must not
       
    17 # claim that you wrote the original software. If you use this software in a
       
    18 # product, an acknowledgment in the product documentation would be appreciated
       
    19 # but is not required.
       
    20 # 
       
    21 # 2. Altered source versions must be plainly marked as such, and must not be
       
    22 # misrepresented as being the original software.
       
    23 # 
       
    24 # 3. This notice may not be removed or altered from any source distribution.
       
    25 
       
    26 require 'webrick'
       
    27 require 'iexploder';
       
    28 require 'config';
       
    29 
       
    30 include WEBrick
       
    31 ### THE INTERACTION ##################################
       
    32 $ie_preload = IExploder.new($HTML_MAX_TAGS, $HTML_MAX_ATTRS, $CSS_MAX_PROPS)
       
    33 $ie_preload.readTagFiles()
       
    34 $ie_preload.url='/iexploder.cgi'
       
    35 
       
    36 if ARGV[0]
       
    37 	port = ARGV[0].to_i
       
    38 else
       
    39 	port = 2000
       
    40 end
       
    41 
       
    42 puts "* iExploder #{$VERSION} will be available at http://localhost:#{port}"
       
    43 puts "* Max Tags: #$HTML_MAX_TAGS Max Attrs: #$HTML_MAX_ATTRS Max Props: #$CSS_MAX_PROPS"
       
    44 puts
       
    45 
       
    46 s = HTTPServer.new( :Port => port )
       
    47 class IEServlet < HTTPServlet::AbstractServlet
       
    48     def do_GET(req, res)
       
    49         ie = $ie_preload.dup
       
    50         ie.test_num = req.query['test'].to_i
       
    51         ie.subtest_num = req.query['subtest'].to_i || 0
       
    52         ie.random_mode = req.query['random']
       
    53         ie.lookup_mode = req.query['lookup']
       
    54         ie.stop_num = req.query['stop'].to_i
       
    55         ie.setRandomSeed
       
    56         
       
    57         res['Content-Type'] = 'text/html'  
       
    58         res.body = ie.buildPage()
       
    59     end
       
    60 end
       
    61 
       
    62 class IEForm < HTTPServlet::AbstractServlet
       
    63     def do_GET(req, res)   
       
    64         res['Content-Type'] = 'text/html'  
       
    65         res.body = File.open("index.html").readlines.join("\n")
       
    66     end
       
    67 end
       
    68 
       
    69 
       
    70 
       
    71 s.mount("/iexploder.cgi", IEServlet)
       
    72 s.mount("/", IEForm)
       
    73 trap("INT") { s.shutdown }
       
    74 
       
    75 s.start