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