Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-12105

window.device.model returns "Chrome" instead of "Edge" when using MS Edge

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Critical
    • Resolution: Fixed
    • 6.3.2
    • None
    • cordova-plugin-device
    • None

    Description

      When building for platform browser the cordova-plugin-device (v1.3.2) returns "Chrome" instead of "Edge" when requesting window.device.model on an Edge browser.

      In the DeviceProxy.js the following code is there: https://github.com/apache/cordova-plugin-device/blob/master/src/browser/DeviceProxy.js#L40

      function getBrowserInfo(getModel) {
          var userAgent = navigator.userAgent;
          var returnVal = '';
          var offset;
      
          if ((offset = userAgent.indexOf('Chrome')) !== -1) {
              returnVal = (getModel) ? 'Chrome' : userAgent.substring(offset + 7);
          } else if ((offset = userAgent.indexOf('Safari')) !== -1) {
              if (getModel) {
                  returnVal = 'Safari';
              } else {
                  returnVal = userAgent.substring(offset + 7);
      
                  if ((offset = userAgent.indexOf('Version')) !== -1) {
                      returnVal = userAgent.substring(offset + 8);
                  }
              }
          } else if ((offset = userAgent.indexOf('Firefox')) !== -1) {
              returnVal = (getModel) ? 'Firefox' : userAgent.substring(offset + 8);
          } else if ((offset = userAgent.indexOf('MSIE')) !== -1) {
              returnVal = (getModel) ? 'MSIE' : userAgent.substring(offset + 5);
          } else if ((offset = userAgent.indexOf('Trident')) !== -1) {
              returnVal = (getModel) ? 'MSIE' : '11';
          }
      
          if ((offset = returnVal.indexOf(';')) !== -1 || (offset = returnVal.indexOf(' ')) !== -1) {
              returnVal = returnVal.substring(0, offset);
          }
      
          return returnVal;
      }
      

      The code above returns model Chrome as soon as it is in the userAgent string. MS Edge provides the following userAgent string: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393

      So it seems we should be checking first if "Edge" is part of the userAgent. If so the browser would be Edge.

      Attachments

        Issue Links

          Activity

            People

              alsorokin Alexander Sorokin
              markdark81 Mark Veenstra
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: