| Index: delta_performer.h | 
| diff --git a/delta_performer.h b/delta_performer.h | 
| index 7394f940acacb9b7d23c92744f547ff304f80fb3..0e3cb93aea18c8e3686894af6de4614f2b13c1eb 100644 | 
| --- a/delta_performer.h | 
| +++ b/delta_performer.h | 
| @@ -34,7 +34,9 @@ class DeltaPerformer : public FileWriter { | 
| next_operation_num_(0), | 
| buffer_offset_(0), | 
| last_updated_buffer_offset_(kuint64max), | 
| -        block_size_(0) {} | 
| +        block_size_(0), | 
| +        current_kernel_hash_(NULL), | 
| +        current_rootfs_hash_(NULL) {} | 
|  | 
| // Opens the kernel. Should be called before or after Open(), but before | 
| // Write(). The kernel file will be close()d when Close() is called. | 
| @@ -94,6 +96,14 @@ class DeltaPerformer : public FileWriter { | 
| // success, false otherwise. | 
| static bool ResetUpdateProgress(PrefsInterface* prefs, bool quick); | 
|  | 
| +  void set_current_kernel_hash(const std::vector<char>* hash) { | 
| +    current_kernel_hash_ = hash; | 
| +  } | 
| + | 
| +  void set_current_rootfs_hash(const std::vector<char>* hash) { | 
| +    current_rootfs_hash_ = hash; | 
| +  } | 
| + | 
| private: | 
| friend class DeltaPerformerTest; | 
| FRIEND_TEST(DeltaPerformerTest, IsIdempotentOperationTest); | 
| @@ -101,6 +111,12 @@ class DeltaPerformer : public FileWriter { | 
| static bool IsIdempotentOperation( | 
| const DeltaArchiveManifest_InstallOperation& op); | 
|  | 
| +  // Verifies that the expected source partition hashes (if present) match the | 
| +  // hashes for the current partitions. Returns true if there're no expected | 
| +  // hashes in the payload (e.g., if it's a new-style full update) or if the | 
| +  // hashes match; returns false otherwise. | 
| +  bool VerifySourcePartitions(); | 
| + | 
| // Returns true if enough of the delta file has been passed via Write() | 
| // to be able to perform a given install operation. | 
| bool CanPerformInstallOperation( | 
| @@ -181,6 +197,11 @@ class DeltaPerformer : public FileWriter { | 
| // Signatures message blob extracted directly from the payload. | 
| std::vector<char> signatures_message_data_; | 
|  | 
| +  // Hashes for the current partitions to be used for source partition | 
| +  // verification. | 
| +  const std::vector<char>* current_kernel_hash_; | 
| +  const std::vector<char>* current_rootfs_hash_; | 
| + | 
| DISALLOW_COPY_AND_ASSIGN(DeltaPerformer); | 
| }; | 
|  | 
|  |