chromium/third_party/blink/web_tests/plugins/focus-change-2-change-focus.html

<!DOCTYPE html>
<title>Test changing focus inside plugin onfocus event</title>
<script src="../resources/testharness.js"></script>
<script src="../resources/testharnessreport.js"></script>

<input id="input1" type="text" onfocus="i1Focus()" onblur="i1Blur()"></input>
<input id="input2" type="text" onfocus="i2Focus()" onblur="i2Blur()"></input>
<input id="input3" type="text" onfocus="i3Focus()" onblur="i3Blur()"></input>
<embed id="plugin" type="application/x-webkit-test-webplugin" onfocus="pFocus()" onblur="pBlur()"></embed>

<script>
let events = [];
function i1Focus() { events.push('i1focus'); }
function i1Blur() { events.push('i1blur'); }
function i2Focus() { events.push('i2focus'); }
function i2Blur() { events.push('i2blur'); }
function i3Focus() { events.push('i3focus'); }
function i3Blur() { events.push('i3blur'); }
function pFocus() {
  events.push('pfocus-change-2');
  document.getElementById('input2').focus();
}
function pBlur() { events.push('pblur'); }

async_test(t => {
  function finish() {
    assert_array_equals(events, ["i1focus","i1blur","pfocus-change-2","pblur","i2focus","i2blur","i3focus"]);
    t.done();
  }
  document.getElementById('input1').focus();
  document.getElementById('plugin').focus();
  document.getElementById('input3').focus();
  t.step_timeout(finish, 0);
},"Test plugin focus behavior");
</script>