Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(112)

Unified Diff: chromeos/dbus/fake_cryptohome_client.cc

Issue 2784273003: Implement a basic UI flow for cryptohome encryption migration. (Closed)
Patch Set: . Created 3 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chromeos/dbus/fake_cryptohome_client.cc
diff --git a/chromeos/dbus/fake_cryptohome_client.cc b/chromeos/dbus/fake_cryptohome_client.cc
index 5954af0593ada4496fe4be01a9044f7bc9ca365b..33cd00792504c4a005ee42636b2f203cb9d2d95d 100644
--- a/chromeos/dbus/fake_cryptohome_client.cc
+++ b/chromeos/dbus/fake_cryptohome_client.cc
@@ -32,6 +32,10 @@ namespace {
constexpr char kTwentyBytesNonce[] = "+addtwentybytesnonce";
// A symbolic signature.
constexpr char kSignature[] = "signed";
+// Interval to update the progress of MigrateToDircrypto in milliseconds.
+constexpr int kDircryptoMigrationUpdateIntervalMs = 200;
+// The number of updates the MigrateToDircrypto will send before it completes.
+constexpr uint64_t kDircryptoMigrationMaxProgress = 15;
} // namespace
FakeCryptohomeClient::FakeCryptohomeClient()
@@ -66,7 +70,9 @@ void FakeCryptohomeClient::SetLowDiskSpaceHandler(
const LowDiskSpaceHandler& handler) {}
void FakeCryptohomeClient::SetDircryptoMigrationProgressHandler(
- const DircryptoMigrationProgessHandler& handler) {}
+ const DircryptoMigrationProgessHandler& handler) {
+ dircrypto_migration_progress_handler_ = handler;
+}
void FakeCryptohomeClient::WaitForServiceToBeAvailable(
const WaitForServiceToBeAvailableCallback& callback) {
@@ -589,6 +595,11 @@ void FakeCryptohomeClient::MigrateToDircrypto(
const VoidDBusMethodCallback& callback) {
base::ThreadTaskRunnerHandle::Get()->PostTask(
FROM_HERE, base::Bind(callback, DBUS_METHOD_CALL_SUCCESS));
+ dircrypto_migration_progress_ = 0;
+ dircrypto_migration_progress_timer_.Start(
+ FROM_HERE,
+ base::TimeDelta::FromMilliseconds(kDircryptoMigrationUpdateIntervalMs),
+ this, &FakeCryptohomeClient::OnDircryptoMigrationProgressUpdated);
}
void FakeCryptohomeClient::SetServiceIsAvailable(bool is_available) {
@@ -655,4 +666,26 @@ void FakeCryptohomeClient::ReturnAsyncMethodDataInternal(
++async_call_id_;
}
+void FakeCryptohomeClient::OnDircryptoMigrationProgressUpdated() {
+ dircrypto_migration_progress_++;
+
+ if (dircrypto_migration_progress_handler_.is_null())
+ return;
xiyuan 2017/03/30 17:55:40 Stop |dircrypto_migration_progress_timer_| before
fukino 2017/03/31 02:29:53 Since I'd like to cover the case when the progress
+
+ if (dircrypto_migration_progress_ >= kDircryptoMigrationMaxProgress) {
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(dircrypto_migration_progress_handler_,
+ cryptohome::DIRCRYPTO_MIGRATION_SUCCESS,
+ dircrypto_migration_progress_,
+ kDircryptoMigrationMaxProgress));
+ dircrypto_migration_progress_timer_.Stop();
+ return;
+ }
+ base::ThreadTaskRunnerHandle::Get()->PostTask(
+ FROM_HERE, base::Bind(dircrypto_migration_progress_handler_,
+ cryptohome::DIRCRYPTO_MIGRATION_IN_PROGRESS,
+ dircrypto_migration_progress_,
+ kDircryptoMigrationMaxProgress));
+}
+
} // namespace chromeos

Powered by Google App Engine
This is Rietveld 408576698