tpm_manager: add ignore_cache option in client

BUG=b:178332041
TEST=tpm_manager_client --nonsensitive
TEST=tpm_manager_client
TEST=tpm_manager_client --nonsensitive --ignore_cache
TEST=tpm_manager_client --ignore_cache

Change-Id: I669c6e9d22ac5115986c3eedad7000fbe07ecfce
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform2/+/2671687
Tested-by: Yi Chou <yich@google.com>
Commit-Queue: Yi Chou <yich@google.com>
Reviewed-by: Leo Lai <cylai@google.com>
diff --git a/tpm_manager/client/main.cc b/tpm_manager/client/main.cc
index 31bd4e4..14fc19e 100644
--- a/tpm_manager/client/main.cc
+++ b/tpm_manager/client/main.cc
@@ -56,6 +56,7 @@
 constexpr char kFileSwitch[] = "file";
 constexpr char kUseOwnerSwitch[] = "use_owner_authorization";
 constexpr char kNonsensitiveSwitch[] = "nonsensitive";
+constexpr char kIgnoreCacheSwitch[] = "ignore_cache";
 constexpr char kLockRead[] = "lock_read";
 constexpr char kLockWrite[] = "lock_write";
 
@@ -221,10 +222,12 @@
     if (command == kGetTpmStatusCommand) {
       if (!command_line->HasSwitch(kNonsensitiveSwitch)) {
         task = base::Bind(&ClientLoop::HandleGetTpmStatus,
-                          weak_factory_.GetWeakPtr());
+                          weak_factory_.GetWeakPtr(),
+                          command_line->HasSwitch(kIgnoreCacheSwitch));
       } else {
         task = base::Bind(&ClientLoop::HandleGetTpmNonsensitiveStatus,
-                          weak_factory_.GetWeakPtr());
+                          weak_factory_.GetWeakPtr(),
+                          command_line->HasSwitch(kIgnoreCacheSwitch));
       }
 
     } else if (command == kGetVersionInfoCommand) {
@@ -331,8 +334,9 @@
     Quit();
   }
 
-  void HandleGetTpmStatus() {
+  void HandleGetTpmStatus(bool ignore_cache) {
     GetTpmStatusRequest request;
+    request.set_ignore_cache(ignore_cache);
     tpm_ownership_->GetTpmStatusAsync(
         request,
         base::Bind(&ClientLoop::PrintReplyAndQuit<GetTpmStatusReply>,
@@ -341,8 +345,9 @@
         kDefaultTimeout.InMilliseconds());
   }
 
-  void HandleGetTpmNonsensitiveStatus() {
+  void HandleGetTpmNonsensitiveStatus(bool ignore_cache) {
     GetTpmNonsensitiveStatusRequest request;
+    request.set_ignore_cache(ignore_cache);
     tpm_ownership_->GetTpmNonsensitiveStatusAsync(
         request,
         base::Bind(