Anforderungen  |   Konzepte  |   Entwurf  |   Entwicklung  |   Qualitätssicherung  |   Lebenszyklus  |   Steuerung
 
 
 
 


Quelle  test_input_events_on_deactive_window.xhtml   Sprache: unbekannt

 
<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin" type="text/css"?>
<?xml-stylesheet href="chrome://mochikit/content/tests/SimpleTest/test.css"
                 type="text/css"?>
<window title="Testing composition, text and query content events"
  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">

  <script src="chrome://mochikit/content/tests/SimpleTest/SimpleTest.js" />
  <script src="chrome://mochikit/content/tests/SimpleTest/EventUtils.js" />

<body  xmlns="http://www.w3.org/1999/xhtml">
<div id="content" style="display: none">
</div>
<p id="display">
  <textarea id="textarea"></textarea>
</p>
<pre id="test">
</pre>
</body>

<script class="testbody" type="application/javascript">
<![CDATA[

SimpleTest.waitForExplicitFinish();
SimpleTest.waitForFocus(runTests, window);

var textarea = document.getElementById("textarea");
var otherWindow;
var timer;

function runTests()
{
  textarea.focus();
  is(Services.focus.focusedElement, textarea, "we're deactive");
  if (Services.focus.focusedElement != textarea) {
    SimpleTest.finish();
    return;
  }

  otherWindow =
    window.browsingContext.topChromeWindow.open(
        "./file_input_events_on_deactive_window.html", "_blank",
        "chrome,width=100,height=100");
  ok(otherWindow, "failed to open other window");
  if (!otherWindow) {
    SimpleTest.finish();
    return;
  }

  SimpleTest.waitForFocus(startTests, otherWindow);
  otherWindow.focus();
}

function startTests()
{
  clearTimeout(timer);
  isnot(Services.focus.focusedWindow, window, "we're not deactive");
  if (Services.focus.focusedWindow == window) {
    otherWindow.close();
    SimpleTest.finish();
    return;
  }

  var keydownHandled, keypressHandled, keyupHandled, compositionstartHandled,
      compositionendHandled, compositionupdateHandled, inputHandled;

  function clear()
  {
    keydownHandled = false;
    keypressHandled = false;
    keyupHandled = false;
    compositionstartHandled = false;
    compositionendHandled = false;
    compositionupdateHandled = false;
    inputHandled = false;
  }

  function onEvent(aEvent)
  {
    if (aEvent.type == "keydown") {
      keydownHandled = true;
    } else if (aEvent.type == "keypress") {
      keypressHandled = true;
    } else if (aEvent.type == "keyup") {
      keyupHandled = true;
    } else if (aEvent.type == "compositionstart") {
      compositionstartHandled = true;
    } else if (aEvent.type == "compositionend") {
      compositionendHandled = true;
    } else if (aEvent.type == "compositionupdate") {
      compositionupdateHandled = true;
    } else if (aEvent.type == "input") {
      inputHandled = true;
    } else {
      ok(false, "handled unknown event: " + aEvent.type);
    }
  }

  textarea.addEventListener("keydown", onEvent);
  textarea.addEventListener("keypress", onEvent);
  textarea.addEventListener("keyup", onEvent);
  textarea.addEventListener("compositionstart", onEvent);
  textarea.addEventListener("compositionend", onEvent);
  textarea.addEventListener("compositionupdate", onEvent);
  textarea.addEventListener("input", onEvent);

  startTestsInternal();

  function startTestsInternal()
  {
    // key events
    function checkKeyEvents(aKeydown, aKeypress, aKeyup, aInput, aDescription)
    {
      is(keydownHandled, aKeydown,
         "keydown event is (not) handled: " + aDescription);
      is(keypressHandled, aKeypress,
         "keypress event is (not) handled: " + aDescription);
      is(keyupHandled, aKeyup,
         "keyup event is (not) handled: " + aDescription);
      is(inputHandled, aInput,
         "input event is (not) handled: " + aDescription);
    }

    function checkCompositionEvents(aStart, aEnd, aUpdate, aInput, aDescription)
    {
      is(compositionstartHandled, aStart,
         "compositionstart event is (not) handled: " + aDescription);
      is(compositionendHandled, aEnd,
         "compositionend event is (not) handled: " + aDescription);
      is(compositionupdateHandled, aUpdate,
         "compositionupdate event is (not) handled: " + aDescription);
      is(inputHandled, aInput,
         "input event is (not) handled: " + aDescription);
    }

    clear();
    synthesizeKey("a", {type: "keydown"});
    checkKeyEvents(true, true, false, true, "a keydown and a keypress");
    is(textarea.value, "a", "textarea value isn't 'a'");
    clear();
    synthesizeKey("a", {type: "keyup"});
    checkKeyEvents(false, false, true, false, "a keyup");
    clear();
    synthesizeKey("KEY_Backspace");
    checkKeyEvents(true, true, true, true, "KEY_Backspace key events");
    is(textarea.value, "", "textarea value isn't empty");

    // IME events
    clear();
    // input first character
    synthesizeCompositionChange(
      { "composition":
        { "string": "\u3089",
          "clauses":
          [
            { "length": 1, "attr": COMPOSITION_ATTR_RAW_CLAUSE }
          ]
        },
        "caret": { "start": 1, "length": 0 }
      });
    checkCompositionEvents(true, false, true, true, "starting to compose");
    var queryText = synthesizeQueryTextContent(0, 100);
    ok(queryText, "query text event result is null");
    if (!queryText) {
      return;
    }
    ok(queryText.succeeded, "query text event failed");
    if (!queryText.succeeded) {
      return;
    }
    is(queryText.text, "\u3089", "composing text is incorrect");
    var querySelectedText = synthesizeQuerySelectedText();
    ok(querySelectedText, "query selected text event result is null");
    if (!querySelectedText) {
      return;
    }
    ok(querySelectedText.succeeded, "query selected text event failed");
    if (!querySelectedText.succeeded) {
      return;
    }
    is(querySelectedText.offset, 1,
       "query selected text event returns wrong offset");
    is(querySelectedText.text, "",
       "query selected text event returns wrong selected text");
    clear();
    // commit composition
    synthesizeComposition({ type: "compositioncommitasis" });
    checkCompositionEvents(false, true, false, true, "commit composition as is");
    queryText = synthesizeQueryTextContent(0, 100);
    ok(queryText, "query text event result is null after commit");
    if (!queryText) {
      return;
    }
    ok(queryText.succeeded, "query text event failed after commit");
    if (!queryText.succeeded) {
      return;
    }
    is(queryText.text, "\u3089", "composing text is incorrect after commit");
    querySelectedText = synthesizeQuerySelectedText();
    ok(querySelectedText,
       "query selected text event result is null after commit");
    if (!querySelectedText) {
      return;
    }
    ok(querySelectedText.succeeded,
       "query selected text event failed after commit");
    if (!querySelectedText.succeeded) {
      return;
    }
    is(querySelectedText.offset, 1,
       "query selected text event returns wrong offset after commit");
    is(querySelectedText.text, "",
       "query selected text event returns wrong selected text after commit");
    clear();
  }

  textarea.removeEventListener("keydown", onEvent);
  textarea.removeEventListener("keypress", onEvent);
  textarea.removeEventListener("keyup", onEvent);
  textarea.removeEventListener("compositionstart", onEvent);
  textarea.removeEventListener("compositionupdate", onEvent);
  textarea.removeEventListener("compositionend", onEvent);
  textarea.removeEventListener("input", onEvent);

  otherWindow.close();

  SimpleTest.finish();
}


]]>
</script>
</window>

[ zur Elbe Produktseite wechseln0.33Quellennavigators  Analyse erneut starten  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


Neuigkeiten

     Aktuelles
     Motto des Tages

Software

     Produkte
     Quellcodebibliothek

Aktivitäten

     Artikel über Sicherheit
     Anleitung zur Aktivierung von SSL

Muße

     Gedichte
     Musik
     Bilder

Jenseits des Üblichen ....

Besucherstatistik

Besucherstatistik

Monitoring

Montastic status badge