Page MenuHomePhabricator

D7641.id17252.diff
No OneTemporary

D7641.id17252.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/b9ff1500/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' =>
+ '461108cc' =>
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/461108cc/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' => '461108cc',
'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' => '461108cc',
'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' => '461108cc',
+ 'javelin-behavior-differential-add-reviewers-and-ccs' => '461108cc',
+ 'javelin-behavior-differential-comment-jump' => '461108cc',
+ 'javelin-behavior-differential-diff-radios' => '461108cc',
+ 'javelin-behavior-differential-dropdown-menus' => '461108cc',
+ 'javelin-behavior-differential-edit-inline-comments' => '461108cc',
+ 'javelin-behavior-differential-feedback-preview' => '461108cc',
+ 'javelin-behavior-differential-keyboard-navigation' => '461108cc',
+ 'javelin-behavior-differential-populate' => '461108cc',
+ 'javelin-behavior-differential-show-more' => '461108cc',
+ 'javelin-behavior-differential-toggle-files' => '461108cc',
+ 'javelin-behavior-differential-user-select' => '461108cc',
'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' => '461108cc',
'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' => '461108cc',
'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' => '461108cc',
'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' => '461108cc',
'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' => '461108cc',
'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,14 @@
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 = {};
+
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 +72,14 @@
}
}
}
+
+ for (var key in load) {
+ new JX.Workflow(config.uri, load[key])
+ .setHandler(JX.bind(null, onresponse, key))
+ .start();
+ delete load[key];
+ break;
+ }
}
// NOTE: If you load the page at one device resolution and then resize to
@@ -74,6 +90,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 +98,15 @@
renderer: renderer
};
- new JX.Workflow(config.uri, data)
- .setHandler(JX.bind(null, onresponse, k))
- .start();
+ if (loaded_count >= load_limit) {
+ load[k] = data;
+ } else {
+ loaded[k] = true;
+ loaded_count++;
+ new JX.Workflow(config.uri, data)
+ .setHandler(JX.bind(null, onresponse, k))
+ .start();
+ }
}
var highlighted = null;
@@ -95,10 +118,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[meta.id]) {
+ var new_load = {};
+ new_load[meta.id] = load[meta.id];
+ for (var key in load) {
+ if (key != meta.id) {
+ new_load[key] = load[key];
+ }
+ }
+ load = new_load;
}
if (diff) {
JX.DOM.setContent(

File Metadata

Mime Type
text/plain
Expires
Mar 15 2025, 10:25 PM (5 w, 5 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7704187
Default Alt Text
D7641.id17252.diff (8 KB)

Event Timeline