Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

$SnifferProvider incorrectly detect NW.js as not supporting history API #15474

Closed
ghostoy opened this issue Dec 8, 2016 · 3 comments
Closed

Comments

@ghostoy
Copy link

ghostoy commented Dec 8, 2016

Note: for support questions, please use one of these channels: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#question. This repository's issues are reserved for feature requests and bug reports.

Do you want to request a feature or report a bug?

bug

What is the current behavior?

$SnifferProvider detects NW.js as Chrome App, therefore not supporting history API. This caused angular-ui-router buggy with html5Mode on.

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).

Load an Angular.js app in NW.js and check the value of $sniffer.history in DevTools. See nwjs/nw.js#5478 for sample app.

What is the expected behavior?

Should return true for NW.js app

What is the motivation / use case for changing the behavior?

See nwjs/nw.js#5478

Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.

1.5.7

Other information (e.g. stacktraces, related issues, suggestions how to fix)

NW.js app can make use both Chrome App APIs and Node.js APIs. So $SnifferProvider detects NW.js app as Chrome App. But NW.js app supports HTML5 history API, which is different from Chrome App.

Fix can be done by changing following lines in $SnifferProvider:

        isNwjs = $window.nw && $window.nw.process,
        hasHistoryPushState = (isNwjs || !isChromePackagedApp) && $window.history && $window.history.pushState,
@ghostoy ghostoy changed the title $SnifferProvider incorrectly detect NW.js as not supporting history API $SnifferProvider incorrectly detect NW.js as not supporting history API Dec 8, 2016
@petebacondarwin petebacondarwin added this to the 1.5.x milestone Dec 8, 2016
@lili21
Copy link

lili21 commented Jan 20, 2017

any updates ?

@gkalpak
Copy link
Member

gkalpak commented Jan 20, 2017

Not yet, but the PRs plz! label is there 😉

@frederikprijck
Copy link
Contributor

I'm looking into it, I'll send a PR when done.

gkalpak pushed a commit that referenced this issue Jan 26, 2017
Previously `$sniffer` incorrectly detected NW.js apps as Chrome Packaged Apps,
disallowing them to use the history API.

This commit correctly detects NW.js apps and allows them to use the History API.

Fixes #15474

Closes #15633
ellimist pushed a commit to ellimist/angular.js that referenced this issue Mar 15, 2017
Previously `$sniffer` incorrectly detected NW.js apps as Chrome Packaged Apps,
disallowing them to use the history API.

This commit correctly detects NW.js apps and allows them to use the History API.

Fixes angular#15474

Closes angular#15633
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

5 participants