AU: Beginnings of delta support

- proto file for delta files; still needs hardlink support

- code to generate a delta update from two directory trees (old, new).

- code to parse delta update

- Actions: postinst-runner, install, bootable flag setter, filesystem
 copier, Omaha response handler, Omaha request preparer,

- misc utility functions, like StringHasSuffix(), templatized Action
 classes to feed/collect an object from another action.

- FilesystemIterator: iterates a directory tree with optional
 exclusion path. Tolerates deleting of files during iteration.

- Subprocess class: support for synchronously or asynchronously
 running an external command. Doesn't pass any env variables.

- Integration test that strings many Actions together and tests using
 actual Omaha/Lorry. Currently only tests full updates.

- New simple HTTP server for unittest that supports fake flaky
 connections.

- Some refactoring.

Review URL: http://codereview.chromium.org/466036


git-svn-id: svn://chrome-svn/chromeos/trunk@334 06c00378-0e64-4dae-be16-12b19f9950a1
diff --git a/update_check_action.h b/update_check_action.h
index cf6d512..402943b 100644
--- a/update_check_action.h
+++ b/update_check_action.h
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style license that can be
 // found in the LICENSE file.
 
-#ifndef UPDATE_ENGINE_UPDATE_CHECK_ACTION_H__
-#define UPDATE_ENGINE_UPDATE_CHECK_ACTION_H__
+#ifndef CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_CHECK_ACTION_H__
+#define CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_CHECK_ACTION_H__
 
 #include <sys/types.h>
 #include <sys/stat.h>
@@ -93,8 +93,8 @@
 template<>
 class ActionTraits<UpdateCheckAction> {
  public:
-  // Does not take an object for input
-  typedef NoneType InputObjectType;
+  // Takes parameters on the input pipe
+  typedef UpdateCheckParams InputObjectType;
   // On success, puts the output path on output
   typedef UpdateCheckResponse OutputObjectType;
 };
@@ -108,8 +108,7 @@
   // Takes ownership of the passed in HttpFetcher. Useful for testing.
   // A good calling pattern is:
   // UpdateCheckAction(..., new WhateverHttpFetcher);
-  UpdateCheckAction(const UpdateCheckParams& params,
-                    HttpFetcher* http_fetcher);
+  UpdateCheckAction(HttpFetcher* http_fetcher);
   virtual ~UpdateCheckAction();
   typedef ActionTraits<UpdateCheckAction>::InputObjectType InputObjectType;
   typedef ActionTraits<UpdateCheckAction>::OutputObjectType OutputObjectType;
@@ -117,7 +116,8 @@
   void TerminateProcessing();
 
   // Debugging/logging
-  std::string Type() const { return "UpdateCheckAction"; }
+  static std::string StaticType() { return "UpdateCheckAction"; }
+  std::string Type() const { return StaticType(); }
 
   // Delegate methods (see http_fetcher.h)
   virtual void ReceivedBytes(HttpFetcher *fetcher,
@@ -139,4 +139,4 @@
 
 }  // namespace chromeos_update_engine
 
-#endif  // UPDATE_ENGINE_UPDATE_CHECK_ACTION_H__
+#endif  // CHROMEOS_PLATFORM_UPDATE_ENGINE_UPDATE_CHECK_ACTION_H__