Make AphrontProxyResponse reduce to a real response instead of building a string

Summary: Currently, AphrontProxyResponse is expected to build a string. This prevents some response types (like Dialog) from being proxied, because they have special rules. Instead, make proxy responses reduce into a non-proxied response so it's possible to proxy any type of response and hit all the normal rules for it.

Test Plan: Built a proxied DialogResponse on top of this.

Reviewers: btrahan, vrana

Reviewed By: btrahan

CC: aran

Maniphest Tasks: T2104, T912

Differential Revision: https://secure.phabricator.com/D4159
This commit is contained in:
epriestley
2012-12-11 17:27:25 -08:00
parent 4fe09a0ac7
commit dd669c6d4e
4 changed files with 29 additions and 9 deletions

View File

@@ -5,8 +5,8 @@
* a response might be substantially an Ajax response, but add structure to the
* response content. It can do this by extending @{class:AphrontProxyResponse},
* instantiating an @{class:AphrontAjaxResponse} in @{method:buildProxy}, and
* then using the proxy to construct the response string in
* @{method:buildResponseString}.
* then constructing a real @{class:AphrontAjaxResponse} in
* @{method:reduceProxyResponse}.
*
* @group aphront
*/
@@ -63,5 +63,12 @@ abstract class AphrontProxyResponse extends AphrontResponse {
}
abstract protected function buildProxy();
abstract public function reduceProxyResponse();
final public function buildResponseString() {
throw new Exception(
"AphrontProxyResponse must implement reduceProxyResponse().");
}
}