mobile/android/chrome/content/InputWidgetHelper.js

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /* This Source Code Form is subject to the terms of the Mozilla Public
     2  * License, v. 2.0. If a copy of the MPL was not distributed with this file,
     3  * You can obtain one at http://mozilla.org/MPL/2.0/. */
     4 "use strict";
     6 var InputWidgetHelper = {
     7   _uiBusy: false,
     9   handleEvent: function(aEvent) {
    10     this.handleClick(aEvent.target);
    11   },
    13   handleClick: function(aTarget) {
    14     // if we're busy looking at a InputWidget we want to eat any clicks that
    15     // come to us, but not to process them
    16     if (this._uiBusy || !this.hasInputWidget(aTarget))
    17       return;
    19     this._uiBusy = true;
    20     this.show(aTarget);
    21     this._uiBusy = false;
    22   },
    24   show: function(aElement) {
    25     let type = aElement.getAttribute('type');
    26     let p = new Prompt({
    27       window: aElement.ownerDocument.defaultView,
    28       title: Strings.browser.GetStringFromName("inputWidgetHelper." + aElement.getAttribute('type')),
    29       buttons: [
    30         Strings.browser.GetStringFromName("inputWidgetHelper.set"),
    31         Strings.browser.GetStringFromName("inputWidgetHelper.clear"),
    32         Strings.browser.GetStringFromName("inputWidgetHelper.cancel")
    33       ],
    34     }).addDatePicker({
    35       value: aElement.value,
    36       type: type,
    37     }).show((function(data) {
    38       let changed = false;
    39       if (data.button == -1) {
    40         // This type is not supported with this android version.
    41         return;
    42       }
    43       if (data.button == 1) {
    44         // The user cleared the value.
    45         if (aElement.value != "") {
    46           aElement.value = "";
    47           changed = true;
    48         }
    49       } else if (data.button == 0) {
    50         // Commit the new value.
    51         if (aElement.value != data[type]) {
    52           aElement.value = data[type + "0"];
    53           changed = true;
    54         }
    55       }
    56       // Else the user canceled the input.
    58       if (changed)
    59         this.fireOnChange(aElement);
    60     }).bind(this));
    61   },
    63   hasInputWidget: function(aElement) {
    64     if (!aElement instanceof HTMLInputElement)
    65       return false;
    67     let type = aElement.getAttribute('type');
    68     if (type == "date" || type == "datetime" || type == "datetime-local" ||
    69         type == "week" || type == "month" || type == "time") {
    70       return true;
    71     }
    73     return false;
    74   },
    76   fireOnChange: function(aElement) {
    77     let evt = aElement.ownerDocument.createEvent("Events");
    78     evt.initEvent("change", true, true, aElement.defaultView, 0,
    79                   false, false,
    80                   false, false, null);
    81     setTimeout(function() {
    82       aElement.dispatchEvent(evt);
    83     }, 0);
    84   }
    85 };

mercurial