Moving the LoadedApk class to its own file.
Test: Unit tests pass.
Change-Id: Id706f9ad1f3406bb73a60a33139a04745d5d72c0
diff --git a/tools/aapt2/diff/Diff.cpp b/tools/aapt2/diff/Diff.cpp
index de0fe40..acebeda 100644
--- a/tools/aapt2/diff/Diff.cpp
+++ b/tools/aapt2/diff/Diff.cpp
@@ -17,12 +17,10 @@
#include "android-base/macros.h"
#include "Flags.h"
-#include "ResourceTable.h"
+#include "LoadedApk.h"
#include "ValueVisitor.h"
-#include "io/ZipArchive.h"
#include "process/IResourceTableConsumer.h"
#include "process/SymbolTable.h"
-#include "unflatten/BinaryResourceParser.h"
using android::StringPiece;
@@ -51,61 +49,6 @@
SymbolTable symbol_table_;
};
-class LoadedApk {
- public:
- LoadedApk(const Source& source, std::unique_ptr<io::IFileCollection> apk,
- std::unique_ptr<ResourceTable> table)
- : source_(source), apk_(std::move(apk)), table_(std::move(table)) {}
-
- io::IFileCollection* GetFileCollection() { return apk_.get(); }
-
- ResourceTable* GetResourceTable() { return table_.get(); }
-
- const Source& GetSource() { return source_; }
-
- private:
- Source source_;
- std::unique_ptr<io::IFileCollection> apk_;
- std::unique_ptr<ResourceTable> table_;
-
- DISALLOW_COPY_AND_ASSIGN(LoadedApk);
-};
-
-static std::unique_ptr<LoadedApk> LoadApkFromPath(IAaptContext* context,
- const StringPiece& path) {
- Source source(path);
- std::string error;
- std::unique_ptr<io::ZipFileCollection> apk =
- io::ZipFileCollection::Create(path, &error);
- if (!apk) {
- context->GetDiagnostics()->Error(DiagMessage(source) << error);
- return {};
- }
-
- io::IFile* file = apk->FindFile("resources.arsc");
- if (!file) {
- context->GetDiagnostics()->Error(DiagMessage(source)
- << "no resources.arsc found");
- return {};
- }
-
- std::unique_ptr<io::IData> data = file->OpenAsData();
- if (!data) {
- context->GetDiagnostics()->Error(DiagMessage(source)
- << "could not open resources.arsc");
- return {};
- }
-
- std::unique_ptr<ResourceTable> table = util::make_unique<ResourceTable>();
- BinaryResourceParser parser(context, table.get(), source, data->data(),
- data->size());
- if (!parser.Parse()) {
- return {};
- }
-
- return util::make_unique<LoadedApk>(source, std::move(apk), std::move(table));
-}
-
static void EmitDiffLine(const Source& source, const StringPiece& message) {
std::cerr << source << ": " << message << "\n";
}
@@ -413,9 +356,9 @@
}
std::unique_ptr<LoadedApk> apk_a =
- LoadApkFromPath(&context, flags.GetArgs()[0]);
+ LoadedApk::LoadApkFromPath(&context, flags.GetArgs()[0]);
std::unique_ptr<LoadedApk> apk_b =
- LoadApkFromPath(&context, flags.GetArgs()[1]);
+ LoadedApk::LoadApkFromPath(&context, flags.GetArgs()[1]);
if (!apk_a || !apk_b) {
return 1;
}