Page MenuHomePhabricator

D7641.diff
No OneTemporary

D7641.diff

Index: src/__celerity_resource_map__.php
===================================================================
--- src/__celerity_resource_map__.php
+++ src/__celerity_resource_map__.php
@@ -1596,7 +1596,7 @@
),
'javelin-behavior-differential-populate' =>
array(
- 'uri' => '/res/bb9a29f4/rsrc/js/application/differential/behavior-populate.js',
+ 'uri' => '/res/692901c1/rsrc/js/application/differential/behavior-populate.js',
'type' => 'js',
'requires' =>
array(
@@ -3551,7 +3551,7 @@
),
'phabricator-source-code-view-css' =>
array(
- 'uri' => '/res/aee63670/rsrc/css/layout/phabricator-source-code-view.css',
+ 'uri' => '/res/f70ef208/rsrc/css/layout/phabricator-source-code-view.css',
'type' => 'css',
'requires' =>
array(
@@ -4476,7 +4476,7 @@
'uri' => '/res/pkg/1084b12b/differential.pkg.css',
'type' => 'css',
),
- '5e9e5c4e' =>
+ 'd6685793' =>
array(
'name' => 'differential.pkg.js',
'symbols' =>
@@ -4501,7 +4501,7 @@
17 => 'javelin-behavior-differential-toggle-files',
18 => 'javelin-behavior-differential-user-select',
),
- 'uri' => '/res/pkg/5e9e5c4e/differential.pkg.js',
+ 'uri' => '/res/pkg/d6685793/differential.pkg.js',
'type' => 'js',
),
'7aa115b4' =>
@@ -4595,7 +4595,7 @@
'aphront-typeahead-control-css' => '80d89233',
'differential-changeset-view-css' => '1084b12b',
'differential-core-view-css' => '1084b12b',
- 'differential-inline-comment-editor' => '5e9e5c4e',
+ 'differential-inline-comment-editor' => 'd6685793',
'differential-local-commits-view-css' => '1084b12b',
'differential-results-table-css' => '1084b12b',
'differential-revision-add-comment-css' => '1084b12b',
@@ -4613,23 +4613,23 @@
'javelin-behavior-aphlict-dropdown' => '2c1dba03',
'javelin-behavior-aphlict-listen' => '2c1dba03',
'javelin-behavior-aphront-basic-tokenizer' => '2c1dba03',
- 'javelin-behavior-aphront-drag-and-drop-textarea' => '5e9e5c4e',
+ 'javelin-behavior-aphront-drag-and-drop-textarea' => 'd6685793',
'javelin-behavior-aphront-form-disable-on-submit' => '2c1dba03',
'javelin-behavior-audit-preview' => '96909266',
'javelin-behavior-dark-console' => '4ccfeb47',
'javelin-behavior-device' => '2c1dba03',
- 'javelin-behavior-differential-accept-with-errors' => '5e9e5c4e',
- 'javelin-behavior-differential-add-reviewers-and-ccs' => '5e9e5c4e',
- 'javelin-behavior-differential-comment-jump' => '5e9e5c4e',
- 'javelin-behavior-differential-diff-radios' => '5e9e5c4e',
- 'javelin-behavior-differential-dropdown-menus' => '5e9e5c4e',
- 'javelin-behavior-differential-edit-inline-comments' => '5e9e5c4e',
- 'javelin-behavior-differential-feedback-preview' => '5e9e5c4e',
- 'javelin-behavior-differential-keyboard-navigation' => '5e9e5c4e',
- 'javelin-behavior-differential-populate' => '5e9e5c4e',
- 'javelin-behavior-differential-show-more' => '5e9e5c4e',
- 'javelin-behavior-differential-toggle-files' => '5e9e5c4e',
- 'javelin-behavior-differential-user-select' => '5e9e5c4e',
+ 'javelin-behavior-differential-accept-with-errors' => 'd6685793',
+ 'javelin-behavior-differential-add-reviewers-and-ccs' => 'd6685793',
+ 'javelin-behavior-differential-comment-jump' => 'd6685793',
+ 'javelin-behavior-differential-diff-radios' => 'd6685793',
+ 'javelin-behavior-differential-dropdown-menus' => 'd6685793',
+ 'javelin-behavior-differential-edit-inline-comments' => 'd6685793',
+ 'javelin-behavior-differential-feedback-preview' => 'd6685793',
+ 'javelin-behavior-differential-keyboard-navigation' => 'd6685793',
+ 'javelin-behavior-differential-populate' => 'd6685793',
+ 'javelin-behavior-differential-show-more' => 'd6685793',
+ 'javelin-behavior-differential-toggle-files' => 'd6685793',
+ 'javelin-behavior-differential-user-select' => 'd6685793',
'javelin-behavior-diffusion-commit-graph' => '96909266',
'javelin-behavior-diffusion-pull-lastmodified' => '96909266',
'javelin-behavior-error-log' => '4ccfeb47',
@@ -4637,7 +4637,7 @@
'javelin-behavior-history-install' => '2c1dba03',
'javelin-behavior-konami' => '2c1dba03',
'javelin-behavior-lightbox-attachments' => '2c1dba03',
- 'javelin-behavior-load-blame' => '5e9e5c4e',
+ 'javelin-behavior-load-blame' => 'd6685793',
'javelin-behavior-maniphest-batch-selector' => '0474f45c',
'javelin-behavior-maniphest-subpriority-editor' => '0474f45c',
'javelin-behavior-maniphest-transaction-controls' => '0474f45c',
@@ -4649,7 +4649,7 @@
'javelin-behavior-phabricator-hovercards' => '2c1dba03',
'javelin-behavior-phabricator-keyboard-shortcuts' => '2c1dba03',
'javelin-behavior-phabricator-nav' => '2c1dba03',
- 'javelin-behavior-phabricator-object-selector' => '5e9e5c4e',
+ 'javelin-behavior-phabricator-object-selector' => 'd6685793',
'javelin-behavior-phabricator-oncopy' => '2c1dba03',
'javelin-behavior-phabricator-remarkup-assist' => '2c1dba03',
'javelin-behavior-phabricator-reveal-content' => '2c1dba03',
@@ -4657,7 +4657,7 @@
'javelin-behavior-phabricator-tooltips' => '2c1dba03',
'javelin-behavior-phabricator-watch-anchor' => '2c1dba03',
'javelin-behavior-refresh-csrf' => '2c1dba03',
- 'javelin-behavior-repository-crossreference' => '5e9e5c4e',
+ 'javelin-behavior-repository-crossreference' => 'd6685793',
'javelin-behavior-toggle-class' => '2c1dba03',
'javelin-behavior-workflow' => '2c1dba03',
'javelin-color' => '2c1dba03',
@@ -4689,7 +4689,7 @@
'phabricator-content-source-view-css' => '1084b12b',
'phabricator-core-css' => '80d89233',
'phabricator-crumbs-view-css' => '80d89233',
- 'phabricator-drag-and-drop-file-upload' => '5e9e5c4e',
+ 'phabricator-drag-and-drop-file-upload' => 'd6685793',
'phabricator-dropdown-menu' => '2c1dba03',
'phabricator-file-upload' => '2c1dba03',
'phabricator-filetree-view-css' => '80d89233',
@@ -4709,7 +4709,7 @@
'phabricator-prefab' => '2c1dba03',
'phabricator-project-tag-css' => '49898640',
'phabricator-remarkup-css' => '80d89233',
- 'phabricator-shaped-request' => '5e9e5c4e',
+ 'phabricator-shaped-request' => 'd6685793',
'phabricator-side-menu-view-css' => '80d89233',
'phabricator-standard-page-view' => '80d89233',
'phabricator-tag-view-css' => '80d89233',
Index: webroot/rsrc/js/application/differential/behavior-populate.js
===================================================================
--- webroot/rsrc/js/application/differential/behavior-populate.js
+++ webroot/rsrc/js/application/differential/behavior-populate.js
@@ -12,6 +12,21 @@
JX.behavior('differential-populate', function(config) {
+ // Browsers have their own throttling of web requests so issuing a big number
+ // of AJAX requests is safe and efficient. We use our own queue to allow us
+ // prioritization of the requests. Namely, we load files clicked in ToC before
+ // other files.
+ var load_limit = 8;
+ var loaded = {};
+ var load_queue = {};
+
+ function load(target_id, data) {
+ new JX.Workflow(config.uri, data)
+ .setHandler(JX.bind(null, onresponse, target_id))
+ .start();
+ loaded[target_id] = true;
+ }
+
function onresponse(target_id, response) {
// As we populate the diff, we try to hold the document scroll position
// steady, so that, e.g., users who want to leave a comment on a diff with a
@@ -64,6 +79,12 @@
}
}
}
+
+ for (var key in load_queue) {
+ load(key, load_queue[key]);
+ delete load_queue[key];
+ break;
+ }
}
// NOTE: If you load the page at one device resolution and then resize to
@@ -74,6 +95,7 @@
// TODO: Once 1up works better, figure out when to show it.
renderer = '2up';
+ var loaded_count = 0;
for (var k in config.registry) {
var data = {
ref : config.registry[k],
@@ -81,9 +103,12 @@
renderer: renderer
};
- new JX.Workflow(config.uri, data)
- .setHandler(JX.bind(null, onresponse, k))
- .start();
+ if (loaded_count >= load_limit) {
+ load_queue[k] = data;
+ } else {
+ loaded_count++;
+ load(k, data);
+ }
}
var highlighted = null;
@@ -95,10 +120,21 @@
function(e) {
var meta = e.getNodeData('differential-load');
var diff;
- try {
- diff = JX.$(meta.id);
- } catch (ex) {
- // Already loaded.
+ if (!loaded[meta.id]) {
+ try {
+ diff = JX.$(meta.id);
+ } catch (ex) {
+ // Already loaded.
+ }
+ } else if (load_queue[meta.id]) {
+ var new_load = {};
+ new_load[meta.id] = load_queue[meta.id];
+ for (var key in load_queue) {
+ if (key != meta.id) {
+ new_load[key] = load_queue[key];
+ }
+ }
+ load_queue = new_load;
}
if (diff) {
JX.DOM.setContent(
@@ -108,9 +144,7 @@
ref : meta.ref,
whitespace : config.whitespace
};
- new JX.Workflow(config.uri, data)
- .setHandler(JX.bind(null, onresponse, meta.id))
- .start();
+ load(meta.id, data);
}
if (meta.kill) {
e.kill();

File Metadata

Mime Type
text/plain
Expires
Sun, May 12, 3:02 AM (3 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6287630
Default Alt Text
D7641.diff (9 KB)

Event Timeline