Revert "Remove TS_SS_TRANSITORY flag from TSF"

This reverts commit 5d66d2641816deb4aa942de069a7b2e0d6ee696f.

[email protected],[email protected]

(cherry picked from commit c581014e8ec5c7f5732fa4f6bf75649f88c625aa)

Bug: 1137267, 148355
Change-Id: Iba8a3cb59a12ddd4310849ee1cf877cb7ea8a019
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2471881
Commit-Queue: Anupam Snigdha <[email protected]>
Reviewed-by: Anupam Snigdha <[email protected]>
Cr-Original-Commit-Position: refs/heads/master@{#817109}
Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/2480885
Cr-Commit-Position: refs/branch-heads/4240@{#1259}
Cr-Branched-From: f297677702651916bbf65e59c0d4bbd4ce57d1ee-refs/heads/master@{#800218}
diff --git a/ui/base/ime/win/tsf_input_policy_unittest.cc b/ui/base/ime/win/tsf_input_policy_unittest.cc
index 0b4a3f9..ad602b7 100644
--- a/ui/base/ime/win/tsf_input_policy_unittest.cc
+++ b/ui/base/ime/win/tsf_input_policy_unittest.cc
@@ -268,19 +268,22 @@
   TS_STATUS status = {};
   EXPECT_EQ(S_OK, text_store_->GetStatus(&status));
   EXPECT_EQ((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
 }
 
 TEST_F(TSFInputPanelTest, ManualInputPaneToAutomaticPolicyTest) {
   TS_STATUS status = {};
   EXPECT_EQ(S_OK, text_store_->GetStatus(&status));
   EXPECT_EQ((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
   // TODO(crbug.com/1031786): Change this test once this bug is fixed
   fake_input_method_->ShowVirtualKeyboardIfEnabled();
   EXPECT_EQ(S_OK, text_store_->GetStatus(&status));
   EXPECT_EQ((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
 }
 
 // TODO(crbug.com/1031786): Enable this test this once this bug is fixed.
@@ -290,15 +293,18 @@
   // and test if the automatic policy flag has been set or not.
   EXPECT_EQ(S_OK, text_store_->GetStatus(&status));
   EXPECT_EQ((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
   fake_input_method_->ShowVirtualKeyboardIfEnabled();
   EXPECT_EQ(S_OK, text_store_->GetStatus(&status));
   EXPECT_NE((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
   fake_input_method_->DetachTextInputClient(nullptr);
   EXPECT_EQ(S_OK, text_store_->GetStatus(&status));
   EXPECT_EQ((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
 }
 
 // TODO(crbug.com/1031786): Enable this test this once this bug is fixed.
@@ -309,25 +315,30 @@
   // and test if the automatic policy flag has been set or not.
   EXPECT_EQ(S_OK, text_store1_->GetStatus(&status));
   EXPECT_EQ((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
   fake_input_method_->ShowVirtualKeyboardIfEnabled();
   EXPECT_EQ(S_OK, text_store1_->GetStatus(&status));
   EXPECT_NE((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
   fake_input_method_->DetachTextInputClient(nullptr);
   SwitchToDifferentTSFTextStore();
   // Different TSFTextStore is in focus so manual policy should be set in the
   // previous one
   EXPECT_EQ(S_OK, text_store1_->GetStatus(&status));
   EXPECT_EQ((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
   EXPECT_EQ(S_OK, text_store2_->GetStatus(&status));
   EXPECT_EQ((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
   fake_input_method_->ShowVirtualKeyboardIfEnabled();
   EXPECT_EQ(S_OK, text_store2_->GetStatus(&status));
   EXPECT_NE((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
 }
 
 }  // namespace
diff --git a/ui/base/ime/win/tsf_text_store.cc b/ui/base/ime/win/tsf_text_store.cc
index b5450a74..1eafee4 100644
--- a/ui/base/ime/win/tsf_text_store.cc
+++ b/ui/base/ime/win/tsf_text_store.cc
@@ -250,7 +250,8 @@
   //   status->dwDynamicFlags &= ~TS_SD_INPUTPANEMANUALDISPLAYENABLE;
   status->dwDynamicFlags |= TS_SD_INPUTPANEMANUALDISPLAYENABLE;
   // We don't support hidden text.
-  status->dwStaticFlags = TS_SS_NOHIDDENTEXT;
+  // TODO(IME): Remove TS_SS_TRANSITORY to support Korean reconversion
+  status->dwStaticFlags = TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT;
 
   return S_OK;
 }
diff --git a/ui/base/ime/win/tsf_text_store_unittest.cc b/ui/base/ime/win/tsf_text_store_unittest.cc
index 25db5d4..06ca415 100644
--- a/ui/base/ime/win/tsf_text_store_unittest.cc
+++ b/ui/base/ime/win/tsf_text_store_unittest.cc
@@ -394,7 +394,8 @@
   TS_STATUS status = {};
   EXPECT_EQ(S_OK, text_store_->GetStatus(&status));
   EXPECT_EQ((ULONG)TS_SD_INPUTPANEMANUALDISPLAYENABLE, status.dwDynamicFlags);
-  EXPECT_EQ((ULONG)(TS_SS_NOHIDDENTEXT), status.dwStaticFlags);
+  EXPECT_EQ((ULONG)(TS_SS_TRANSITORY | TS_SS_NOHIDDENTEXT),
+            status.dwStaticFlags);
 }
 
 TEST_F(TSFTextStoreTest, QueryInsertTest) {