LCOV - code coverage report
Current view: top level - widget - SharedWidgetUtils.cpp (source / functions) Hit Total Coverage
Test: output.info Lines: 0 111 0.0 %
Date: 2017-07-14 16:53:18 Functions: 0 4 0.0 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
       2             :  *
       3             :  * This Source Code Form is subject to the terms of the Mozilla Public
       4             :  * License, v. 2.0. If a copy of the MPL was not distributed with this
       5             :  * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
       6             : 
       7             : #include "WidgetUtils.h"
       8             : 
       9             : #include "mozilla/TextEvents.h"
      10             : 
      11             : #include "nsIBaseWindow.h"
      12             : #include "nsIDocShellTreeItem.h"
      13             : #include "nsIDocShell.h"
      14             : #include "nsIInterfaceRequestorUtils.h"
      15             : #include "nsPIDOMWindow.h"
      16             : 
      17             : namespace mozilla {
      18             : namespace widget {
      19             : 
      20             : // static
      21             : void
      22           0 : WidgetUtils::Shutdown()
      23             : {
      24           0 :   WidgetKeyboardEvent::Shutdown();
      25           0 : }
      26             : 
      27             : // static
      28             : already_AddRefed<nsIWidget>
      29           0 : WidgetUtils::DOMWindowToWidget(nsPIDOMWindowOuter* aDOMWindow)
      30             : {
      31           0 :   nsCOMPtr<nsIWidget> widget;
      32           0 :   nsCOMPtr<nsPIDOMWindowOuter> window = aDOMWindow;
      33             : 
      34           0 :   if (window) {
      35           0 :     nsCOMPtr<nsIBaseWindow> baseWin(do_QueryInterface(window->GetDocShell()));
      36             : 
      37           0 :     while (!widget && baseWin) {
      38           0 :       baseWin->GetParentWidget(getter_AddRefs(widget));
      39           0 :       if (!widget) {
      40           0 :         nsCOMPtr<nsIDocShellTreeItem> docShellAsItem(do_QueryInterface(baseWin));
      41           0 :         if (!docShellAsItem)
      42           0 :           return nullptr;
      43             : 
      44           0 :         nsCOMPtr<nsIDocShellTreeItem> parent;
      45           0 :         docShellAsItem->GetParent(getter_AddRefs(parent));
      46             : 
      47           0 :         window = do_GetInterface(parent);
      48           0 :         if (!window)
      49           0 :           return nullptr;
      50             : 
      51           0 :         baseWin = do_QueryInterface(window->GetDocShell());
      52             :       }
      53             :     }
      54             :   }
      55             : 
      56           0 :   return widget.forget();
      57             : }
      58             : 
      59             : // static
      60             : uint32_t
      61           0 : WidgetUtils::ComputeKeyCodeFromChar(uint32_t aCharCode)
      62             : {
      63           0 :   if (aCharCode >= 'A' && aCharCode <= 'Z') {
      64           0 :     return aCharCode - 'A' + NS_VK_A;
      65             :   }
      66           0 :   if (aCharCode >= 'a' && aCharCode <= 'z') {
      67           0 :     return aCharCode - 'a' + NS_VK_A;
      68             :   }
      69           0 :   if (aCharCode >= '0' && aCharCode <= '9') {
      70           0 :     return aCharCode - '0' + NS_VK_0;
      71             :   }
      72           0 :   switch (aCharCode) {
      73           0 :     case ' ': return NS_VK_SPACE;
      74           0 :     case '\t': return NS_VK_TAB;
      75           0 :     case ':': return NS_VK_COLON;
      76           0 :     case ';': return NS_VK_SEMICOLON;
      77           0 :     case '<': return NS_VK_LESS_THAN;
      78           0 :     case '=': return NS_VK_EQUALS;
      79           0 :     case '>': return NS_VK_GREATER_THAN;
      80           0 :     case '?': return NS_VK_QUESTION_MARK;
      81           0 :     case '@': return NS_VK_AT;
      82           0 :     case '^': return NS_VK_CIRCUMFLEX;
      83           0 :     case '!': return NS_VK_EXCLAMATION;
      84           0 :     case '"': return NS_VK_DOUBLE_QUOTE;
      85           0 :     case '#': return NS_VK_HASH;
      86           0 :     case '$': return NS_VK_DOLLAR;
      87           0 :     case '%': return NS_VK_PERCENT;
      88           0 :     case '&': return NS_VK_AMPERSAND;
      89           0 :     case '_': return NS_VK_UNDERSCORE;
      90           0 :     case '(': return NS_VK_OPEN_PAREN;
      91           0 :     case ')': return NS_VK_CLOSE_PAREN;
      92           0 :     case '*': return NS_VK_ASTERISK;
      93           0 :     case '+': return NS_VK_PLUS;
      94           0 :     case '|': return NS_VK_PIPE;
      95           0 :     case '-': return NS_VK_HYPHEN_MINUS;
      96           0 :     case '{': return NS_VK_OPEN_CURLY_BRACKET;
      97           0 :     case '}': return NS_VK_CLOSE_CURLY_BRACKET;
      98           0 :     case '~': return NS_VK_TILDE;
      99           0 :     case ',': return NS_VK_COMMA;
     100           0 :     case '.': return NS_VK_PERIOD;
     101           0 :     case '/': return NS_VK_SLASH;
     102           0 :     case '`': return NS_VK_BACK_QUOTE;
     103           0 :     case '[': return NS_VK_OPEN_BRACKET;
     104           0 :     case '\\': return NS_VK_BACK_SLASH;
     105           0 :     case ']': return NS_VK_CLOSE_BRACKET;
     106           0 :     case '\'': return NS_VK_QUOTE;
     107             :   }
     108           0 :   return 0;
     109             : }
     110             : 
     111             : // static
     112             : void
     113           0 : WidgetUtils::GetLatinCharCodeForKeyCode(uint32_t aKeyCode,
     114             :                                         bool aIsCapsLock,
     115             :                                         uint32_t* aUnshiftedCharCode,
     116             :                                         uint32_t* aShiftedCharCode)
     117             : {
     118           0 :   MOZ_ASSERT(aUnshiftedCharCode && aShiftedCharCode,
     119             :              "aUnshiftedCharCode and aShiftedCharCode must not be NULL");
     120             : 
     121           0 :   if (aKeyCode >= NS_VK_A && aKeyCode <= NS_VK_Z) {
     122           0 :     *aUnshiftedCharCode = *aShiftedCharCode = aKeyCode;
     123           0 :     if (aIsCapsLock) {
     124           0 :       *aShiftedCharCode += 0x20;
     125             :     } else {
     126           0 :       *aUnshiftedCharCode += 0x20;
     127             :     }
     128           0 :     return;
     129             :   }
     130             : 
     131             :   // aShiftedCharCode must be zero for non-alphabet keys.
     132           0 :   *aShiftedCharCode = 0;
     133             : 
     134           0 :   if (aKeyCode >= NS_VK_0 && aKeyCode <= NS_VK_9) {
     135           0 :     *aUnshiftedCharCode = aKeyCode;
     136           0 :     return;
     137             :   }
     138             : 
     139           0 :   switch (aKeyCode) {
     140           0 :     case NS_VK_SPACE:               *aUnshiftedCharCode = ' '; break;
     141           0 :     case NS_VK_COLON:               *aUnshiftedCharCode = ':'; break;
     142           0 :     case NS_VK_SEMICOLON:           *aUnshiftedCharCode = ';'; break;
     143           0 :     case NS_VK_LESS_THAN:           *aUnshiftedCharCode = '<'; break;
     144           0 :     case NS_VK_EQUALS:              *aUnshiftedCharCode = '='; break;
     145           0 :     case NS_VK_GREATER_THAN:        *aUnshiftedCharCode = '>'; break;
     146           0 :     case NS_VK_QUESTION_MARK:       *aUnshiftedCharCode = '?'; break;
     147           0 :     case NS_VK_AT:                  *aUnshiftedCharCode = '@'; break;
     148           0 :     case NS_VK_CIRCUMFLEX:          *aUnshiftedCharCode = '^'; break;
     149           0 :     case NS_VK_EXCLAMATION:         *aUnshiftedCharCode = '!'; break;
     150           0 :     case NS_VK_DOUBLE_QUOTE:        *aUnshiftedCharCode = '"'; break;
     151           0 :     case NS_VK_HASH:                *aUnshiftedCharCode = '#'; break;
     152           0 :     case NS_VK_DOLLAR:              *aUnshiftedCharCode = '$'; break;
     153           0 :     case NS_VK_PERCENT:             *aUnshiftedCharCode = '%'; break;
     154           0 :     case NS_VK_AMPERSAND:           *aUnshiftedCharCode = '&'; break;
     155           0 :     case NS_VK_UNDERSCORE:          *aUnshiftedCharCode = '_'; break;
     156           0 :     case NS_VK_OPEN_PAREN:          *aUnshiftedCharCode = '('; break;
     157           0 :     case NS_VK_CLOSE_PAREN:         *aUnshiftedCharCode = ')'; break;
     158           0 :     case NS_VK_ASTERISK:            *aUnshiftedCharCode = '*'; break;
     159           0 :     case NS_VK_PLUS:                *aUnshiftedCharCode = '+'; break;
     160           0 :     case NS_VK_PIPE:                *aUnshiftedCharCode = '|'; break;
     161           0 :     case NS_VK_HYPHEN_MINUS:        *aUnshiftedCharCode = '-'; break;
     162           0 :     case NS_VK_OPEN_CURLY_BRACKET:  *aUnshiftedCharCode = '{'; break;
     163           0 :     case NS_VK_CLOSE_CURLY_BRACKET: *aUnshiftedCharCode = '}'; break;
     164           0 :     case NS_VK_TILDE:               *aUnshiftedCharCode = '~'; break;
     165           0 :     case NS_VK_COMMA:               *aUnshiftedCharCode = ','; break;
     166           0 :     case NS_VK_PERIOD:              *aUnshiftedCharCode = '.'; break;
     167           0 :     case NS_VK_SLASH:               *aUnshiftedCharCode = '/'; break;
     168           0 :     case NS_VK_BACK_QUOTE:          *aUnshiftedCharCode = '`'; break;
     169           0 :     case NS_VK_OPEN_BRACKET:        *aUnshiftedCharCode = '['; break;
     170           0 :     case NS_VK_BACK_SLASH:          *aUnshiftedCharCode = '\\'; break;
     171           0 :     case NS_VK_CLOSE_BRACKET:       *aUnshiftedCharCode = ']'; break;
     172           0 :     case NS_VK_QUOTE:               *aUnshiftedCharCode = '\''; break;
     173           0 :     default:                        *aUnshiftedCharCode = 0; break;
     174             :   }
     175             : }
     176             : 
     177             : } // namespace widget
     178             : } // namespace mozilla

Generated by: LCOV version 1.13