webshims-rails 0.4.6 → 0.4.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/lib/webshims-rails/version.rb +2 -2
  2. data/vendor/assets/javascripts/webshims/extras/mousepress.js +1 -1
  3. data/vendor/assets/javascripts/webshims/minified/extras/mousepress.js +1 -1
  4. data/vendor/assets/javascripts/webshims/minified/polyfiller.js +1 -1
  5. data/vendor/assets/javascripts/webshims/minified/shims/combos/1.js +1 -1
  6. data/vendor/assets/javascripts/webshims/minified/shims/combos/10.js +1 -1
  7. data/vendor/assets/javascripts/webshims/minified/shims/combos/11.js +1 -1
  8. data/vendor/assets/javascripts/webshims/minified/shims/combos/12.js +1 -1
  9. data/vendor/assets/javascripts/webshims/minified/shims/combos/13.js +1 -1
  10. data/vendor/assets/javascripts/webshims/minified/shims/combos/14.js +1 -1
  11. data/vendor/assets/javascripts/webshims/minified/shims/combos/15.js +1 -1
  12. data/vendor/assets/javascripts/webshims/minified/shims/combos/16.js +1 -1
  13. data/vendor/assets/javascripts/webshims/minified/shims/combos/17.js +1 -1
  14. data/vendor/assets/javascripts/webshims/minified/shims/combos/18.js +1 -1
  15. data/vendor/assets/javascripts/webshims/minified/shims/combos/19.js +1 -1
  16. data/vendor/assets/javascripts/webshims/minified/shims/combos/2.js +1 -1
  17. data/vendor/assets/javascripts/webshims/minified/shims/combos/20.js +1 -1
  18. data/vendor/assets/javascripts/webshims/minified/shims/combos/21.js +1 -1
  19. data/vendor/assets/javascripts/webshims/minified/shims/combos/22.js +1 -1
  20. data/vendor/assets/javascripts/webshims/minified/shims/combos/23.js +1 -1
  21. data/vendor/assets/javascripts/webshims/minified/shims/combos/24.js +1 -1
  22. data/vendor/assets/javascripts/webshims/minified/shims/combos/25.js +1 -1
  23. data/vendor/assets/javascripts/webshims/minified/shims/combos/26.js +1 -1
  24. data/vendor/assets/javascripts/webshims/minified/shims/combos/27.js +1 -1
  25. data/vendor/assets/javascripts/webshims/minified/shims/combos/3.js +1 -1
  26. data/vendor/assets/javascripts/webshims/minified/shims/combos/4.js +1 -1
  27. data/vendor/assets/javascripts/webshims/minified/shims/combos/5.js +1 -1
  28. data/vendor/assets/javascripts/webshims/minified/shims/combos/59.js +1 -1
  29. data/vendor/assets/javascripts/webshims/minified/shims/combos/6.js +1 -1
  30. data/vendor/assets/javascripts/webshims/minified/shims/combos/7.js +1 -1
  31. data/vendor/assets/javascripts/webshims/minified/shims/combos/8.js +1 -1
  32. data/vendor/assets/javascripts/webshims/minified/shims/combos/9.js +1 -1
  33. data/vendor/assets/javascripts/webshims/minified/shims/dom-extend.js +1 -1
  34. data/vendor/assets/javascripts/webshims/minified/shims/es5.js +1 -1
  35. data/vendor/assets/javascripts/webshims/minified/shims/form-core.js +1 -1
  36. data/vendor/assets/javascripts/webshims/minified/shims/form-datalist.js +1 -1
  37. data/vendor/assets/javascripts/webshims/minified/shims/form-number-date-ui.js +1 -1
  38. data/vendor/assets/javascripts/webshims/minified/shims/form-shim-extend.js +1 -1
  39. data/vendor/assets/javascripts/webshims/minified/shims/geolocation.js +1 -1
  40. data/vendor/assets/javascripts/webshims/minified/shims/json-storage.js +1 -1
  41. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-core.js +1 -1
  42. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-jaris.js +1 -1
  43. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-swf.js +1 -1
  44. data/vendor/assets/javascripts/webshims/minified/shims/mediaelement-yt.js +1 -1
  45. data/vendor/assets/javascripts/webshims/minified/shims/track-ui.js +1 -1
  46. data/vendor/assets/javascripts/webshims/minified/shims/track.js +1 -1
  47. data/vendor/assets/javascripts/webshims/polyfiller.js +10 -7
  48. data/vendor/assets/javascripts/webshims/shims/combos/1.js +51 -48
  49. data/vendor/assets/javascripts/webshims/shims/combos/10.js +126 -105
  50. data/vendor/assets/javascripts/webshims/shims/combos/11.js +50 -47
  51. data/vendor/assets/javascripts/webshims/shims/combos/12.js +97 -86
  52. data/vendor/assets/javascripts/webshims/shims/combos/13.js +49 -45
  53. data/vendor/assets/javascripts/webshims/shims/combos/14.js +2 -2
  54. data/vendor/assets/javascripts/webshims/shims/combos/15.js +1 -1
  55. data/vendor/assets/javascripts/webshims/shims/combos/16.js +168 -155
  56. data/vendor/assets/javascripts/webshims/shims/combos/17.js +168 -155
  57. data/vendor/assets/javascripts/webshims/shims/combos/18.js +9 -24
  58. data/vendor/assets/javascripts/webshims/shims/combos/19.js +121 -116
  59. data/vendor/assets/javascripts/webshims/shims/combos/2.js +82 -93
  60. data/vendor/assets/javascripts/webshims/shims/combos/20.js +75 -57
  61. data/vendor/assets/javascripts/webshims/shims/combos/21.js +11 -24
  62. data/vendor/assets/javascripts/webshims/shims/combos/22.js +77 -60
  63. data/vendor/assets/javascripts/webshims/shims/combos/23.js +59 -65
  64. data/vendor/assets/javascripts/webshims/shims/combos/24.js +169 -157
  65. data/vendor/assets/javascripts/webshims/shims/combos/25.js +99 -87
  66. data/vendor/assets/javascripts/webshims/shims/combos/26.js +170 -156
  67. data/vendor/assets/javascripts/webshims/shims/combos/27.js +128 -106
  68. data/vendor/assets/javascripts/webshims/shims/combos/3.js +83 -95
  69. data/vendor/assets/javascripts/webshims/shims/combos/4.js +71 -69
  70. data/vendor/assets/javascripts/webshims/shims/combos/5.js +71 -69
  71. data/vendor/assets/javascripts/webshims/shims/combos/59.js +72 -71
  72. data/vendor/assets/javascripts/webshims/shims/combos/6.js +8 -22
  73. data/vendor/assets/javascripts/webshims/shims/combos/7.js +8 -22
  74. data/vendor/assets/javascripts/webshims/shims/combos/8.js +97 -86
  75. data/vendor/assets/javascripts/webshims/shims/combos/9.js +124 -102
  76. data/vendor/assets/javascripts/webshims/shims/dom-extend.js +49 -45
  77. data/vendor/assets/javascripts/webshims/shims/es5.js +2 -3
  78. data/vendor/assets/javascripts/webshims/shims/form-core.js +72 -70
  79. data/vendor/assets/javascripts/webshims/shims/form-datalist.js +1 -2
  80. data/vendor/assets/javascripts/webshims/shims/form-number-date-ui.js +8 -22
  81. data/vendor/assets/javascripts/webshims/shims/form-shim-extend.js +11 -24
  82. data/vendor/assets/javascripts/webshims/shims/geolocation.js +1 -1
  83. data/vendor/assets/javascripts/webshims/shims/json-storage.js +1 -1
  84. data/vendor/assets/javascripts/webshims/shims/mediaelement-core.js +48 -41
  85. data/vendor/assets/javascripts/webshims/shims/mediaelement-jaris.js +26 -15
  86. data/vendor/assets/javascripts/webshims/shims/mediaelement-swf.js +27 -16
  87. data/vendor/assets/javascripts/webshims/shims/mediaelement-yt.js +18 -6
  88. data/vendor/assets/javascripts/webshims/shims/track-ui.js +2 -1
  89. data/vendor/assets/javascripts/webshims/shims/track.js +2 -1
  90. metadata +2 -2
@@ -50,7 +50,9 @@
50
50
  if(hasSwf && !options.preferFlash && webshims.mediaelement.createSWF && !$(e.target).closest('audio, video').is('.nonnative-api-active')){
51
51
  options.preferFlash = true;
52
52
  document.removeEventListener('error', switchOptions, true);
53
- $('audio, video').mediaLoad();
53
+ $('audio, video').each(function(){
54
+ webshims.mediaelement.selectSource(this);
55
+ });
54
56
  webshims.info("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src);
55
57
  } else if(!hasSwf){
56
58
  document.removeEventListener('error', switchOptions, true);
@@ -454,7 +456,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
454
456
  data = data || webshims.data(elem, 'mediaelement');
455
457
  stepSources(elem, data, options.preferFlash || undefined, _srces);
456
458
  };
457
-
459
+ mediaelement.selectSource = selectSource;
458
460
 
459
461
  $(document).on('ended', function(e){
460
462
  var data = webshims.data(e.target, 'mediaelement');
@@ -520,52 +522,57 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
520
522
  var media = $('video, audio', context)
521
523
  .add(insertedElement.filter('video, audio'))
522
524
  .each(function(){
523
- if($.browser.msie && webshims.browserVersion > 8 && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])')){
525
+ var data = webshims.data(this, 'mediaelement');
526
+
527
+ if(hasNative && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])') && (!data || data.isActive == 'html5')){
528
+ //IE controls not visible bug
524
529
  $(this).prop('preload', 'metadata').mediaLoad();
525
530
  } else {
526
- selectSource(this);
531
+ selectSource(this, data);
527
532
  }
528
533
 
529
-
530
-
531
534
  if(hasNative){
532
- var bufferTimer;
533
- var lastBuffered;
534
- var elem = this;
535
- var getBufferedString = function(){
536
- var buffered = $.prop(elem, 'buffered');
537
- if(!buffered){return;}
538
- var bufferString = "";
539
- for(var i = 0, len = buffered.length; i < len;i++){
540
- bufferString += buffered.end(i);
541
- }
542
- return bufferString;
543
- };
544
- var testBuffer = function(){
545
- var buffered = getBufferedString();
546
- if(buffered != lastBuffered){
547
- lastBuffered = buffered;
548
- $(elem).triggerHandler('progress');
549
- }
550
- };
551
535
 
552
- $(this)
553
- .on({
554
- 'play loadstart progress': function(e){
555
- if(e.type == 'progress'){
556
- lastBuffered = getBufferedString();
557
- }
558
- clearTimeout(bufferTimer);
559
- bufferTimer = setTimeout(testBuffer, 999);
560
- },
561
- 'emptied stalled mediaerror abort suspend': function(e){
562
- if(e.type == 'emptied'){
563
- lastBuffered = false;
564
- }
565
- clearTimeout(bufferTimer);
536
+ //FF progress bug
537
+ (function(){
538
+ var bufferTimer;
539
+ var lastBuffered;
540
+ var elem = this;
541
+ var getBufferedString = function(){
542
+ var buffered = $.prop(elem, 'buffered');
543
+ if(!buffered){return;}
544
+ var bufferString = "";
545
+ for(var i = 0, len = buffered.length; i < len;i++){
546
+ bufferString += buffered.end(i);
547
+ }
548
+ return bufferString;
549
+ };
550
+ var testBuffer = function(){
551
+ var buffered = getBufferedString();
552
+ if(buffered != lastBuffered){
553
+ lastBuffered = buffered;
554
+ $(elem).triggerHandler('progress');
566
555
  }
567
- })
568
- ;
556
+ };
557
+
558
+ $(this)
559
+ .on({
560
+ 'play loadstart progress': function(e){
561
+ if(e.type == 'progress'){
562
+ lastBuffered = getBufferedString();
563
+ }
564
+ clearTimeout(bufferTimer);
565
+ bufferTimer = setTimeout(testBuffer, 999);
566
+ },
567
+ 'emptied stalled mediaerror abort suspend': function(e){
568
+ if(e.type == 'emptied'){
569
+ lastBuffered = false;
570
+ }
571
+ clearTimeout(bufferTimer);
572
+ }
573
+ })
574
+ ;
575
+ })();
569
576
  }
570
577
 
571
578
  })
@@ -1052,19 +1059,29 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
1052
1059
  var hidevents = hideEvtArray.map(function(evt){
1053
1060
  return evt +'.webshimspolyfill';
1054
1061
  }).join(' ');
1055
-
1062
+ var opposite = {
1063
+ 'html5': 'third',
1064
+ 'third': 'html5'
1065
+ };
1056
1066
  var hidePlayerEvents = function(event){
1057
1067
  var data = webshims.data(event.target, 'mediaelement');
1058
1068
  if(!data){return;}
1059
1069
  var isNativeHTML5 = ( event.originalEvent && event.originalEvent.type === event.type );
1060
1070
  if( isNativeHTML5 == (data.activating == 'third') ){
1061
1071
  event.stopImmediatePropagation();
1062
- if(stopEvents[event.type] && data.isActive != data.activating){
1063
- $(event.target).pause();
1072
+ if(stopEvents[event.type]){
1073
+ if(data.isActive != data.activating){
1074
+ $(event.target).pause();
1075
+ } else {
1076
+ data.isActive = opposite[data.isActive];
1077
+ $(event.target).pause();
1078
+ data.isActive = opposite[data.isActive];
1079
+ }
1064
1080
  }
1065
1081
  }
1066
1082
  };
1067
1083
 
1084
+
1068
1085
  addMediaToStopEvents = function(elem){
1069
1086
  $(elem)
1070
1087
  .off(hidevents)
@@ -1196,6 +1213,10 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
1196
1213
  overflow: 'hidden'
1197
1214
  })
1198
1215
  ;
1216
+ var setDimensions = function(){
1217
+ setElementDimension(data, $.prop(elem, 'controls'));
1218
+ };
1219
+
1199
1220
  data = webshims.data(elem, 'mediaelement', webshims.objectCreate(playerStateObj, {
1200
1221
  actionQueue: {
1201
1222
  value: []
@@ -1268,9 +1289,9 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
1268
1289
 
1269
1290
  options.changeSWF(vars, elem, canPlaySrc, data, 'embed');
1270
1291
 
1271
- $(elem).on('updatemediaelementdimensions updateshadowdom', function(){
1272
- setElementDimension(data, $.prop(elem, 'controls'));
1273
- });
1292
+
1293
+ $(document).on('updateshadowdom', setDimensions);
1294
+ $(elem).on('updatemediaelementdimensions', setDimensions);
1274
1295
 
1275
1296
 
1276
1297
  swfobject.embedSWF(playerSwfPath, elemId, "100%", "100%", "9.0.0", false, vars, params, attrs, function(swfData){
@@ -1473,9 +1494,8 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
1473
1494
  mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
1474
1495
  });
1475
1496
 
1476
- if(hasFlash){
1497
+ if(hasFlash && $.cleanData){
1477
1498
  var oldClean = $.cleanData;
1478
- var gcBrowser = $.browser.msie && webshims.browserVersion < 9;
1479
1499
  var flashNames = {
1480
1500
  object: 1,
1481
1501
  OBJECT: 1
@@ -1492,15 +1512,13 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
1492
1512
  elems[i][SENDEVENT]('play', false);
1493
1513
  } catch(er){}
1494
1514
  }
1495
- if(gcBrowser){
1496
- try {
1497
- for (prop in elems[i]) {
1498
- if (typeof elems[i][prop] == "function") {
1499
- elems[i][prop] = null;
1500
- }
1515
+ try {
1516
+ for (prop in elems[i]) {
1517
+ if (typeof elems[i][prop] == "function") {
1518
+ elems[i][prop] = null;
1501
1519
  }
1502
- } catch(er){}
1503
- }
1520
+ }
1521
+ } catch(er){}
1504
1522
  }
1505
1523
  }
1506
1524
 
@@ -351,7 +351,7 @@ webshims.defineNodeNamesBooleanProperty(['input', 'textarea', 'select'], 'requir
351
351
  set: function(value){
352
352
  $(this).getShadowFocusElement().attr('aria-required', !!(value)+'');
353
353
  },
354
- initAttr: (!$.browser.msie || webshims.browserVersion > 7)//only if we have aria-support
354
+ initAttr: (Modernizr.localstorage)//only if we have aria-support
355
355
  });
356
356
 
357
357
  webshims.reflectProperties(['input'], ['pattern']);
@@ -666,14 +666,13 @@ webshims.defineNodeNameProperty('form', 'noValidate', {
666
666
  }
667
667
  });
668
668
 
669
- if($.browser.webkit && Modernizr.inputtypes.date){
669
+ if(Modernizr.inputtypes.date && /webkit/i.test(navigator.userAgent)){
670
670
  (function(){
671
671
 
672
672
  var noInputTriggerEvts = {updateInput: 1, input: 1},
673
673
  fixInputTypes = {
674
674
  date: 1,
675
- time: 1,
676
- "datetime-local": 1
675
+ time: 1
677
676
  },
678
677
  noFocusEvents = {
679
678
  focusout: 1,
@@ -1097,8 +1096,7 @@ try {
1097
1096
 
1098
1097
  (function(){
1099
1098
  Modernizr.textareaPlaceholder = !!('placeholder' in $('<textarea />')[0]);
1100
- var bustedTextarea = $.browser.webkit && Modernizr.textareaPlaceholder && webshims.browserVersion < 535;
1101
- if(Modernizr.input.placeholder && Modernizr.textareaPlaceholder && !bustedTextarea){return;}
1099
+ if(Modernizr.input.placeholder && Modernizr.textareaPlaceholder){return;}
1102
1100
 
1103
1101
  var isOver = (webshims.cfg.forms.placeholderType == 'over');
1104
1102
  var isResponsive = (webshims.cfg.forms.responsivePlaceholder);
@@ -1300,8 +1298,8 @@ try {
1300
1298
  data.text.css('padding'+ side, size);
1301
1299
  });
1302
1300
 
1303
- $(elem)
1304
- .on('updateshadowdom', function(){
1301
+ $(document)
1302
+ .onTrigger('updateshadowdom', function(){
1305
1303
  var height, width;
1306
1304
  if((width = elem.offsetWidth) || (height = elem.offsetHeight)){
1307
1305
  data.text
@@ -1313,7 +1311,6 @@ try {
1313
1311
  ;
1314
1312
  }
1315
1313
  })
1316
- .triggerHandler('updateshadowdom')
1317
1314
  ;
1318
1315
 
1319
1316
  } else {
@@ -1369,17 +1366,11 @@ try {
1369
1366
  attr: {
1370
1367
  set: function(val){
1371
1368
  var elem = this;
1372
- if(bustedTextarea){
1373
- webshims.data(elem, 'textareaPlaceholder', val);
1374
- elem.placeholder = '';
1375
- } else {
1376
- webshims.contentAttr(elem, 'placeholder', val);
1377
- }
1369
+ webshims.contentAttr(elem, 'placeholder', val);
1378
1370
  pHolder.update(elem, val);
1379
1371
  },
1380
1372
  get: function(){
1381
- var ret = (bustedTextarea) ? webshims.data(this, 'textareaPlaceholder') : '';
1382
- return ret || webshims.contentAttr(this, 'placeholder');
1373
+ return webshims.contentAttr(this, 'placeholder');
1383
1374
  }
1384
1375
  },
1385
1376
  reflect: true,
@@ -1395,13 +1386,9 @@ try {
1395
1386
  placeholderValueDesc[propType] = {
1396
1387
  set: function(val){
1397
1388
  var elem = this;
1398
- var placeholder;
1399
- if(bustedTextarea){
1400
- placeholder = webshims.data(elem, 'textareaPlaceholder');
1401
- }
1402
- if(!placeholder){
1403
- placeholder = webshims.contentAttr(elem, 'placeholder');
1404
- }
1389
+ var placeholder = webshims.contentAttr(elem, 'placeholder');
1390
+
1391
+
1405
1392
  $.removeData(elem, 'cachedValidity');
1406
1393
  var ret = desc[propType]._supset.call(elem, val);
1407
1394
  if(placeholder && 'value' in elem){
@@ -664,8 +664,7 @@ var prepareString = "a"[0] != "a",
664
664
  var defineProperty = 'defineProperty';
665
665
  var advancedObjectProperties = !!(Object.create && Object.defineProperties && Object.getOwnPropertyDescriptor);
666
666
  //safari5 has defineProperty-interface, but it can't be used on dom-object
667
- //only do this test in non-IE browsers, because this hurts dhtml-behavior in some IE8 versions
668
- if (advancedObjectProperties && !$.browser.msie && Object[defineProperty] && Object.prototype.__defineGetter__) {
667
+ if (advancedObjectProperties && Object[defineProperty] && Object.prototype.__defineGetter__) {
669
668
  (function(){
670
669
  try {
671
670
  var foo = document.createElement('foo');
@@ -683,7 +682,7 @@ var prepareString = "a"[0] != "a",
683
682
  })();
684
683
  }
685
684
 
686
- Modernizr.objectAccessor = !!((advancedObjectProperties || (Object.prototype.__defineGetter__ && Object.prototype.__lookupSetter__)) && (!$.browser.opera || shims.browserVersion >= 11));
685
+ Modernizr.objectAccessor = !!((advancedObjectProperties || (Object.prototype.__defineGetter__ && Object.prototype.__lookupSetter__)));
687
686
  Modernizr.advancedObjectProperties = advancedObjectProperties;
688
687
 
689
688
  if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !Object.getOwnPropertyDescriptor || !Object.defineProperty)){
@@ -853,7 +852,9 @@ if((!advancedObjectProperties || !Object.create || !Object.defineProperties || !
853
852
  if(hasSwf && !options.preferFlash && webshims.mediaelement.createSWF && !$(e.target).closest('audio, video').is('.nonnative-api-active')){
854
853
  options.preferFlash = true;
855
854
  document.removeEventListener('error', switchOptions, true);
856
- $('audio, video').mediaLoad();
855
+ $('audio, video').each(function(){
856
+ webshims.mediaelement.selectSource(this);
857
+ });
857
858
  webshims.info("switching mediaelements option to 'preferFlash', due to an error with native player: "+e.target.src);
858
859
  } else if(!hasSwf){
859
860
  document.removeEventListener('error', switchOptions, true);
@@ -1257,7 +1258,7 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1257
1258
  data = data || webshims.data(elem, 'mediaelement');
1258
1259
  stepSources(elem, data, options.preferFlash || undefined, _srces);
1259
1260
  };
1260
-
1261
+ mediaelement.selectSource = selectSource;
1261
1262
 
1262
1263
  $(document).on('ended', function(e){
1263
1264
  var data = webshims.data(e.target, 'mediaelement');
@@ -1323,52 +1324,57 @@ webshims.register('mediaelement-core', function($, webshims, window, document, u
1323
1324
  var media = $('video, audio', context)
1324
1325
  .add(insertedElement.filter('video, audio'))
1325
1326
  .each(function(){
1326
- if($.browser.msie && webshims.browserVersion > 8 && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])')){
1327
+ var data = webshims.data(this, 'mediaelement');
1328
+
1329
+ if(hasNative && $.prop(this, 'paused') && !$.prop(this, 'readyState') && $(this).is('audio[preload="none"][controls]:not([autoplay])') && (!data || data.isActive == 'html5')){
1330
+ //IE controls not visible bug
1327
1331
  $(this).prop('preload', 'metadata').mediaLoad();
1328
1332
  } else {
1329
- selectSource(this);
1333
+ selectSource(this, data);
1330
1334
  }
1331
1335
 
1332
-
1333
-
1334
1336
  if(hasNative){
1335
- var bufferTimer;
1336
- var lastBuffered;
1337
- var elem = this;
1338
- var getBufferedString = function(){
1339
- var buffered = $.prop(elem, 'buffered');
1340
- if(!buffered){return;}
1341
- var bufferString = "";
1342
- for(var i = 0, len = buffered.length; i < len;i++){
1343
- bufferString += buffered.end(i);
1344
- }
1345
- return bufferString;
1346
- };
1347
- var testBuffer = function(){
1348
- var buffered = getBufferedString();
1349
- if(buffered != lastBuffered){
1350
- lastBuffered = buffered;
1351
- $(elem).triggerHandler('progress');
1352
- }
1353
- };
1354
1337
 
1355
- $(this)
1356
- .on({
1357
- 'play loadstart progress': function(e){
1358
- if(e.type == 'progress'){
1359
- lastBuffered = getBufferedString();
1360
- }
1361
- clearTimeout(bufferTimer);
1362
- bufferTimer = setTimeout(testBuffer, 999);
1363
- },
1364
- 'emptied stalled mediaerror abort suspend': function(e){
1365
- if(e.type == 'emptied'){
1366
- lastBuffered = false;
1367
- }
1368
- clearTimeout(bufferTimer);
1338
+ //FF progress bug
1339
+ (function(){
1340
+ var bufferTimer;
1341
+ var lastBuffered;
1342
+ var elem = this;
1343
+ var getBufferedString = function(){
1344
+ var buffered = $.prop(elem, 'buffered');
1345
+ if(!buffered){return;}
1346
+ var bufferString = "";
1347
+ for(var i = 0, len = buffered.length; i < len;i++){
1348
+ bufferString += buffered.end(i);
1349
+ }
1350
+ return bufferString;
1351
+ };
1352
+ var testBuffer = function(){
1353
+ var buffered = getBufferedString();
1354
+ if(buffered != lastBuffered){
1355
+ lastBuffered = buffered;
1356
+ $(elem).triggerHandler('progress');
1369
1357
  }
1370
- })
1371
- ;
1358
+ };
1359
+
1360
+ $(this)
1361
+ .on({
1362
+ 'play loadstart progress': function(e){
1363
+ if(e.type == 'progress'){
1364
+ lastBuffered = getBufferedString();
1365
+ }
1366
+ clearTimeout(bufferTimer);
1367
+ bufferTimer = setTimeout(testBuffer, 999);
1368
+ },
1369
+ 'emptied stalled mediaerror abort suspend': function(e){
1370
+ if(e.type == 'emptied'){
1371
+ lastBuffered = false;
1372
+ }
1373
+ clearTimeout(bufferTimer);
1374
+ }
1375
+ })
1376
+ ;
1377
+ })();
1372
1378
  }
1373
1379
 
1374
1380
  })
@@ -1855,19 +1861,29 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
1855
1861
  var hidevents = hideEvtArray.map(function(evt){
1856
1862
  return evt +'.webshimspolyfill';
1857
1863
  }).join(' ');
1858
-
1864
+ var opposite = {
1865
+ 'html5': 'third',
1866
+ 'third': 'html5'
1867
+ };
1859
1868
  var hidePlayerEvents = function(event){
1860
1869
  var data = webshims.data(event.target, 'mediaelement');
1861
1870
  if(!data){return;}
1862
1871
  var isNativeHTML5 = ( event.originalEvent && event.originalEvent.type === event.type );
1863
1872
  if( isNativeHTML5 == (data.activating == 'third') ){
1864
1873
  event.stopImmediatePropagation();
1865
- if(stopEvents[event.type] && data.isActive != data.activating){
1866
- $(event.target).pause();
1874
+ if(stopEvents[event.type]){
1875
+ if(data.isActive != data.activating){
1876
+ $(event.target).pause();
1877
+ } else {
1878
+ data.isActive = opposite[data.isActive];
1879
+ $(event.target).pause();
1880
+ data.isActive = opposite[data.isActive];
1881
+ }
1867
1882
  }
1868
1883
  }
1869
1884
  };
1870
1885
 
1886
+
1871
1887
  addMediaToStopEvents = function(elem){
1872
1888
  $(elem)
1873
1889
  .off(hidevents)
@@ -1999,6 +2015,10 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
1999
2015
  overflow: 'hidden'
2000
2016
  })
2001
2017
  ;
2018
+ var setDimensions = function(){
2019
+ setElementDimension(data, $.prop(elem, 'controls'));
2020
+ };
2021
+
2002
2022
  data = webshims.data(elem, 'mediaelement', webshims.objectCreate(playerStateObj, {
2003
2023
  actionQueue: {
2004
2024
  value: []
@@ -2071,9 +2091,9 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
2071
2091
 
2072
2092
  options.changeSWF(vars, elem, canPlaySrc, data, 'embed');
2073
2093
 
2074
- $(elem).on('updatemediaelementdimensions updateshadowdom', function(){
2075
- setElementDimension(data, $.prop(elem, 'controls'));
2076
- });
2094
+
2095
+ $(document).on('updateshadowdom', setDimensions);
2096
+ $(elem).on('updatemediaelementdimensions', setDimensions);
2077
2097
 
2078
2098
 
2079
2099
  swfobject.embedSWF(playerSwfPath, elemId, "100%", "100%", "9.0.0", false, vars, params, attrs, function(swfData){
@@ -2276,9 +2296,8 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
2276
2296
  mediaSup = webshims.defineNodeNameProperties(nodeName, descs, 'prop');
2277
2297
  });
2278
2298
 
2279
- if(hasFlash){
2299
+ if(hasFlash && $.cleanData){
2280
2300
  var oldClean = $.cleanData;
2281
- var gcBrowser = $.browser.msie && webshims.browserVersion < 9;
2282
2301
  var flashNames = {
2283
2302
  object: 1,
2284
2303
  OBJECT: 1
@@ -2295,15 +2314,13 @@ jQuery.webshims.register('mediaelement-swf', function($, webshims, window, docum
2295
2314
  elems[i][SENDEVENT]('play', false);
2296
2315
  } catch(er){}
2297
2316
  }
2298
- if(gcBrowser){
2299
- try {
2300
- for (prop in elems[i]) {
2301
- if (typeof elems[i][prop] == "function") {
2302
- elems[i][prop] = null;
2303
- }
2317
+ try {
2318
+ for (prop in elems[i]) {
2319
+ if (typeof elems[i][prop] == "function") {
2320
+ elems[i][prop] = null;
2304
2321
  }
2305
- } catch(er){}
2306
- }
2322
+ }
2323
+ } catch(er){}
2307
2324
  }
2308
2325
  }
2309
2326