You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@cordova.apache.org by "Andrew Grieve (JIRA)" <ji...@apache.org> on 2013/02/25 16:40:13 UTC

[jira] [Commented] (CB-2531) CordovaCommandResult must be available to native before device ready.

    [ https://issues.apache.org/jira/browse/CB-2531?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13585933#comment-13585933 ] 

Andrew Grieve commented on CB-2531:
-----------------------------------

Hey Jesse,

Looking at bootstrap.js:

{code}
    /**
     * Create all cordova objects once page has fully loaded and native side is ready.
     */
    var joinEvents = [ channel.onDOMContentLoaded, channel.onNativeReady ];

    // If this property is set to something truthy, join on onPluginsReady too.
    // This property is set by the automatic JS installation prototype in cordova-cli,
    // and will be removed when the prototype either becomes mainline or is dropped.
    if (window.__onPluginsLoadedHack) {
        joinEvents.push(channel.onPluginsReady);
    }

    channel.join(function() {
        var builder = require('cordova/builder'),
            platform = require('cordova/platform');

        builder.buildIntoButDoNotClobber(platform.defaults, context);
        builder.buildIntoAndClobber(platform.clobbers, context);
        builder.buildIntoAndMerge(platform.merges, context);

        // Call the platform-specific initialization
        platform.initialize();

        // Fire event to notify that all objects are created
        channel.onCordovaReady.fire();

        // Fire onDeviceReady event once all constructors have run and
        // cordova info has been received from native side.
        channel.join(function() {
            require('cordova').fireDocumentEvent('deviceready');
        }, channel.deviceReadyChannelsArray);

    }, joinEvents);

{code}

Builder & platform.initialize() come right after one-another, so moving from builder -> platform.initialize shouldn't make a difference.

Maybe it not being available before nativeready is a pre-existing bug? It might make more sense to put onNativeReady in the deviceReadyChannelsArray instead of waiting for it before calling platform.initialize. WDYT?
                
> CordovaCommandResult must be available to native before device ready.
> ---------------------------------------------------------------------
>
>                 Key: CB-2531
>                 URL: https://issues.apache.org/jira/browse/CB-2531
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: CordovaJS
>    Affects Versions: 2.5.0
>         Environment: WP7 + WP8
>            Reporter: Jesse MacFadyen
>            Assignee: Andrew Grieve
>            Priority: Blocker
>             Fix For: 2.5.0
>
>
> The commit: https://git-wip-us.apache.org/repos/asf?p=cordova-js.git;a=commitdiff;h=c59a6b178a93c5108b2495a61a7f4922b4024024;hp=f88c86bea92b7061370c0e74ace1c9c69e36f2de
> Moves the creation of CordovaCommandResult to too late in the load cycle.
> This interface needs to be available to native before deviceready, so using platform.js initialize is too late, and device ready cannot fire.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira