Merge "Fix linkification of CC= lines"
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js
index a606203..7c6f743 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view.js
@@ -19,6 +19,8 @@
     CHANGE_NUM: /^\s*[1-9][0-9]*\s*$/g,
   };
 
+  const LIMIT_OPERATOR_PATTERN = /\blimit:(\d+)/i;
+
   Polymer({
     is: 'gr-change-list-view',
 
@@ -139,10 +141,19 @@
       return this.$.restAPI.getPreferences();
     },
 
+    _limitFor(query, defaultLimit) {
+      const match = query.match(LIMIT_OPERATOR_PATTERN);
+      if (!match) {
+        return defaultLimit;
+      }
+      return parseInt(match[1], 10);
+    },
+
     _computeNavLink(query, offset, direction, changesPerPage) {
       // Offset could be a string when passed from the router.
       offset = +(offset || 0);
-      const newOffset = Math.max(0, offset + (changesPerPage * direction));
+      const limit = this._limitFor(query, changesPerPage);
+      const newOffset = Math.max(0, offset + (limit * direction));
       // Double encode URI component.
       let href = this.getBaseUrl() + '/q/' + this.encodeURL(query, false);
       if (newOffset > 0) {
diff --git a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view_test.html b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view_test.html
index e60907b..039bee4 100644
--- a/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view_test.html
+++ b/polygerrit-ui/app/elements/change-list/gr-change-list-view/gr-change-list-view_test.html
@@ -69,6 +69,15 @@
       );
     });
 
+    test('_limitFor', () => {
+      const defaultLimit = 25;
+      const _limitFor = q => element._limitFor(q, defaultLimit);
+      assert.equal(_limitFor(''), defaultLimit);
+      assert.equal(_limitFor('limit:10'), 10);
+      assert.equal(_limitFor('xlimit:10'), defaultLimit);
+      assert.equal(_limitFor('x(limit:10'), 10);
+    });
+
     test('_computeNavLink', () => {
       const query = 'status:open';
       let offset = 0;
@@ -86,6 +95,10 @@
       assert.equal(
           element._computeNavLink(query, offset, direction, changesPerPage),
           '/q/status:open,10');
+      assert.equal(
+          element._computeNavLink(
+              query + ' limit:10', offset, direction, changesPerPage),
+          '/q/status:open+limit:10,15');
     });
 
     test('_computeNavLink with path', () => {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
index 5600e71..15c6b37 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
@@ -461,7 +461,7 @@
       this._path = value.path;
 
       this.fire('title-change',
-          {title: this._computeFileDisplayName(this._path)});
+          {title: this._computeTruncatedFileDisplayName(this._path)});
 
       // When navigating away from the page, there is a possibility that the
       // patch number is no longer a part of the URL (say when navigating to
@@ -526,7 +526,7 @@
     _pathChanged(path) {
       if (path) {
         this.fire('title-change',
-            {title: this._computeFileDisplayName(path)});
+            {title: this._computeTruncatedFileDisplayName(path)});
       }
 
       if (this._fileList.length == 0) { return; }
@@ -603,7 +603,7 @@
       } else if (path === MERGE_LIST_PATH) {
         return 'Merge list';
       }
-      return path.split('/').pop();
+      return path;
     },
 
     _computeTruncatedFileDisplayName(path) {
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
index 0485491..6bd4b55 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
@@ -338,9 +338,9 @@
             '42-wheatley.md-10-PARENT');
 
         assert.equal(element._computeFileDisplayName('/foo/bar/baz'),
-            'baz');
+            '/foo/bar/baz');
         assert.equal(element._computeFileDisplayName('/foobarbaz'),
-            'foobarbaz');
+            '/foobarbaz');
         assert.equal(element._computeFileDisplayName('/COMMIT_MSG'),
             'Commit message');
         assert.equal(element._computeFileDisplayName('/MERGE_LIST'),