# all files / ol/ net.js

100% Statements 18/18
100% Branches 6/6
100% Functions 4/4
100% Lines 18/18

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    381×

    1×
    4×
    4×
    1×
    7×
    7×

    4×
    4×

    4×
    4×
    4×
    1×

    4×
    3×
    3×
    3×

    4×

     goog.provide('ol.net');

    /**
     * Simple JSONP helper. Supports error callbacks and a custom callback param.
     * The error callback will be called when no JSONP is executed after 10 seconds.
     *
     * @param {string} url Request url. A 'callback' query parameter will be
     *     appended.
     * @param {Function} callback Callback on success.
     * @param {function()=} opt_errback Callback on error.
     * @param {string=} opt_callbackParam Custom query parameter for the JSONP
     *     callback. Default is 'callback'.
     */
    ol.net.jsonp = function(url, callback, opt_errback, opt_callbackParam) {
      var script = goog.global.document.createElement('script');
      var key = 'olc_' + goog.getUid(callback);
      function cleanup() {
        delete goog.global[key];
        script.parentNode.removeChild(script);
      }
      script.async = true;
      script.src = url + (url.indexOf('?') == -1 ? '?' : '&') +
          (opt_callbackParam || 'callback') + '=' + key;
      var timer = goog.global.setTimeout(function() {
        cleanup();
        if (opt_errback) {
          opt_errback();
        }
      }, 10000);
      goog.global[key] = function(data) {
        goog.global.clearTimeout(timer);
        cleanup();
        callback(data);
      };
      goog.global.document.getElementsByTagName('head')[0].appendChild(script);
    };