Make WordPress Core

Ticket #25073: 25073-7.patch

File 25073-7.patch, 1.9 KB (added by azaozz, 11 years ago)
  • src/wp-includes/js/heartbeat.js

     
    3434        var Heartbeat = function() {
    3535                var $document = $(document),
    3636                        settings = {
    37                                 // Used to stop the "beat"
    38                                 isRunning: true,
     37                                // Suspend/resume
     38                                suspended: false,
    3939
    4040                                // Current screen id, defaults to the JS global 'pagenow' when present (in the admin) or 'front'
    4141                                screenId: '',
     
    145145                                focused();
    146146                        }).on( 'unload.wp-heartbeat', function() {
    147147                                // Don't connect any more
    148                                 settings.isRunning = false;
     148                                settings.suspended = true;
     149
     150                                // Abort the last request if not completed
     151                                if ( settings.xhr && settings.xhr.readyState !== 4 ) {
     152                                        settings.xhr.abort();
     153                                }
    149154                        });
    150155
    151156                        // Check for user activity every 30 seconds.
     
    274279
    275280                        // If the connection to the server is slower than the interval,
    276281                        // heartbeat connects as soon as the previous connection's response is received.
    277                         if ( settings.connecting ) {
     282                        if ( settings.connecting || settings.suspended ) {
    278283                                return;
    279284                        }
    280285
     
    351356                        var delta = time() - settings.lastTick,
    352357                                interval = settings.mainInterval;
    353358
    354                         if ( ! settings.isRunning ) {
     359                        if ( settings.suspended ) {
    355360                                return;
    356361                        }
    357362
     
    403408                        clearFocusTimers();
    404409                        settings.userActivity = time();
    405410
     411                        // Resume if suspended
     412                        settings.suspended = false;
     413
    406414                        if ( ! settings.hasFocus ) {
    407415                                settings.hasFocus = true;
    408416                                scheduleNextTick();
     
    513521                                blurred();
    514522                        }
    515523
     524                        if ( lastActive > 1800000 ) {
     525                                // Suspend after 30 min. of inactivity
     526                                settings.suspended = true;
     527                        }
     528
    516529                        if ( ! settings.userActivityEvents ) {
    517530                                $document.on( 'mouseover.wp-heartbeat-active keyup.wp-heartbeat-active', function(){ userIsActive(); } );
    518531