browser/metro/base/content/BrowserTouchHandler.js

Wed, 31 Dec 2014 06:55:50 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:55:50 +0100
changeset 2
7e26c7da4463
permissions
-rw-r--r--

Added tag UPSTREAM_283F7C6 for changeset ca08bd8f51b2

     1 /*
     2  * BrowserTouchHandler
     3  *
     4  * Receives touch events from our input event capturing in input.js
     5  * and relays appropriate events to content. Also handles requests
     6  * from content for UI.
     7  */
     9 const BrowserTouchHandler = {
    10   _debugEvents: false,
    12   init: function init() {
    13     // Misc. events we catch during the bubbling phase
    14     document.addEventListener("PopupChanged", this, false);
    15     document.addEventListener("CancelTouchSequence", this, false);
    17     // Messages sent from content.js
    18     messageManager.addMessageListener("Content:ContextMenu", this);
    19     messageManager.addMessageListener("Content:SelectionCaret", this);
    20   },
    22   // Content forwarding the contextmenu command
    23   _onContentContextMenu: function _onContentContextMenu(aMessage) {
    24     // Note, target here is the target of the message manager message,
    25     // usually the browser.
    26     // Touch input selection handling
    27     if (!InputSourceHelper.isPrecise &&
    28         !SelectionHelperUI.isActive &&
    29         SelectionHelperUI.canHandleContextMenuMsg(aMessage)) {
    30       SelectionHelperUI.openEditSession(aMessage.target,
    31                                         aMessage.json.xPos,
    32                                         aMessage.json.yPos);
    33       return;
    34     }
    36     // Check to see if we have context menu item(s) that apply to what
    37     // was clicked on.
    38     let contextInfo = { name: aMessage.name,
    39                         json: aMessage.json,
    40                         target: aMessage.target };
    41     if (ContextMenuUI.showContextMenu(contextInfo)) {
    42       let event = document.createEvent("Events");
    43       event.initEvent("CancelTouchSequence", true, false);
    44       document.dispatchEvent(event);
    45     } else {
    46       // Send the MozEdgeUIGesture to input.js to
    47       // toggle the context ui.
    48       let event = document.createEvent("Events");
    49       event.initEvent("MozEdgeUICompleted", true, false);
    50       window.dispatchEvent(event);
    51     }
    52   },
    54   /*
    55    * Called when Content wants to initiate selection management
    56    * due to a tap in a form input.
    57    */
    58   _onCaretSelectionStarted: function _onCaretSelectionStarted(aMessage) {
    59     SelectionHelperUI.attachToCaret(aMessage.target,
    60                                     aMessage.json.xPos,
    61                                     aMessage.json.yPos);
    62   },
    64   /*
    65    * Events
    66    */
    68   handleEvent: function handleEvent(aEvent) {
    69     // ignore content events we generate
    70     if (aEvent.target == document)
    71       return;
    73     if (this._debugEvents)
    74       Util.dumpLn("BrowserTouchHandler:", aEvent.type);
    76     switch (aEvent.type) {
    77       case "PopupChanged":
    78       case "CancelTouchSequence":
    79         if (!aEvent.detail)
    80           ContextMenuUI.reset();
    81         break;
    82     }
    83   },
    85   receiveMessage: function receiveMessage(aMessage) {
    86     if (this._debugEvents) Util.dumpLn("BrowserTouchHandler:", aMessage.name);
    87     switch (aMessage.name) {
    88       // Content forwarding the contextmenu command
    89       case "Content:ContextMenu":
    90         this._onContentContextMenu(aMessage);
    91         break;
    92       case "Content:SelectionCaret":
    93         this._onCaretSelectionStarted(aMessage);
    94         break;
    95     }
    96   },
    97 };

mercurial