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


Quelle  test_preferences.xhtml   Sprache: unbekannt

 
Spracherkennung für: .xhtml vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]

<?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="Preferences Window Tests"
        xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
        onload="RunTest();">

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

  <script type="application/javascript">
  <![CDATA[
    SimpleTest.waitForExplicitFinish();

    const kPref = SpecialPowers.Services.prefs;

    // preference values, set 1
    const kPrefValueSet1 = {
      int: 23,
      bool: true,
      string: "rheeet!",
      unichar: "äöüßÄÖÜ",
      wstring_data: "日本語",
      file_data: "/",

      wstring: Cc["@mozilla.org/pref-localizedstring;1"].createInstance(
        Ci.nsIPrefLocalizedString
      ),
      file: Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile),
    };
    kPrefValueSet1.wstring.data = kPrefValueSet1.wstring_data;
    SafeFileInit(kPrefValueSet1.file, kPrefValueSet1.file_data);

    // preference values, set 2
    const kPrefValueSet2 = {
      int: 42,
      bool: false,
      string: "Mozilla",
      unichar: "áôùšŽ",
      wstring_data: "헤드라인A",
      file_data: "/home",

      wstring: Cc["@mozilla.org/pref-localizedstring;1"].createInstance(
        Ci.nsIPrefLocalizedString
      ),
      file: Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile),
    };
    kPrefValueSet2.wstring.data = kPrefValueSet2.wstring_data;
    SafeFileInit(kPrefValueSet2.file, kPrefValueSet2.file_data);

    function SafeFileInit(aFile, aPath) {
      // set file path without dying for exceptions
      try {
        aFile.initWithPath(aPath);
      } catch {}
    }

    function CreateEmptyPrefValueSet() {
      var result = {
        int: undefined,
        bool: undefined,
        string: undefined,
        unichar: undefined,
        wstring_data: undefined,
        file_data: undefined,
        wstring: undefined,
        file: undefined,
      };
      return result;
    }

    function WritePrefsToSystem(aPrefValueSet) {
      // write preference data via XPCOM
      kPref.setIntPref("tests.static_preference_int", aPrefValueSet.int);
      kPref.setBoolPref("tests.static_preference_bool", aPrefValueSet.bool);
      kPref.setCharPref("tests.static_preference_string", aPrefValueSet.string);
      kPref.setStringPref("tests.static_preference_unichar", aPrefValueSet.unichar);
      kPref.setComplexValue(
        "tests.static_preference_wstring",
        Ci.nsIPrefLocalizedString,
        aPrefValueSet.wstring
      );
      kPref.setComplexValue(
        "tests.static_preference_file",
        Ci.nsIFile,
        aPrefValueSet.file
      );
    }

    function ReadPrefsFromSystem() {
      // read preference data via XPCOM
      var result = CreateEmptyPrefValueSet();
      // eslint-disable-next-line mozilla/use-default-preference-values
      try {
        result.int = kPref.getIntPref("tests.static_preference_int");
      } catch {}
      // eslint-disable-next-line mozilla/use-default-preference-values
      try {
        result.bool = kPref.getBoolPref("tests.static_preference_bool");
      } catch {}
      // eslint-disable-next-line mozilla/use-default-preference-values
      try {
        result.string = kPref.getCharPref("tests.static_preference_string");
      } catch {}
      try {
        result.unichar = kPref.getStringPref("tests.static_preference_unichar");
      } catch {}
      try {
        result.wstring = kPref.getComplexValue(
          "tests.static_preference_wstring",
          Ci.nsIPrefLocalizedString
        );
        result.wstring_data = result.wstring.data;
      } catch {}
      try {
        result.file = kPref.getComplexValue(
          "tests.static_preference_file",
          Ci.nsIFile
        );
        result.file_data = result.file.data;
      } catch {}
      return result;
    }

    function GetXULElement(aPrefWindow, aID) {
      return aPrefWindow.document.getElementById(aID);
    }

    function GetPreference(aPrefWindow, aID) {
      return aPrefWindow.Preferences.get(aID);
    }

    function WritePrefsToPreferences(aPrefWindow, aPrefValueSet) {
      // write preference data into Preference instances
      GetPreference(aPrefWindow, "tests.static_preference_int").value =
        aPrefValueSet.int;
      GetPreference(aPrefWindow, "tests.static_preference_bool").value =
        aPrefValueSet.bool;
      GetPreference(aPrefWindow, "tests.static_preference_string").value =
        aPrefValueSet.string;
      GetPreference(aPrefWindow, "tests.static_preference_unichar").value =
        aPrefValueSet.unichar;
      GetPreference(aPrefWindow, "tests.static_preference_wstring").value =
        aPrefValueSet.wstring_data;
      GetPreference(aPrefWindow, "tests.static_preference_file").value =
        aPrefValueSet.file_data;
    }

    function ReadPrefsFromPreferences(aPrefWindow) {
      // read preference data from Preference instances
      var result = {
        int: GetPreference(aPrefWindow, "tests.static_preference_int").value,
        bool: GetPreference(aPrefWindow, "tests.static_preference_bool").value,
        string: GetPreference(aPrefWindow, "tests.static_preference_string").value,
        unichar: GetPreference(aPrefWindow, "tests.static_preference_unichar")
          .value,
        wstring_data: GetPreference(aPrefWindow, "tests.static_preference_wstring")
          .value,
        file_data: GetPreference(aPrefWindow, "tests.static_preference_file").value,
        wstring: Cc["@mozilla.org/pref-localizedstring;1"].createInstance(
          Ci.nsIPrefLocalizedString
        ),
        file: Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile),
      };
      result.wstring.data = result.wstring_data;
      SafeFileInit(result.file, result.file_data);
      return result;
    }

    function WritePrefsToUI(aPrefWindow, aPrefValueSet) {
      // write preference data into UI elements
      GetXULElement(aPrefWindow, "static_element_int").value = aPrefValueSet.int;
      GetXULElement(aPrefWindow, "static_element_bool").checked =
        aPrefValueSet.bool;
      GetXULElement(aPrefWindow, "static_element_string").value =
        aPrefValueSet.string;
      GetXULElement(aPrefWindow, "static_element_unichar").value =
        aPrefValueSet.unichar;
      GetXULElement(aPrefWindow, "static_element_wstring").value =
        aPrefValueSet.wstring_data;
      GetXULElement(aPrefWindow, "static_element_file").value =
        aPrefValueSet.file_data;
    }

    function ReadPrefsFromUI(aPrefWindow) {
      // read preference data from Preference instances
      var result = {
        int: GetXULElement(aPrefWindow, "static_element_int").value,
        bool: GetXULElement(aPrefWindow, "static_element_bool").checked,
        string: GetXULElement(aPrefWindow, "static_element_string").value,
        unichar: GetXULElement(aPrefWindow, "static_element_unichar").value,
        wstring_data: GetXULElement(aPrefWindow, "static_element_wstring").value,
        file_data: GetXULElement(aPrefWindow, "static_element_file").value,
        wstring: Cc["@mozilla.org/pref-localizedstring;1"].createInstance(
          Ci.nsIPrefLocalizedString
        ),
        file: Cc["@mozilla.org/file/local;1"].createInstance(Ci.nsIFile),
      };
      result.wstring.data = result.wstring_data;
      SafeFileInit(result.file, result.file_data);
      return result;
    }

    function RunInstantPrefTest(aPrefWindow) {
      // remark: there's currently no UI element binding for files

      // were all Preference instances correctly initialized?
      var expected = kPrefValueSet1;
      var found = ReadPrefsFromPreferences(aPrefWindow);
      ok(found.int === expected.int, "instant pref init int");
      ok(found.bool === expected.bool, "instant pref init bool");
      ok(found.string === expected.string, "instant pref init string");
      ok(found.unichar === expected.unichar, "instant pref init unichar");
      ok(found.wstring_data === expected.wstring_data, "instant pref init wstring");
      todo(found.file_data === expected.file_data, "instant pref init file");

      // were all elements correctly initialized? (loose check)
      found = ReadPrefsFromUI(aPrefWindow);
      is(found.int, "" + expected.int, "instant element init int");
      is(found.bool, expected.bool, "instant element init bool");
      is(found.string, expected.string, "instant element init string");
      is(found.unichar, expected.unichar, "instant element init unichar");
      is(
        found.wstring_data, expected.wstring_data,
        "instant element init wstring"
      );
      todo_is(found.file_data == expected.file_data, "instant element init file");

      // do some changes in the UI
      expected = kPrefValueSet2;
      WritePrefsToUI(aPrefWindow, expected);

      // UI changes should get passed to the Preference instances,
      // but currently they aren't if the changes are made programmatically
      // (the handlers preference.change/prefpane.input and prefpane.change
      // are called for manual changes, though).
      found = ReadPrefsFromPreferences(aPrefWindow);
      todo(found.int === expected.int, "instant change pref int");
      todo(found.bool === expected.bool, "instant change pref bool");
      todo(found.string === expected.string, "instant change pref string");
      todo(found.unichar === expected.unichar, "instant change pref unichar");
      todo(
        found.wstring_data === expected.wstring_data,
        "instant change pref wstring"
      );
      todo(found.file_data === expected.file_data, "instant change pref file");

      // and these changes should get passed to the system instantly
      // (which obviously can't pass with the above failing)
      found = ReadPrefsFromSystem();
      todo(found.int === expected.int, "instant change element int");
      todo(found.bool === expected.bool, "instant change element bool");
      todo(found.string === expected.string, "instant change element string");
      todo(found.unichar === expected.unichar, "instant change element unichar");
      todo(
        found.wstring_data === expected.wstring_data,
        "instant change element wstring"
      );
      todo(found.file_data === expected.file_data, "instant change element file");

      // try resetting the prefs to default values (which should be empty here)
      GetPreference(aPrefWindow, "tests.static_preference_int").reset();
      GetPreference(aPrefWindow, "tests.static_preference_bool").reset();
      GetPreference(aPrefWindow, "tests.static_preference_string").reset();
      GetPreference(aPrefWindow, "tests.static_preference_unichar").reset();
      GetPreference(aPrefWindow, "tests.static_preference_wstring").reset();
      GetPreference(aPrefWindow, "tests.static_preference_file").reset();

      // check system
      expected = CreateEmptyPrefValueSet();
      found = ReadPrefsFromSystem();
      ok(found.int === expected.int, "instant reset system int");
      ok(found.bool === expected.bool, "instant reset system bool");
      ok(found.string === expected.string, "instant reset system string");
      ok(found.unichar === expected.unichar, "instant reset system unichar");
      ok(
        found.wstring_data === expected.wstring_data,
        "instant reset system wstring"
      );
      ok(found.file_data === expected.file_data, "instant reset system file");

      // check UI
      expected = {
        // alas, we don't have XUL elements with typeof(value) == int :(
        // int:         0,
        int: "",
        bool: false,
        string: "",
        unichar: "",
        wstring_data: "",
        file_data: "",
        wstring: {},
        file: {},
      };
      found = ReadPrefsFromUI(aPrefWindow);
      ok(found.int === expected.int, "instant reset element int");
      ok(found.bool === expected.bool, "instant reset element bool");
      ok(found.string === expected.string, "instant reset element string");
      ok(found.unichar === expected.unichar, "instant reset element unichar");
      ok(
        found.wstring_data === expected.wstring_data,
        "instant reset element wstring"
      );
      ok(found.file_data === expected.file_data, "instant reset element file");

      // check hasUserValue
      ok(
        !GetPreference(aPrefWindow, "tests.static_preference_int").hasUserValue,
        "instant reset hasUserValue int"
      );
      ok(
        !GetPreference(aPrefWindow, "tests.static_preference_bool").hasUserValue,
        "instant reset hasUserValue bool"
      );
      ok(
        !GetPreference(aPrefWindow, "tests.static_preference_string").hasUserValue,
        "instant reset hasUserValue string"
      );
      ok(
        !GetPreference(aPrefWindow, "tests.static_preference_unichar").hasUserValue,
        "instant reset hasUserValue unichar"
      );
      ok(
        !GetPreference(aPrefWindow, "tests.static_preference_wstring").hasUserValue,
        "instant reset hasUserValue wstring"
      );
      ok(
        !GetPreference(aPrefWindow, "tests.static_preference_file").hasUserValue,
        "instant reset hasUserValue file"
      );
    }

    function RunCheckCommandRedirect(aPrefWindow) {
      ok(
        GetPreference(aPrefWindow, "tests.static_preference_bool").value,
        "redirected command bool"
      );
      GetXULElement(aPrefWindow, "checkbox").click();
      ok(
        !GetPreference(aPrefWindow, "tests.static_preference_bool").value,
        "redirected command bool"
      );
      GetXULElement(aPrefWindow, "checkbox").click();
      ok(
        GetPreference(aPrefWindow, "tests.static_preference_bool").value,
        "redirected command bool"
      );
    }

    function RunCheckDisabled(aPrefWindow) {
      ok(
        !GetXULElement(aPrefWindow, "disabled_checkbox").disabled,
        "Checkbox should be enabled"
      );
      GetPreference(
        aPrefWindow,
        "tests.disabled_preference_bool"
      ).updateControlDisabledState(true);
      ok(
        GetXULElement(aPrefWindow, "disabled_checkbox").disabled,
        "Checkbox should be disabled"
      );
      GetPreference(
        aPrefWindow,
        "tests.locked_preference_bool"
      ).updateControlDisabledState(false);
      ok(
        GetXULElement(aPrefWindow, "locked_checkbox").disabled,
        "Locked checkbox should stay disabled"
      );
      SimpleTest.finish();
    }

    function RunResetPrefTest(aPrefWindow) {
      // try resetting the prefs to default values
      GetPreference(aPrefWindow, "tests.static_preference_int").reset();
      GetPreference(aPrefWindow, "tests.static_preference_bool").reset();
      GetPreference(aPrefWindow, "tests.static_preference_string").reset();
      GetPreference(aPrefWindow, "tests.static_preference_unichar").reset();
      GetPreference(aPrefWindow, "tests.static_preference_wstring").reset();
      GetPreference(aPrefWindow, "tests.static_preference_file").reset();
    }

    function RunTestApplyPref() {
      // Test in parent window.
      WritePrefsToSystem(kPrefValueSet1);
      window.browsingContext.topChromeWindow.openDialog(
        "window_preferences.xhtml",
        "",
        "modal",
        RunInstantPrefTest,
        false
      );

      // Test deferred reset in child window.
      WritePrefsToSystem(kPrefValueSet1);
      window.browsingContext.topChromeWindow.openDialog(
        "window_preferences2.xhtml",
        "",
        "modal",
        RunResetPrefTest,
        false
      );
      let expected = kPrefValueSet1;
      let found = ReadPrefsFromSystem();
      is(found.int, expected.int, "instant reset deferred int");
      is(found.bool, expected.bool, "instant reset deferred bool");
      is(found.string, expected.string, "instant reset deferred string");
      is(found.unichar, expected.unichar, "instant reset deferred unichar");
      is(
        found.wstring_data, expected.wstring_data,
        "instant reset deferred wstring"
      );
      todo_is(found.file_data, expected.file_data, "instant reset deferred file");

      // Test cancel in child window.
      WritePrefsToSystem(kPrefValueSet1);
      window.browsingContext.topChromeWindow.openDialog(
        "window_preferences2.xhtml",
        "",
        "modal",
        aPrefWindow => WritePrefsToPreferences(aPrefWindow, kPrefValueSet2),
        false
      );
      expected = kPrefValueSet1;
      found = ReadPrefsFromSystem();
      ok(found.int === expected.int, "non-instant cancel system int");
      ok(found.bool === expected.bool, "non-instant cancel system bool");
      ok(found.string === expected.string, "non-instant cancel system string");
      ok(found.unichar === expected.unichar, "non-instant cancel system unichar");
      ok(
        found.wstring_data === expected.wstring_data,
        "non-instant cancel system wstring"
      );
      todo(
        found.file_data === expected.file_data,
        "non-instant cancel system file"
      );

      // Test accept in child window.
      WritePrefsToSystem(kPrefValueSet1);
      window.browsingContext.topChromeWindow.openDialog(
        "window_preferences2.xhtml",
        "",
        "modal",
        aPrefWindow => WritePrefsToPreferences(aPrefWindow, kPrefValueSet2),
        true
      );
      expected = kPrefValueSet2;
      found = ReadPrefsFromSystem();
      ok(found.int === expected.int, "non-instant accept system int");
      ok(found.bool === expected.bool, "non-instant accept system bool");
      ok(found.string === expected.string, "non-instant accept system string");
      ok(found.unichar === expected.unichar, "non-instant accept system unichar");
      ok(
        found.wstring_data === expected.wstring_data,
        "non-instant accept system wstring"
      );
      todo(
        found.file_data === expected.file_data,
        "non-instant accept system file"
      );

      // Test deferred reset in child window.
      WritePrefsToSystem(kPrefValueSet1);
      window.browsingContext.topChromeWindow.openDialog(
        "window_preferences2.xhtml",
        "",
        "modal",
        RunResetPrefTest,
        true
      );
      expected = CreateEmptyPrefValueSet();
      found = ReadPrefsFromSystem();
      ok(found.int === expected.int, "non-instant reset deferred int");
      ok(found.bool === expected.bool, "non-instant reset deferred bool");
      ok(found.string === expected.string, "non-instant reset deferred string");
      ok(found.unichar === expected.unichar, "non-instant reset deferred unichar");
      ok(
        found.wstring_data === expected.wstring_data,
        "non-instant reset deferred wstring"
      );
      ok(found.file_data === expected.file_data, "non-instant reset deferred file");
    }

    function RunTestCommandRedirect() {
      WritePrefsToSystem(kPrefValueSet1);
      window.browsingContext.topChromeWindow.openDialog(
        "window_preferences_commandretarget.xhtml",
        "",
        "modal",
        RunCheckCommandRedirect,
        true
      );
    }

    function RunTestDisabled() {
      // Because this pref is on the default branch and locked, we need to set it before opening the dialog.
      const defaultBranch = kPref.getDefaultBranch("");
      defaultBranch.setBoolPref("tests.locked_preference_bool", true);
      defaultBranch.lockPref("tests.locked_preference_bool");
      window.browsingContext.topChromeWindow.openDialog(
        "window_preferences_disabled.xhtml",
        "",
        "modal",
        RunCheckDisabled,
        true
      );
    }

    function RunTest() {
      RunTestApplyPref();
      RunTestCommandRedirect();
      RunTestDisabled();
    }
  ]]>
  </script>

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

</window>

[ Dauer der Verarbeitung: 0.37 Sekunden  ]

                                                                                                                                                                                                                                                                                                                                                                                                     


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