Fix temporary directory path in Android.
We should use /data/misc/update_engine/tmp instead of /data/local/tmp.
Bug: 24478450
TEST=Delta update nolonger permission denied.
Change-Id: I9a8096e602320195d30147971def5145bd82d775
diff --git a/common/hardware_android.cc b/common/hardware_android.cc
index 4f06ff2..abfca44 100644
--- a/common/hardware_android.cc
+++ b/common/hardware_android.cc
@@ -21,16 +21,10 @@
#include <cutils/properties.h>
#include "update_engine/common/hardware.h"
+#include "update_engine/common/platform_constants.h"
using std::string;
-namespace {
-
-// The stateful directory used by update_engine.
-const char kNonVolatileDirectory[] = "/data/misc/update_engine";
-
-} // namespace
-
namespace chromeos_update_engine {
namespace hardware {
@@ -102,7 +96,7 @@
}
bool HardwareAndroid::GetNonVolatileDirectory(base::FilePath* path) const {
- base::FilePath local_path(kNonVolatileDirectory);
+ base::FilePath local_path(constants::kNonVolatileDirectory);
if (!base::PathExists(local_path)) {
LOG(ERROR) << "Non-volatile directory not found: " << local_path.value();
return false;
diff --git a/common/hardware_chromeos.cc b/common/hardware_chromeos.cc
index ae27e36..f93685d 100644
--- a/common/hardware_chromeos.cc
+++ b/common/hardware_chromeos.cc
@@ -29,6 +29,7 @@
#include "update_engine/common/hardware.h"
#include "update_engine/common/hwid_override.h"
+#include "update_engine/common/platform_constants.h"
#include "update_engine/common/subprocess.h"
#include "update_engine/common/utils.h"
@@ -49,10 +50,6 @@
// a powerwash is performed.
const char kPowerwashCountMarker[] = "powerwash_count";
-// The stateful directory used by update_engine. This directory is wiped during
-// powerwash.
-const char kNonVolatileDirectory[] = "/var/lib/update_engine";
-
} // namespace
namespace chromeos_update_engine {
@@ -144,7 +141,7 @@
}
bool HardwareChromeOS::GetNonVolatileDirectory(base::FilePath* path) const {
- *path = base::FilePath(kNonVolatileDirectory);
+ *path = base::FilePath(constants::kNonVolatileDirectory);
return true;
}
diff --git a/common/platform_constants.h b/common/platform_constants.h
index 8331064..d1786ff 100644
--- a/common/platform_constants.h
+++ b/common/platform_constants.h
@@ -47,6 +47,9 @@
// response. Empty if not supported.
extern const char kOmahaResponseDeadlineFile[];
+// The stateful directory used by update_engine.
+extern const char kNonVolatileDirectory[];
+
} // namespace constants
} // namespace chromeos_update_engine
diff --git a/common/platform_constants_android.cc b/common/platform_constants_android.cc
index b6084ac..f35d7ef 100644
--- a/common/platform_constants_android.cc
+++ b/common/platform_constants_android.cc
@@ -30,6 +30,7 @@
const char kCACertificatesPath[] = "/system/etc/security/cacerts";
// No deadline file API support on Android.
const char kOmahaResponseDeadlineFile[] = "";
+const char kNonVolatileDirectory[] = "/data/misc/update_engine";
} // namespace constants
} // namespace chromeos_update_engine
diff --git a/common/platform_constants_chromeos.cc b/common/platform_constants_chromeos.cc
index 45ca309..d8587ca 100644
--- a/common/platform_constants_chromeos.cc
+++ b/common/platform_constants_chromeos.cc
@@ -30,6 +30,8 @@
const char kCACertificatesPath[] = "/usr/share/chromeos-ca-certificates";
const char kOmahaResponseDeadlineFile[] =
"/tmp/update-check-response-deadline";
+// This directory is wiped during powerwash.
+const char kNonVolatileDirectory[] = "/var/lib/update_engine";
} // namespace constants
} // namespace chromeos_update_engine
diff --git a/common/utils.cc b/common/utils.cc
index cfd8db0..0796459 100644
--- a/common/utils.cc
+++ b/common/utils.cc
@@ -56,6 +56,7 @@
#include "update_engine/common/clock_interface.h"
#include "update_engine/common/constants.h"
+#include "update_engine/common/platform_constants.h"
#include "update_engine/common/prefs_interface.h"
#include "update_engine/common/subprocess.h"
#include "update_engine/omaha_request_params.h"
@@ -141,7 +142,13 @@
}
base::FilePath temp_dir;
+#ifdef __ANDROID__
+ temp_dir = base::FilePath(constants::kNonVolatileDirectory).Append("tmp");
+ if (!base::PathExists(temp_dir))
+ TEST_AND_RETURN_FALSE(base::CreateDirectory(temp_dir));
+#else
TEST_AND_RETURN_FALSE(base::GetTempDir(&temp_dir));
+#endif // __ANDROID__
*template_path = temp_dir.Append(path);
return true;
}