JasonLeyba: A little more OO so the code is easier to read and maintain.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17151 07704840-8298-11de-bf8c-fd130f914ac9
JasonLeyba: Missed a reference in r17151.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17152 07704840-8298-11de-bf8c-fd130f914ac9
JasonLeyba: More clean-up.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17153 07704840-8298-11de-bf8c-fd130f914ac9
JasonLeyba: Add missing type annotation.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17154 07704840-8298-11de-bf8c-fd130f914ac9
JasonLeyba: More code clean-up.
* Avoid parsing a message multiple times
* The root and child frames in an injected script should not listen for messages they don't respond to.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17155 07704840-8298-11de-bf8c-fd130f914ac9
JasonLeyba: Moving a file to the correct package.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17156 07704840-8298-11de-bf8c-fd130f914ac9
JasonLeyba: More clean up for the SafariDriver's injected script.


git-svn-id: https://selenium.googlecode.com/svn/trunk@17157 07704840-8298-11de-bf8c-fd130f914ac9
JasonLeyba: If an iframe is removed from the DOM while it is selected, the SafariDriver will hang. This is because the frame sends one last unload message to the extension. The extension then blocks waiting for a load message that will never come. To fix this, I had to rewire a good bit. The extension now only tracks the load state of the top most frame. The top frame then tracks whether to delay executing a command because the target frame is still loading. Of course, this is uglier than it needs to be because of cross-domain testing -- iframes are evil.  While waiting for the frame to reload, the top frame will periodically check if the frame has "closed".  This signals the frame has been removed from the DOM and the only valid commands at this point are switchTo().defaultContent(), or some other "top-focused" command.

Fixes issue 3945.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17158 07704840-8298-11de-bf8c-fd130f914ac9
SimonStewart: Looks as if operadriver has been updated

git-svn-id: https://selenium.googlecode.com/svn/trunk@17159 07704840-8298-11de-bf8c-fd130f914ac9
SimonStewart: If we return rgba, our colour conversion class should handle it properly.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17160 07704840-8298-11de-bf8c-fd130f914ac9
SimonStewart: There is no reason any sane person would want to use anything other than the x86 emulators. The ICS one is even of acceptable quality.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17161 07704840-8298-11de-bf8c-fd130f914ac9
JimEvans: Updated Element::Click() to return a better error message in the case where the element is "displayed" but cannot be clicked on for other reasons.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17162 07704840-8298-11de-bf8c-fd130f914ac9
SimonStewart: Fix the selenium build. Turns out that removing exceptions without first checking usages sometimes doesn't work out. Also, we really need a CI build for the selenium tests.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17164 07704840-8298-11de-bf8c-fd130f914ac9
JimEvans: Crash prevention for when IWebBrowser2::get_Document() returns S_FALSE. Fixes issue #4064.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17165 07704840-8298-11de-bf8c-fd130f914ac9
DavidBurns adding test to check we don't hang when accessing an element after a window is closed. Test for https://bugzilla.mozilla.org/show_bug.cgi?id=763862

git-svn-id: https://selenium.googlecode.com/svn/trunk@17166 07704840-8298-11de-bf8c-fd130f914ac9
JimEvans: Updating overridden operators on .NET FindsByAttribute to correctly handle the null case. Fixes issue #4070.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17167 07704840-8298-11de-bf8c-fd130f914ac9
JimEvans: Reverting inadvertent checkin of temporary test.

git-svn-id: https://selenium.googlecode.com/svn/trunk@17168 07704840-8298-11de-bf8c-fd130f914ac9