Bug 1315911 - Disable time picker UI by making it pref-off by default; r=mconley draft
authorScott Wu <scottcwwu@gmail.com>
Tue, 08 Nov 2016 19:07:50 +0800
changeset 436636 ffce1aaa270a5e5a977a804dc202dcad9c85dc19
parent 435182 f13e90d496cf1bc6dfc4fd398da33e4afe785bde
child 536412 018d62454fa2299d697804d923dd7b4b3b6c81a0
push id35162
push userbmo:scwwu@mozilla.com
push dateWed, 09 Nov 2016 15:46:26 +0000
reviewersmconley
bugs1315911
milestone52.0a1
Bug 1315911 - Disable time picker UI by making it pref-off by default; r=mconley MozReview-Commit-ID: 2kpzN27KzaB
modules/libpref/init/all.js
toolkit/content/browser-content.js
--- a/modules/libpref/init/all.js
+++ b/modules/libpref/init/all.js
@@ -1182,16 +1182,19 @@ pref("dom.forms.number", true);
 // Enable <input type=color> by default. It will be turned off for remaining
 // platforms which don't have a color picker implemented yet.
 pref("dom.forms.color", true);
 
 // Support for input type=date, time, month, week and datetime-local. By
 // default, disabled.
 pref("dom.forms.datetime", false);
 
+// Enable time picker UI. By default, disabled.
+pref("dom.forms.datetime.timepicker", false);
+
 // Support for new @autocomplete values
 pref("dom.forms.autocomplete.experimental", false);
 
 // Enables requestAutocomplete DOM API on forms.
 pref("dom.forms.requestAutocomplete", false);
 
 // Enable Directory API. By default, disabled.
 pref("dom.input.dirpicker", false);
--- a/toolkit/content/browser-content.js
+++ b/toolkit/content/browser-content.js
@@ -1639,17 +1639,20 @@ let DateTimePickerListener = {
   },
 
   /**
    * Helper function that returns the rect of the element, which is the position
    * relative to the left/top of the content area.
    */
   getBoundingContentRect: function(aElement) {
     return BrowserUtils.getElementBoundingRect(aElement);
-    // return BrowserUtils.getElementBoundingScreenRect(aElement);
+  },
+
+  getTimePickerPref: function() {
+    return Services.prefs.getBoolPref("dom.forms.datetime.timepicker");
   },
 
   /**
    * nsIMessageListener.
    */
   receiveMessage: function(aMessage) {
     switch (aMessage.name) {
       case "FormDateTime:PickerClosed": {
@@ -1667,17 +1670,19 @@ let DateTimePickerListener = {
 
   /**
    * nsIDOMEventListener, for chrome events sent by the input element and other
    * DOM events.
    */
   handleEvent: function(aEvent) {
     switch (aEvent.type) {
       case "MozOpenDateTimePicker": {
-        if (!(aEvent.originalTarget instanceof content.HTMLInputElement)) {
+        // Time picker is disabled when preffed off
+        if (!(aEvent.originalTarget instanceof content.HTMLInputElement) ||
+            (aEvent.originalTarget.type == "time" && !this.getTimePickerPref())) {
           return;
         }
         this._inputElement = aEvent.originalTarget;
         this._inputElement.setDateTimePickerState(true);
         this.addListeners();
 
         let value = this._inputElement.getDateTimeInputBoxValue();
         sendAsyncMessage("FormDateTime:OpenPicker", {