diff options
author | Samuel Huang <huangs@chromium.org> | 2018-03-13 18:19:34 +0000 |
---|---|---|
committer | Edward Lesmes <ehmaldonado@google.com> | 2021-07-23 21:50:59 +0000 |
commit | 06f1ae9aaca969ee95ef840f22b6b461c304542d (patch) | |
tree | f1e5c6624e70628e81fbf38d6cd14b974abe5d93 /zucchini_gen.h | |
download | zucchini-06f1ae9aaca969ee95ef840f22b6b461c304542d.tar.gz |
[Zucchini] Move Zucchini from /chrome/installer/ to /components/.
(Use "git log --follow" to see older revisions of files).
/components/ is the most logical place to put Zucchini, which only
depends on /base and /testing/gtest. This move also enables Zucchini to
be used by the Component Updater. Details:
- Move all files; run the following to change deps and guards:
sed 's/chrome\/installer/components/' *.cc *.h -i
sed 's/CHROME_INSTALLER/COMPONENTS/' *.cc *.h -i
- Sorting works out pretty well!
- Change all 'chrome/installer/zucchini' to 'components/zucchini'
throughout other parts of the repo; sort if necessary.
- Fix 6 'git cl lint' errors.
- Change 1 Bind() usage to BindRepeated().
- Update OWNER.
Bug: 729154
Change-Id: I50c5a7d411ea85f707b5994ab319dfb2a1acccf7
Reviewed-on: https://chromium-review.googlesource.com/954923
Reviewed-by: Greg Thompson <grt@chromium.org>
Reviewed-by: Jochen Eisinger <jochen@chromium.org>
Reviewed-by: Samuel Huang <huangs@chromium.org>
Commit-Queue: Samuel Huang <huangs@chromium.org>
Cr-Commit-Position: refs/heads/master@{#542857}
NOKEYCHECK=True
GitOrigin-RevId: 577ef6c435e8d43be6e3e60ccbcbd1881780f4ec
Diffstat (limited to 'zucchini_gen.h')
-rw-r--r-- | zucchini_gen.h | 84 |
1 files changed, 84 insertions, 0 deletions
diff --git a/zucchini_gen.h b/zucchini_gen.h new file mode 100644 index 0000000..a0f3630 --- /dev/null +++ b/zucchini_gen.h @@ -0,0 +1,84 @@ +// Copyright 2017 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef COMPONENTS_ZUCCHINI_ZUCCHINI_GEN_H_ +#define COMPONENTS_ZUCCHINI_ZUCCHINI_GEN_H_ + +#include <vector> + +#include "base/optional.h" +#include "components/zucchini/buffer_view.h" +#include "components/zucchini/image_utils.h" +#include "components/zucchini/zucchini.h" + +namespace zucchini { + +class EquivalenceMap; +class OffsetMapper; +class ImageIndex; +class PatchElementWriter; +class ReferenceDeltaSink; +class ReferenceSet; +class TargetPool; + +// Extract all targets in |new_targets| with no associated target in +// |projected_old_targets| and returns these targets in a new vector. +std::vector<offset_t> FindExtraTargets(const TargetPool& projected_old_targets, + const TargetPool& new_targets); + +// Creates an EquivalenceMap from "old" image to "new" image and returns the +// result. The params |*_image_index|: +// - Provide "old" and "new" raw image data and references. +// - Mediate Label matching, which links references between "old" and "new", and +// guides EquivalenceMap construction. +EquivalenceMap CreateEquivalenceMap(const ImageIndex& old_image_index, + const ImageIndex& new_image_index); + +// Writes equivalences from |equivalence_map|, and extra data from |new_image| +// found in gaps between equivalences to |patch_writer|. +bool GenerateEquivalencesAndExtraData(ConstBufferView new_image, + const EquivalenceMap& equivalence_map, + PatchElementWriter* patch_writer); + +// Writes raw delta between |old_image| and |new_image| matched by +// |equivalence_map| to |patch_writer|, using |new_image_index| to ignore +// reference bytes. +bool GenerateRawDelta(ConstBufferView old_image, + ConstBufferView new_image, + const EquivalenceMap& equivalence_map, + const ImageIndex& new_image_index, + PatchElementWriter* patch_writer); + +// Writes reference delta between references from |old_refs| and from +// |new_refs| to |patch_writer|. |projected_target_pool| contains projected +// targets from old to new image for references pool associated with |new_refs|. +bool GenerateReferencesDelta(const ReferenceSet& src_refs, + const ReferenceSet& dst_refs, + const TargetPool& projected_target_pool, + const OffsetMapper& offset_mapper, + const EquivalenceMap& equivalence_map, + ReferenceDeltaSink* reference_delta_sink); + +// Writes |extra_targets| associated with |pool_tag| to |patch_writer|. +bool GenerateExtraTargets(const std::vector<offset_t>& extra_targets, + PoolTag pool_tag, + PatchElementWriter* patch_writer); + +// Generates raw patch element data between |old_image| and |new_image|, and +// writes them to |patch_writer|. |old_sa| is the suffix array for |old_image|. +bool GenerateRawElement(const std::vector<offset_t>& old_sa, + ConstBufferView old_image, + ConstBufferView new_image, + PatchElementWriter* patch_writer); + +// Generates patch element of type |exe_type| from |old_image| to |new_image|, +// and writes it to |patch_writer|. +bool GenerateExecutableElement(ExecutableType exe_type, + ConstBufferView old_image, + ConstBufferView new_image, + PatchElementWriter* patch_writer); + +} // namespace zucchini + +#endif // COMPONENTS_ZUCCHINI_ZUCCHINI_GEN_H_ |