| Index: omaha_request_action.h
 | 
| diff --git a/omaha_request_action.h b/omaha_request_action.h
 | 
| index f8dddc899bcbeb0b14a262477e7e402af68067b3..582fe5f4a1ae295e8489a6234d0d48e963ccfd24 100644
 | 
| --- a/omaha_request_action.h
 | 
| +++ b/omaha_request_action.h
 | 
| @@ -93,28 +93,68 @@ struct OmahaResponse {
 | 
|  };
 | 
|  COMPILE_ASSERT(sizeof(off_t) == 8, off_t_not_64bit);
 | 
|  
 | 
| +// This struct encapsulates the Omaha event information. For a
 | 
| +// complete list of defined event types and results, see
 | 
| +// http://code.google.com/p/omaha/wiki/ServerProtocol#event
 | 
| +struct OmahaEvent {
 | 
| +  enum Type {
 | 
| +    kTypeUnknown = 0,
 | 
| +    kTypeDownloadComplete = 1,
 | 
| +    kTypeInstallComplete = 2,
 | 
| +    kTypeUpdateComplete = 3,
 | 
| +  };
 | 
| +
 | 
| +  enum Result {
 | 
| +    kResultError = 0,
 | 
| +    kResultSuccess = 1,
 | 
| +  };
 | 
| +
 | 
| +  OmahaEvent()
 | 
| +      : type(kTypeUnknown),
 | 
| +        result(kResultError),
 | 
| +        error_code(0) {}
 | 
| +  OmahaEvent(Type in_type, Result in_result, int in_error_code)
 | 
| +      : type(in_type),
 | 
| +        result(in_result),
 | 
| +        error_code(in_error_code) {}
 | 
| +
 | 
| +  Type type;
 | 
| +  Result result;
 | 
| +  int error_code;
 | 
| +};
 | 
| +
 | 
|  class OmahaRequestAction;
 | 
|  class NoneType;
 | 
|  
 | 
|  template<>
 | 
|  class ActionTraits<OmahaRequestAction> {
 | 
|   public:
 | 
| -  // Takes parameters on the input pipe
 | 
| +  // Takes parameters on the input pipe.
 | 
|    typedef OmahaRequestParams InputObjectType;
 | 
| -  // On success, puts the output path on output
 | 
| +  // On UpdateCheck success, puts the Omaha response on output. Event
 | 
| +  // requests do not have an output pipe.
 | 
|    typedef OmahaResponse OutputObjectType;
 | 
|  };
 | 
|  
 | 
|  class OmahaRequestAction : public Action<OmahaRequestAction>,
 | 
|                             public HttpFetcherDelegate {
 | 
|   public:
 | 
| -  // The ctor takes in all the parameters that will be used for
 | 
| -  // making the request to Omaha. For some of them we have constants
 | 
| -  // that should be used.
 | 
| +  // The ctor takes in all the parameters that will be used for making
 | 
| +  // the request to Omaha. For some of them we have constants that
 | 
| +  // should be used.
 | 
| +  //
 | 
|    // Takes ownership of the passed in HttpFetcher. Useful for testing.
 | 
| +  //
 | 
| +  // Takes ownership of the passed in OmahaEvent. If |event| is NULL,
 | 
| +  // this is an UpdateCheck request, otherwise it's an Event request.
 | 
| +  // Event requests always succeed.
 | 
| +  //
 | 
|    // A good calling pattern is:
 | 
| -  // OmahaRequestAction(..., new WhateverHttpFetcher);
 | 
| -  OmahaRequestAction(HttpFetcher* http_fetcher);
 | 
| +  // OmahaRequestAction(new OmahaEvent(...), new WhateverHttpFetcher);
 | 
| +  // or
 | 
| +  // OmahaRequestAction(NULL, new WhateverHttpFetcher);
 | 
| +  OmahaRequestAction(OmahaEvent* event,
 | 
| +                     HttpFetcher* http_fetcher);
 | 
|    virtual ~OmahaRequestAction();
 | 
|    typedef ActionTraits<OmahaRequestAction>::InputObjectType InputObjectType;
 | 
|    typedef ActionTraits<OmahaRequestAction>::OutputObjectType OutputObjectType;
 | 
| @@ -130,10 +170,16 @@ class OmahaRequestAction : public Action<OmahaRequestAction>,
 | 
|                               const char* bytes, int length);
 | 
|    virtual void TransferComplete(HttpFetcher *fetcher, bool successful);
 | 
|  
 | 
| +  // Returns true if this is an Event request, false if it's an UpdateCheck.
 | 
| +  bool IsEvent() const { return event_.get() != NULL; }
 | 
| +
 | 
|   private:
 | 
|    // These are data that are passed in the request to the Omaha server
 | 
|    OmahaRequestParams params_;
 | 
|  
 | 
| +  // Pointer to the OmahaEvent info. This is an UpdateCheck request if NULL.
 | 
| +  scoped_ptr<OmahaEvent> event_;
 | 
| +
 | 
|    // pointer to the HttpFetcher that does the http work
 | 
|    scoped_ptr<HttpFetcher> http_fetcher_;
 | 
|  
 | 
| 
 |