Prepare file responses for streaming chunks

Summary:
Ref T7149. This still buffers the whole file, but is reaaaaal close to not doing that.

Allow Responses to be streamed, and rewrite the range stuff in the FileResponse so it does not rely on having the entire content available.

Test Plan:
  - Artificially slowed down downloads, suspended/resumed them (works in chrome, not so much in Safari/Firefox?)
  - Played sounds in Safari/Chrome.
  - Viewed a bunch of pages and files in every browser.

Reviewers: btrahan

Reviewed By: btrahan

Subscribers: joshuaspence, epriestley

Maniphest Tasks: T7149

Differential Revision: https://secure.phabricator.com/D12072
This commit is contained in:
epriestley
2015-03-14 08:29:12 -07:00
parent 2aefb43843
commit 81d88985a0
7 changed files with 127 additions and 20 deletions

View File

@@ -25,8 +25,12 @@ final class PhabricatorFileSearchEngine
}
public function buildQueryFromSavedQuery(PhabricatorSavedQuery $saved) {
$query = id(new PhabricatorFileQuery())
->withAuthorPHIDs($saved->getParameter('authorPHIDs', array()));
$query = id(new PhabricatorFileQuery());
$author_phids = $saved->getParameter('authorPHIDs', array());
if ($author_phids) {
$query->withAuthorPHIDs($author_phids);
}
if ($saved->getParameter('explicit')) {
$query->showOnlyExplicitUploads(true);