Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15441853
D7641.id.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
9 KB
Referenced Files
None
Subscribers
None
D7641.id.diff
View Options
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
Details
Attached
Mime Type
text/plain
Expires
Thu, Mar 27, 8:24 PM (3 w, 6 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7223638
Default Alt Text
D7641.id.diff (9 KB)
Attached To
Mode
D7641: Prioritize loading of files clicked in ToC
Attached
Detach File
Event Timeline
Log In to Comment