jenkins-bot has submitted this change and it was merged.

Change subject: Remove old code for Firefox < 7.0
......................................................................


Remove old code for Firefox < 7.0

Removing a workaround for a certain Firefox bug, fixed a long time
ago, that made chunked uploads not work.

Bug: T131248
Change-Id: I1e43542e685f912669af659f48eb763687952545
---
M resources/mw.UploadWizardPage.js
M resources/transports/mw.FormDataTransport.js
M tests/qunit/transports/mw.FormDataTransport.test.js
3 files changed, 14 insertions(+), 131 deletions(-)

Approvals:
  MarkTraceur: Looks good to me, approved
  Jforrester: Looks good to me, but someone else must approve
  jenkins-bot: Verified



diff --git a/resources/mw.UploadWizardPage.js b/resources/mw.UploadWizardPage.js
index 5ee1e85..daf4b89 100644
--- a/resources/mw.UploadWizardPage.js
+++ b/resources/mw.UploadWizardPage.js
@@ -10,11 +10,18 @@
 ( function ( mw, $ ) {
 
        function isCompatible() {
+               var
+                       profile = $.client.profile(),
+                       // Firefox < 7.0 sends an empty string as filename for 
Blobs in FormData.
+                       // requests. 
https://bugzilla.mozilla.org/show_bug.cgi?id=649150
+                       badFormDataBlobs = profile.name === 'firefox' && 
profile.versionNumber < 7;
+
                return !!(
                        window.FileReader &&
                        window.FormData &&
                        window.File &&
-                       window.File.prototype.slice
+                       window.File.prototype.slice &&
+                       !badFormDataBlobs
                );
        }
 
diff --git a/resources/transports/mw.FormDataTransport.js 
b/resources/transports/mw.FormDataTransport.js
index 5a16281..39b1d15 100644
--- a/resources/transports/mw.FormDataTransport.js
+++ b/resources/transports/mw.FormDataTransport.js
@@ -14,8 +14,6 @@
         * @param {Object} [config.useRetryTimeout]
         */
        mw.FormDataTransport = function ( postUrl, formData, config ) {
-               var profile = $.client.profile();
-
                this.config = config || mw.UploadWizard.config;
 
                OO.EventEmitter.call( this );
@@ -31,16 +29,6 @@
                this.maxRetries = 2;
                this.retries = 0;
                this.firstPoll = false;
-
-               // Workaround for Firefox < 7.0 sending an empty string
-               // as filename for Blobs in FormData requests, something PHP 
does not like
-               // https://bugzilla.mozilla.org/show_bug.cgi?id=649150
-               // From version 7.0 to 22.0, Firefox sends "blob" as the file 
name
-               // which seems to be accepted by the server
-               // https://bugzilla.mozilla.org/show_bug.cgi?id=690659
-               // 
https://developer.mozilla.org/en-US/docs/Web/API/FormData#Browser_compatibility
-
-               this.insufficientFormDataSupport = profile.name === 'firefox' 
&& profile.versionNumber < 7;
        };
 
        OO.mixinClass( mw.FormDataTransport, OO.EventEmitter );
@@ -88,13 +76,7 @@
         * @return {FormData}
         */
        mw.FormDataTransport.prototype.createFormData = function ( filename, 
offset ) {
-               var formData;
-
-               if ( this.insufficientFormDataSupport ) {
-                       formData = this.geckoFormData();
-               } else {
-                       formData = new FormData();
-               }
+               var formData = new FormData();
 
                $.each( this.formData, function ( key, value ) {
                        formData.append( key, value );
@@ -122,12 +104,7 @@
         */
        mw.FormDataTransport.prototype.sendData = function ( xhr, formData ) {
                xhr.open( 'POST', this.postUrl, true );
-
-               if ( this.insufficientFormDataSupport ) {
-                       formData.send( xhr );
-               } else {
-                       xhr.send( formData );
-               }
+               xhr.send( formData );
        };
 
        /**
@@ -228,11 +205,7 @@
                        formData.append( 'filekey', this.filekey );
                }
                formData.append( 'filesize', bytesAvailable );
-               if ( this.insufficientFormDataSupport ) {
-                       formData.appendBlob( 'chunk', chunk, 'chunk.bin' );
-               } else {
-                       formData.append( 'chunk', chunk );
-               }
+               formData.append( 'chunk', chunk );
 
                this.sendData( this.xhr, formData );
 
@@ -406,78 +379,4 @@
                return response;
        };
 
-       mw.FormDataTransport.prototype.geckoFormData = function () {
-               var formData, onload,
-                       boundary = '------XX' + Math.random(),
-                       dashdash = '--',
-                       crlf = '\r\n',
-                       builder = '', // Build RFC2388 string.
-                       chunksRemaining = 0;
-
-               builder += dashdash + boundary + crlf;
-
-               formData = {
-                       append: function ( name, data ) {
-                               // Generate headers.
-                               builder += 'Content-Disposition: form-data; 
name="' + name + '"';
-                               builder += crlf;
-                               builder += crlf;
-
-                               // Write data.
-                               builder += data;
-                               builder += crlf;
-
-                               // Write boundary.
-                               builder += dashdash + boundary + crlf;
-                       },
-                       appendFile: function ( name, data, type, filename ) {
-                               builder += 'Content-Disposition: form-data; 
name="' + name + '"';
-                               builder += '; filename="' + filename + '"';
-                               builder += crlf;
-                               builder += 'Content-Type: ' + type;
-                               builder += crlf;
-                               builder += crlf;
-
-                               // Write binary data.
-                               builder += data;
-                               builder += crlf;
-
-                               // Write boundary.
-                               builder += dashdash + boundary + crlf;
-                       },
-                       appendBlob: function ( name, blob, filename ) {
-                               var reader;
-                               chunksRemaining++;
-                               reader = new FileReader();
-                               reader.onload = function ( e ) {
-                                       formData.appendFile( name, 
e.target.result,
-                                                                               
blob.type, filename );
-                                       // Call onload after last Blob
-                                       chunksRemaining--;
-                                       if ( !chunksRemaining && formData.xhr ) 
{
-                                               onload();
-                                       }
-                               };
-                               reader.readAsBinaryString( blob );
-                       },
-                       send: function ( xhr ) {
-                               formData.xhr = xhr;
-                               if ( !chunksRemaining ) {
-                                       onload();
-                               }
-                       }
-               };
-               onload = function () {
-                       // Mark end of the request.
-                       builder += dashdash + boundary + dashdash + crlf;
-
-                       // Send to server
-                       formData.xhr.setRequestHeader(
-                               'Content-type',
-                               'multipart/form-data; boundary=' + boundary
-                       );
-                       formData.xhr.sendAsBinary( builder );
-               };
-               return formData;
-       };
 }( mediaWiki, jQuery, OO ) );
diff --git a/tests/qunit/transports/mw.FormDataTransport.test.js 
b/tests/qunit/transports/mw.FormDataTransport.test.js
index afa3b03..c3f7fb3 100644
--- a/tests/qunit/transports/mw.FormDataTransport.test.js
+++ b/tests/qunit/transports/mw.FormDataTransport.test.js
@@ -74,27 +74,13 @@
                // FormData object, so until we can figure THAT out, this is 
incomplete.
        } );
 
-       QUnit.test( 'sendData', 6, function ( assert ) {
+       QUnit.test( 'sendData', 2, function ( assert ) {
                var transport = createTransport( false, 10 ),
-                       fakexhr = { open: this.sandbox.stub(), send: 
this.sandbox.stub() },
-                       fakefd = { send: this.sandbox.stub() };
+                       fakexhr = { open: this.sandbox.stub(), send: 
this.sandbox.stub() };
 
-               transport.insufficientFormDataSupport = true;
-
-               transport.sendData( fakexhr, fakefd );
-               assert.ok( fakexhr.open.called );
-               assert.ok( !fakexhr.send.called );
-               assert.ok( fakefd.send.called );
-
-               transport.insufficientFormDataSupport = false;
-               fakexhr.send.reset();
-               fakexhr.open.reset();
-               fakefd.send.reset();
-
-               transport.sendData( fakexhr, fakefd );
+               transport.sendData( fakexhr, {} );
                assert.ok( fakexhr.open.called );
                assert.ok( fakexhr.send.called );
-               assert.ok( !fakefd.send.called );
        } );
 
        QUnit.test( 'upload', 4, function ( assert ) {
@@ -218,13 +204,4 @@
                } );
        } );
 
-       QUnit.test( 'geckoFormData', 4, function ( assert ) {
-               var transport = createTransport( false, 10 ),
-                       fd = transport.geckoFormData();
-
-               assert.ok( $.isFunction( fd.append ) );
-               assert.ok( $.isFunction( fd.appendFile ) );
-               assert.ok( $.isFunction( fd.appendBlob ) );
-               assert.ok( $.isFunction( fd.send ) );
-       } );
 }( mediaWiki, jQuery ) );

-- 
To view, visit https://gerrit.wikimedia.org/r/279702
To unsubscribe, visit https://gerrit.wikimedia.org/r/settings

Gerrit-MessageType: merged
Gerrit-Change-Id: I1e43542e685f912669af659f48eb763687952545
Gerrit-PatchSet: 4
Gerrit-Project: mediawiki/extensions/UploadWizard
Gerrit-Branch: master
Gerrit-Owner: Bartosz DziewoƄski <[email protected]>
Gerrit-Reviewer: Jforrester <[email protected]>
Gerrit-Reviewer: MarkTraceur <[email protected]>
Gerrit-Reviewer: jenkins-bot <>

_______________________________________________
MediaWiki-commits mailing list
[email protected]
https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits

Reply via email to