Skip to content

New Edge browser based on Chromium not recognized correctly #113

@mark-veenstra

Description

@mark-veenstra

Bug Report

Problem

What is expected to happen?

The device.model which will execute this code, now detects the new Edge browser which is based on Chromium and released on 15th January as Chrome, which would be incorrect.

What does actually happen?

It detects the new Edge browser as Chrome.

Information

I think it should also not detect this new browser as Edge, but maybe as EdgeChromium? Because there are big difference between the "old" Edge en the new Chromium Edge. And maybe you would like to block the old Edge, but the new Edge is ok! Therefore the detection should return a different browser name I would suggest.

When the "old" Edge was released the following issue solved this check for the old Edge: https://issues.apache.org/jira/browse/CB-12105.

The new Chromium based Edge exposed the following userAgent string:

Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.88 Safari/537.36 Edg/79.0.309.54

Command or Code

This code has the issue: https://github.com/apache/cordova-plugin-device/blob/master/src/browser/DeviceProxy.js#L35

It could be updated to the next code to see a difference between the old and the new Edge.

function getBrowserInfo (getModel) {
    var userAgent = navigator.userAgent;
    var returnVal = '';
    var offset;

    if ((offset = userAgent.indexOf('Edge')) !== -1) {
        returnVal = (getModel) ? 'Edge' : userAgent.substring(offset + 5);
    } else if ((offset = userAgent.indexOf('Edg')) !== -1) {
        returnVal = (getModel) ? 'EdgeChromium' : userAgent.substring(offset + 4);
    } else 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;
}

Environment, Platform, Device

The new Edge released on 15th January

Version information

N/A

Checklist

  • I searched for existing GitHub issues
  • I updated all Cordova tooling to most recent version
  • I included all the necessary information above

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions