Uploaded image for project: 'Apache Cordova'
  1. Apache Cordova
  2. CB-4504

Attempt to write file to file:///android_asset folder crashes

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Minor
    • Resolution: Fixed
    • 2.9.0
    • None
    • cordova-android
    • None
    • Android v4.3 emulator

    Description

      I wrote a Jasmine test case which attempts to write to the android_assets folder.

      The test expects the FileWriter.onerror callback will be called with some appropriate error code. Instead, Cordova fails internally.

      It appears that FileHelper.getRealPath returns null, which the FileUtils.write is not coping with, and when the null is passed to FileOutputStream that throws NPE, which nobody is handling...

      Test code fragment:

      it("onerror is called if write to file:///android_asset", function() {
      	var theWriter,
      	filePath = "file:///android_asset/jumpyfox.txt",
      
      	// file content
      	fox = "The quick brown fox";
      
      	// callbacks                
      	var onerrorCB = jasmine.createSpy().andCallFake(function(a) {
      		expect(theWriter.error.code).toBe(FileError.NO_MODIFICATION_ALLOWED_ERR);
      		expect(a.target.error.code).toBe(FileError.NO_MODIFICATION_ALLOWED_ERR);
      	});
      
      	// writes initial file content
      	var write_file = function(file) {
      		theWriter = new FileWriter(file);
      		theWriter.onerror = onerrorCB;
      		theWriter.write(fox);
      	};
      
      	// create file, then write to it
      	runs(function() {
      		var file = new File();
      		file.fullPath = filePath;
      		write_file(file);
      	});
      
      	waitsFor(function() { return onerrorCB.wasCalled; }, "onerrorCB never called", Tests.TEST_TIMEOUT);
      });
      

      Maybe other scenarios which call FileHelper.getRealPath could have similar consequences if it returns null.

      Attachments

        Activity

          People

            bowserj Joey Robert Bowser
            dinglemouse Peter
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: