You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "venkata guddanti (JIRA)" <ji...@apache.org> on 2016/12/06 23:08:58 UTC

[jira] [Updated] (CB-12193) cordova.js crashes windows app if there is no CoreWindow

     [ https://issues.apache.org/jira/browse/CB-12193?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

venkata guddanti updated CB-12193:
----------------------------------
    Attachment: CordovaTest.zip

Attached is a sample to reproduce this issue. 

- The app is simply a main html page that hosts a webview with cordova.js.
- The app dies when the page is loaded. 
- If you simply comment out injectBackButtonHandler(); in cordova.js app runs fine.

In our framework we also  have a usecase where WinJS base.js is preloaded and in that case as well the app dies. With the simple sample I am seeing that after I comment out njectBackButtonHandler(), there is a WinJS exception being thrown from app.start(). In our framework we are not seeing it (which might be timing related). 

> cordova.js crashes windows app if there is no CoreWindow
> --------------------------------------------------------
>
>                 Key: CB-12193
>                 URL: https://issues.apache.org/jira/browse/CB-12193
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Windows
>         Environment: Windows 10
>            Reporter: venkata guddanti
>            Priority: Critical
>         Attachments: CordovaTest.zip
>
>
> The back button support in cordova.js crashes windows app. In particular the following line crashes:
> var navigationManager = Windows.UI.Core.SystemNavigationManager.getForCurrentView();
> Putting try catch around it does not help. It crashes deep in the bowels of native code. So I believe there should a fix similar to the following code in WinJS base.js:
>     // If getForCurrentView fails, it is an indication that we are running in a WebView without
>     // a CoreWindow where some WinRT APIs are not available. In this case, we just treat it as
>     // if no WinRT APIs are available.
>     var isCoreWindowAvailable = false;
>     try{
>       _Global.Windows.UI.ViewManagement.InputPane.getForCurrentView();
>       isCoreWindowAvailable = true;
>     }
>     catch (e){
>     }
> You can then skip setting up the back button handler if there is no CoreWindow:
> if (isCoreWindowAvailable)
>       {
>         var navigationManager = Windows.UI.Core.SystemNavigationManager.getForCurrentView();
>         ...
> }
> I am aware that Cordova Windows 10 is not supported in a WebView (i.e. there is no CoreWindow). But WinJS and majority of Windows APIs work. Cordova 4.0.0 used to work as well, since there was no back button support in it. Plugins that need CoreWindow (i.e. plugins that show native UI) like Camera etc have issues without it. We have a framework where we proxy these plugins through the main application Window (similar to iOS and Android).
> Please do consider this and incorporate a fix in cordova for Windows 10



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscribe@cordova.apache.org
For additional commands, e-mail: issues-help@cordova.apache.org