Cleanup gr-change-view (remove gr-ajax use)

Bug: Issue 3988
Change-Id: I9a0134ef96ee48a54cac85bd92e3dea88cb7c76f
This commit is contained in:
Andrew Bonventre
2016-04-01 20:50:21 -04:00
parent 5eb59e374e
commit c27bdb79ed
4 changed files with 125 additions and 67 deletions

View File

@@ -18,7 +18,6 @@ limitations under the License.
<link rel="import" href="../../../behaviors/keyboard-shortcut-behavior.html">
<link rel="import" href="../../../behaviors/rest-client-behavior.html">
<link rel="import" href="../../shared/gr-account-link/gr-account-link.html">
<link rel="import" href="../../shared/gr-ajax/gr-ajax.html">
<link rel="import" href="../../shared/gr-button/gr-button.html">
<link rel="import" href="../../shared/gr-change-star/gr-change-star.html">
<link rel="import" href="../../shared/gr-date-formatter/gr-date-formatter.html">
@@ -218,22 +217,6 @@ limitations under the License.
}
}
</style>
<gr-ajax id="detailXHR"
url="[[_computeDetailPath(_changeNum)]]"
params="[[_computeDetailQueryParams()]]"
last-response="{{_change}}"
loading="{{_loading}}"></gr-ajax>
<gr-ajax id="commentsXHR"
url="[[_computeCommentsPath(_changeNum)]]"
last-response="{{_comments}}"></gr-ajax>
<gr-ajax id="commitInfoXHR"
url="[[_computeCommitInfoPath(_changeNum, _patchNum)]]"
last-response="{{_commitInfo}}"></gr-ajax>
<!-- TODO(andybons): Cache the project config. -->
<gr-ajax id="configXHR"
auto
url="[[_computeProjectConfigPath(_change.project)]]"
last-response="{{_projectConfig}}"></gr-ajax>
<div class="container loading" hidden$="{{!_loading}}">Loading...</div>
<div class="container" hidden$="{{_loading}}">
<div class="headerContainer">

View File

@@ -225,31 +225,6 @@
return '(' + status.toLowerCase() + ')';
},
_computeDetailPath: function(changeNum) {
return '/changes/' + changeNum + '/detail';
},
_computeCommitInfoPath: function(changeNum, patchNum) {
return this.changeBaseURL(changeNum, patchNum) + '/commit?links';
},
_computeCommentsPath: function(changeNum) {
return '/changes/' + changeNum + '/comments';
},
_computeProjectConfigPath: function(project) {
return '/projects/' + encodeURIComponent(project) + '/config';
},
_computeDetailQueryParams: function() {
var options = this.listChangesOptionsToHex(
this.ListChangesOption.ALL_REVISIONS,
this.ListChangesOption.CHANGE_ACTIONS,
this.ListChangesOption.DOWNLOAD_COMMANDS
);
return {O: options};
},
_computeLatestPatchNum: function(change) {
return change.revisions[change.current_revision]._number;
},
@@ -345,13 +320,44 @@
_getDiffDrafts: function() {
return this.$.restAPI.getDiffDrafts(this._changeNum).then(
function(drafts) { return this._diffDrafts = drafts; }.bind(this));
function(drafts) {
return this._diffDrafts = drafts;
}.bind(this));
},
_getLoggedIn: function() {
return this.$.restAPI.getLoggedIn();
},
_getProjectConfig: function() {
return this.$.restAPI.getProjectConfig(this._change.project).then(
function(config) {
this._projectConfig = config;
}.bind(this));
},
_getChangeDetail: function() {
return this.$.restAPI.getChangeDetail(this._changeNum).then(
function(change) {
this._change = change;
}.bind(this));
},
_getComments: function() {
return this.$.restAPI.getDiffComments(this._changeNum).then(
function(comments) {
this._comments = comments;
}.bind(this));
},
_getCommitInfo: function() {
return this.$.restAPI.getChangeCommitInfo(
this._changeNum, this._patchNum).then(
function(commitInfo) {
this._commitInfo = commitInfo;
}.bind(this));
},
_reloadDiffDrafts: function() {
this._diffDrafts = {};
this._getDiffDrafts().then(function() {
@@ -362,24 +368,31 @@
},
_reload: function() {
this._loading = true;
this._getLoggedIn().then(function(loggedIn) {
if (!loggedIn) { return; }
this._reloadDiffDrafts();
}.bind(this));
var detailCompletes = this.$.detailXHR.generateRequest().completes;
this.$.commentsXHR.generateRequest();
var detailCompletes = this._getChangeDetail().then(function() {
this._loading = false;
}.bind(this));
this._getComments();
var reloadPatchNumDependentResources = function() {
return Promise.all([
this.$.commitInfoXHR.generateRequest().completes,
this._getCommitInfo(),
this.$.actions.reload(),
this.$.fileList.reload(),
]);
}.bind(this);
var reloadDetailDependentResources = function() {
return this.$.relatedChanges.reload();
return Promise.all([
this.$.relatedChanges.reload(),
this._getProjectConfig(),
]);
}.bind(this);
this._resetHeaderEl();

View File

@@ -35,27 +35,12 @@ limitations under the License.
<script>
suite('gr-change-view tests', function() {
var element;
var server;
setup(function() {
stub('gr-rest-api-interface', {
getAccount: function() { return Promise.resolve(null); },
});
element = fixture('basic');
element.$.configXHR.auto = false;
server = sinon.fakeServer.create();
// Eat any requests made by elements in this suite.
server.respondWith(
'GET',
/\/changes\/(.*)/,
[
200,
{'Content-Type': 'application/json'},
')]}\'\n{}',
]
);
});
teardown(function() {
server.restore();
});
test('keyboard shortcuts', function() {
@@ -66,7 +51,6 @@ limitations under the License.
'Should navigate to /');
showStub.restore();
MockInteractions.pressAndReleaseKeyOn(element, 65); // 'a'
var overlayEl = element.$.replyOverlay;
assert.isFalse(overlayEl.opened);

View File

@@ -17,6 +17,54 @@
var JSON_PREFIX = ')]}\'';
var PARENT_PATCH_NUM = 'PARENT';
// Must be kept in sync with the ListChangesOption enum and protobuf.
var ListChangesOption = {
LABELS: 0,
DETAILED_LABELS: 8,
// Return information on the current patch set of the change.
CURRENT_REVISION: 1,
ALL_REVISIONS: 2,
// If revisions are included, parse the commit object.
CURRENT_COMMIT: 3,
ALL_COMMITS: 4,
// If a patch set is included, include the files of the patch set.
CURRENT_FILES: 5,
ALL_FILES: 6,
// If accounts are included, include detailed account info.
DETAILED_ACCOUNTS: 7,
// Include messages associated with the change.
MESSAGES: 9,
// Include allowed actions client could perform.
CURRENT_ACTIONS: 10,
// Set the reviewed boolean for the caller.
REVIEWED: 11,
// Include download commands for the caller.
DOWNLOAD_COMMANDS: 13,
// Include patch set weblinks.
WEB_LINKS: 14,
// Include consistency check results.
CHECK: 15,
// Include allowed change actions client could perform.
CHANGE_ACTIONS: 16,
// Include a copy of commit messages including review footers.
COMMIT_FOOTERS: 17,
// Include push certificate information along with any patch sets.
PUSH_CERTIFICATES: 18
};
Polymer({
is: 'gr-rest-api-interface',
@@ -86,6 +134,11 @@
return this._fetchSharedCacheURL('/config/server/info');
},
getProjectConfig: function(project) {
return this._fetchSharedCacheURL(
'/projects/' + encodeURIComponent(project) + '/config');
},
getVersion: function() {
return this._fetchSharedCacheURL('/config/server/version');
},
@@ -135,6 +188,23 @@
return this._sharedFetchPromises[url];
},
getChangeDetail: function(changeNum, opt_cancelCondition) {
var options = this._listChangesOptionsToHex(
ListChangesOption.ALL_REVISIONS,
ListChangesOption.CHANGE_ACTIONS,
ListChangesOption.DOWNLOAD_COMMANDS
);
return this.fetchJSON(
this._changeBaseURL(changeNum) + '/detail',
opt_cancelCondition,
{O: options});
},
getChangeCommitInfo: function(changeNum, patchNum) {
return this.fetchJSON(
this._changeBaseURL(changeNum, patchNum) + '/commit?links');
},
getChangeFiles: function(changeNum, patchNum) {
return this.fetchJSON(
this._changeBaseURL(changeNum, patchNum) + '/files');
@@ -215,7 +285,7 @@
opt_patchNum, opt_path) {
if (!opt_basePatchNum && !opt_patchNum && !opt_path) {
return this.fetchJSON(
this._getDiffCommentsFetchURL(changeNum, '/drafts'));
this._getDiffCommentsFetchURL(changeNum, endpoint));
}
function onlyParent(c) { return c.side == PARENT_PATCH_NUM; }
@@ -262,6 +332,14 @@
return v;
},
_listChangesOptionsToHex: function() {
var v = 0;
for (var i = 0; i < arguments.length; i++) {
v |= 1 << arguments[i];
}
return v.toString(16);
},
_getCookie: function(name) {
var key = name + '=';
var cookies = document.cookie.split(';');