<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array"/>
  <modified type="array">
    <modified>
      <diff>@@ -1,19 +1,61 @@
 require 'digest/md5'
 
-module ActionController
-  class AbstractResponse #:nodoc:
+module ActionController # :nodoc:
+  # Represents an HTTP response generated by a controller action. One can use an
+  # ActionController::AbstractResponse object to retrieve the current state of the
+  # response, or customize the response. An AbstractResponse object can either
+  # represent a &quot;real&quot; HTTP response (i.e. one that is meant to be sent back to the
+  # web browser) or a test response (i.e. one that is generated from integration
+  # tests). See CgiResponse and TestResponse, respectively.
+  #
+  # AbstractResponse is mostly a Ruby on Rails framework implement detail, and should
+  # never be used directly in controllers. Controllers should use the methods defined
+  # in ActionController::Base instead. For example, if you want to set the HTTP
+  # response's content MIME type, then use ActionControllerBase#headers instead of
+  # AbstractResponse#headers.
+  #
+  # Nevertheless, integration tests may want to inspect controller responses in more
+  # detail, and that's when AbstractResponse can be useful for application developers.
+  # Integration test methods such as ActionController::Integration::Session#get and
+  # ActionController::Integration::Session#post return objects of type TestResponse
+  # (which are of course also of type AbstractResponse).
+  #
+  # For example, the following demo integration &quot;test&quot; prints the body of the
+  # controller response to the console:
+  #
+  #  class DemoControllerTest &lt; ActionController::IntegrationTest
+  #    def test_print_root_path_to_console
+  #      get('/')
+  #      puts @response.body
+  #    end
+  #  end
+  class AbstractResponse
     DEFAULT_HEADERS = { &quot;Cache-Control&quot; =&gt; &quot;no-cache&quot; }
     attr_accessor :request
-    attr_accessor :body, :headers, :session, :cookies, :assigns, :template, :redirected_to, :redirected_to_method_params, :layout
+    
+    # The body content (e.g. HTML) of the response, as a String.
+    attr_accessor :body
+    # The headers of the response, as a Hash. It maps header names to header values.
+    attr_accessor :headers
+    attr_accessor :session, :cookies, :assigns, :template, :redirected_to, :redirected_to_method_params, :layout
 
     def initialize
       @body, @headers, @session, @assigns = &quot;&quot;, DEFAULT_HEADERS.merge(&quot;cookie&quot; =&gt; []), [], []
     end
 
+    # Sets the HTTP response's content MIME type. For example, in the controller
+    # you could write this:
+    #
+    #  response.content_type = &quot;text/plain&quot;
+    #
+    # If a character set has been defined for this response (see charset=) then
+    # the character set information will also be included in the content type
+    # information.
     def content_type=(mime_type)
       self.headers[&quot;Content-Type&quot;] = charset ? &quot;#{mime_type}; charset=#{charset}&quot; : mime_type
     end
     
+    # Returns the response's content MIME type, or nil if content type has been set.
     def content_type
       content_type = String(headers[&quot;Content-Type&quot;] || headers[&quot;type&quot;]).split(&quot;;&quot;)[0]
       content_type.blank? ? nil : content_type
@@ -73,4 +115,4 @@ module ActionController
         self.headers[&quot;Content-Length&quot;] = body.size unless body.respond_to?(:call)
       end
   end
-end
\ No newline at end of file
+end</diff>
      <filename>actionpack/lib/action_controller/response.rb</filename>
    </modified>
    <modified>
      <diff>@@ -273,7 +273,13 @@ module ActionController #:nodoc:
     end
   end
 
-  class TestResponse &lt; AbstractResponse #:nodoc:
+  # Integration test methods such as ActionController::Integration::Session#get
+  # and ActionController::Integration::Session#post return objects of class
+  # TestResponse, which represent the HTTP response results of the requested
+  # controller actions.
+  #
+  # See AbstractResponse for more information on controller response objects.
+  class TestResponse &lt; AbstractResponse
     include TestResponseBehavior
   end
 </diff>
      <filename>actionpack/lib/action_controller/test_process.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>632a4705b9d492bf3c9c2973b12330ad73e6f420</id>
    </parent>
  </parents>
  <author>
    <name>Hongli Lai (Phusion)</name>
    <email>hongli@phusion.nl</email>
  </author>
  <url>http://github.com/lifo/docrails/commit/3dbc1cfeb3e9984fa4584b231d3bb78ff1a94f9c</url>
  <id>3dbc1cfeb3e9984fa4584b231d3bb78ff1a94f9c</id>
  <committed-date>2008-07-18T11:48:18-07:00</committed-date>
  <authored-date>2008-07-18T11:48:18-07:00</authored-date>
  <message>Write overviews for AbstractController::TestResponse and AbstractController::AbstractResponse.</message>
  <tree>edbf8ca2fb01b4c93c342634208410a6947c66b0</tree>
  <committer>
    <name>Hongli Lai (Phusion)</name>
    <email>hongli@phusion.nl</email>
  </committer>
</commit>
