Verify that changing focus to a different frame updates secure input state.

On success, you will see a series of "PASS" messages, followed by "TEST COMPLETE".


Initial state, no selection:
PASS testRunner.secureEventInputIsEnabled is false

A password input is focused:
PASS document.activeElement is passwordInput
PASS testRunner.secureEventInputIsEnabled is true

A regular text input is focused with a mouse click:
PASS frames[0].document.activeElement is textInput
PASS testRunner.secureEventInputIsEnabled is false

A password input is focused again with a mouse click:
PASS document.activeElement is passwordInput
PASS testRunner.secureEventInputIsEnabled is true

A regular text input is focused with a tab:
PASS frames[0].document.activeElement is textInput
PASS testRunner.secureEventInputIsEnabled is false

A password input is focused again with a tab:
PASS document.activeElement is passwordInput
PASS testRunner.secureEventInputIsEnabled is true

Focus is made empty:
PASS document.activeElement is document.body
PASS testRunner.secureEventInputIsEnabled is false
PASS successfullyParsed is true

TEST COMPLETE

