SeleniumHQ/selenium — pull request #40 by alex-savchuk (2013-04-06 18:09:05+00:00)
Title: Implement ability to specify IE launch API and IE CLI switches.

Implement ability to specify IE launch API and IE CLI switches.

Using IE in Private mode is required to support parallel testing in IE browsers on single node.
For this it is required to use CreateProcess() launch API and specify IE CLI switches.
This commit based on idea of Mail.Ru implements required abilities.

What's done:
* ability to specify forcibly to use some IE launch api: IELaunchURL() or CreateProcess().
NOTE: for IE8 and older a CreateProcess() API is allowed to use only if
HKCU\\Software\\Microsoft\\Internet Explorer\\Main\\TabProcGrowth is equal to 0.
See [1]
NOTE: old way of using API on determination of IELaunchURL() address
in ieframe.dll is still used if nothing is specified.
* ability to specify a IE switches to use if CreateProcess() API is used
See [2]
* extended set of passed parameters to IECommandExecutor thread by using struct.
It fixes 2 TODOs.
* extended set of passed parameters to IESession->Initialize() by using struct
* more trace and error logging
* support of single and double quoting of IEDriverServer CLI arguments
* use finite timeout (30 seconds) for waiting of new IECommandExecutor thread
* add 2 windows log helpers

In progress:
* supporting all TabProcGrowth values
* python binding: supporting of all IEDriverServer switches
* java binding: supporting of all IEDriverServer switches

[1] http://blogs.msdn.com/b/askie/archive/2009/03/09/opening-a-new-tab-may-launch-a-new-process-with-internet-explorer-8-0.aspx
[2] http://msdn.microsoft.com/en-us/library/hh826025(v=vs.85).aspx

the CLA as Alex Savchuk on behalf of Mail.Ru has been signed.