Skip to content
This repository has been archived by the owner on Nov 3, 2021. It is now read-only.

Commit

Permalink
Merge pull request #31362 from dhylands/bug-1171556-auto-usb
Browse files Browse the repository at this point in the history
Bug 1171556 - Make MTP be the default when internal sdcard is not sharable. r=timdream
  • Loading branch information
dhylands committed Aug 17, 2015
2 parents d9d99f3 + 2d0511d commit e829c63
Show file tree
Hide file tree
Showing 3 changed files with 77 additions and 4 deletions.
16 changes: 13 additions & 3 deletions apps/system/js/usb_storage.js
Expand Up @@ -225,11 +225,21 @@
* @param {Number} protocol current protocol denotes ums or mtp.
*/
_keyMigration: function(protocol) {
if (protocol === undefined) {
if (protocol === undefined || protocol === 'auto') {
protocol = this.protocolUMS;
var storages = navigator.getDeviceStorages('sdcard');
for (var i = 0; i < storages.length; i++) {
var storage = storages[i];
if (storage.storageName == 'sdcard') {
if (!storage.canBeShared) {
protocol = this.protocolMTP;
}
break;
}
}
var cset = {};
cset[this.usbTransferProtocol] = this.protocolUMS;
cset[this.usbTransferProtocol] = protocol;
navigator.mozSettings.createLock().set(cset);
return this.protocolUMS;
}
return protocol;
},
Expand Down
63 changes: 63 additions & 0 deletions apps/system/test/unit/usb_storage_test.js
Expand Up @@ -199,4 +199,67 @@ suite('system/USB Storage', function() {
assert.ok(setModeStub.calledWith(subject.automounterUmsEnable));
});
});

suite('Default protocol', function() {
var sdcardCanBeShared, sdcardCannotBeShared;

suiteSetup(function() {
sdcardCanBeShared = { storageName: 'sdcard', canBeShared: true };
sdcardCannotBeShared = { storageName: 'sdcard', canBeShared: false };
});

suite('No sdcard', function() {
setup(function() {
this.sinon.stub(navigator, 'getDeviceStorages')
.withArgs('sdcard').returns([]);
});

test('Default should be UMS', function() {
subject = new UsbStorage();
assert.equal(subject._keyMigration('auto'), subject.protocolUMS);
assert.equal(subject._keyMigration(undefined), subject.protocolUMS);

assert.equal(subject._keyMigration(subject.protocolUMS),
subject.protocolUMS);
assert.equal(subject._keyMigration(subject.protocolMTP),
subject.protocolMTP);
});
});

suite('sdcard is sharable', function() {
setup(function() {
this.sinon.stub(navigator, 'getDeviceStorages')
.withArgs('sdcard').returns([sdcardCanBeShared]);
});

test('Default should be UMS', function() {
subject = new UsbStorage();
assert.equal(subject._keyMigration('auto'), subject.protocolUMS);
assert.equal(subject._keyMigration(undefined), subject.protocolUMS);

assert.equal(subject._keyMigration(subject.protocolUMS),
subject.protocolUMS);
assert.equal(subject._keyMigration(subject.protocolMTP),
subject.protocolMTP);
});
});

suite('sdcard is NOT sharable', function() {
setup(function() {
this.sinon.stub(navigator, 'getDeviceStorages')
.withArgs('sdcard').returns([sdcardCannotBeShared]);
});

test('Default should be MTP', function() {
subject = new UsbStorage();
assert.equal(subject._keyMigration('auto'), subject.protocolMTP);
assert.equal(subject._keyMigration(undefined), subject.protocolMTP);

assert.equal(subject._keyMigration(subject.protocolUMS),
subject.protocolUMS);
assert.equal(subject._keyMigration(subject.protocolMTP),
subject.protocolMTP);
});
});
});
});
2 changes: 1 addition & 1 deletion build/config/common-settings.json
Expand Up @@ -257,7 +257,7 @@
"ums.volume.sdcard1.enabled": true,
"ums.volume.extsdcard.enabled": true,
"ums.volume.external.enabled": true,
"usb.transfer": "0",
"usb.transfer": "auto",
"volume.external.unrecognised": false,
"vibration.enabled": true,
"wifi.enabled": true,
Expand Down

0 comments on commit e829c63

Please sign in to comment.