Double-encode file path for diff view
When navigating to diff view from change view, double-encode file path to work around known pagejs library issue (see Issue 4255). Bug: Issue 4474 Change-Id: I81bafcc86c4b2c450c92380eea52f315f5652b61
This commit is contained in:
		@@ -378,12 +378,13 @@
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _computeDiffURL: function(changeNum, patchRange, path) {
 | 
			
		||||
      // @see Issue 4255 regarding double-encoding.
 | 
			
		||||
      return '/c/' +
 | 
			
		||||
          encodeURIComponent(changeNum) +
 | 
			
		||||
          '/' +
 | 
			
		||||
          encodeURIComponent(this._patchRangeStr(patchRange)) +
 | 
			
		||||
          '/' +
 | 
			
		||||
          path;
 | 
			
		||||
          encodeURIComponent(encodeURIComponent(path));
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
    _patchRangeStr: function(patchRange) {
 | 
			
		||||
 
 | 
			
		||||
@@ -296,5 +296,19 @@ limitations under the License.
 | 
			
		||||
      assert.isFalse(element.diffs[0].hidden);
 | 
			
		||||
      diffStub.restore();
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    test('file name should be double-escaped', function() {
 | 
			
		||||
      element._files = [
 | 
			
		||||
        {__path: 'my+file.txt'},
 | 
			
		||||
      ];
 | 
			
		||||
      element.changeNum = '42';
 | 
			
		||||
      element.patchRange = {
 | 
			
		||||
        basePatchNum: 'PARENT',
 | 
			
		||||
        patchNum: '2',
 | 
			
		||||
      };
 | 
			
		||||
      flushAsynchronousOperations();
 | 
			
		||||
      assert.equal(
 | 
			
		||||
          element.$$('a').getAttribute('href'), '/c/42/2/my%252Bfile.txt');
 | 
			
		||||
    });
 | 
			
		||||
  });
 | 
			
		||||
</script>
 | 
			
		||||
 
 | 
			
		||||
@@ -134,12 +134,13 @@
 | 
			
		||||
      };
 | 
			
		||||
      // Don't allow diffing the same patch number against itself.
 | 
			
		||||
      if (params.basePatchNum === params.patchNum) {
 | 
			
		||||
        // @see Issue 4255 regarding double-encoding.
 | 
			
		||||
        page.redirect('/c/' +
 | 
			
		||||
            encodeURIComponent(params.changeNum) +
 | 
			
		||||
            '/' +
 | 
			
		||||
            encodeURIComponent(params.patchNum) +
 | 
			
		||||
            '/' +
 | 
			
		||||
            encodeURIComponent(params.path));
 | 
			
		||||
            encodeURIComponent(encodeURIComponent(params.path)));
 | 
			
		||||
        return;
 | 
			
		||||
      }
 | 
			
		||||
      normalizePatchRangeParams(params);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user