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

Unified Diff: chrome/browser/chromeos/arc/arc_session_manager_unittest.cc

Issue 2541173002: arc: Make request to remove Android's data folder persistent. (Closed)
Patch Set: comments addressed Created 4 years 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: chrome/browser/chromeos/arc/arc_session_manager_unittest.cc
diff --git a/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc b/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc
index 574acaa4a2ca934eb0fd0c5d52ed859fea75a613..7dde85088b9d7fcdd76f29be56dd1715fc03c0eb 100644
--- a/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc
+++ b/chrome/browser/chromeos/arc/arc_session_manager_unittest.cc
@@ -27,6 +27,7 @@
#include "chrome/test/base/testing_profile.h"
#include "chromeos/chromeos_switches.h"
#include "chromeos/dbus/dbus_thread_manager.h"
+#include "chromeos/dbus/fake_session_manager_client.h"
#include "components/arc/arc_bridge_service.h"
#include "components/arc/test/fake_arc_bridge_service.h"
#include "components/prefs/pref_service.h"
@@ -53,6 +54,9 @@ class ArcSessionManagerTest : public testing::Test {
~ArcSessionManagerTest() override = default;
void SetUp() override {
+ chromeos::DBusThreadManager::GetSetterForTesting()->SetSessionManagerClient(
+ base::WrapUnique(new chromeos::FakeSessionManagerClient));
hidehiko 2016/12/06 05:05:30 nit: base::MakeUnique<chromeos::FakeSessionManager
khmel 2016/12/06 18:16:12 Done.
+
chromeos::DBusThreadManager::Initialize();
base::CommandLine::ForCurrentProcess()->AppendSwitch(
@@ -130,6 +134,7 @@ TEST_F(ArcSessionManagerTest, PrefChangeTriggersService) {
ASSERT_EQ(ArcSessionManager::State::STOPPED, arc_session_manager()->state());
pref->SetBoolean(prefs::kArcEnabled, true);
+ base::RunLoop().RunUntilIdle();
ASSERT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE,
arc_session_manager()->state());
@@ -196,6 +201,7 @@ TEST_F(ArcSessionManagerTest, BaseWorkflow) {
ASSERT_EQ(ArcSessionManager::State::STOPPED, arc_session_manager()->state());
profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, true);
+ base::RunLoop().RunUntilIdle();
// Setting profile and pref initiates a code fetching process.
ASSERT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE,
@@ -236,6 +242,8 @@ TEST_F(ArcSessionManagerTest, CancelFetchingDisablesArc) {
arc_session_manager()->OnPrimaryUserProfilePrepared(profile());
pref->SetBoolean(prefs::kArcEnabled, true);
+ base::RunLoop().RunUntilIdle();
+
ASSERT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE,
arc_session_manager()->state());
@@ -252,6 +260,7 @@ TEST_F(ArcSessionManagerTest, CloseUIKeepsArcEnabled) {
arc_session_manager()->OnPrimaryUserProfilePrepared(profile());
pref->SetBoolean(prefs::kArcEnabled, true);
+ base::RunLoop().RunUntilIdle();
arc_session_manager()->StartArc();
@@ -375,4 +384,53 @@ TEST_F(ArcSessionManagerTest, DisabledForNonPrimaryProfile) {
arc_session_manager()->Shutdown();
}
+TEST_F(ArcSessionManagerTest, RemoveDataFolder) {
+ profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, false);
+ // Starting session manager with prefs::kArcEnabled off automatically removes
+ // Android's data folder.
+ arc_session_manager()->OnPrimaryUserProfilePrepared(profile());
+ EXPECT_TRUE(
+ profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested));
+ EXPECT_EQ(ArcSessionManager::State::STOPPED, arc_session_manager()->state());
+ // Enable ARC. Data is removed asyncronously. At this moment session manager
+ // still should be stopped and data removal request is active.
+ profile()->GetPrefs()->SetBoolean(prefs::kArcEnabled, true);
+ EXPECT_TRUE(
+ profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested));
+ EXPECT_EQ(ArcSessionManager::State::STOPPED, arc_session_manager()->state());
+ // Wait until data is removed.
+ base::RunLoop().RunUntilIdle();
+ EXPECT_FALSE(
+ profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested));
+ EXPECT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE,
+ arc_session_manager()->state());
+ arc_session_manager()->StartArc();
+ EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state());
+
+ // Now request to remove data and stop session manager.
+ ArcSessionManager::Get()->RemoveArcData();
hidehiko 2016/12/02 08:54:55 s/ArcSessionManager::Get()/arc_session_manager()/
khmel 2016/12/06 03:23:57 Done.
+ ASSERT_TRUE(
+ profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested));
+ EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state());
+ ArcSessionManager::Get()->Shutdown();
hidehiko 2016/12/02 08:54:55 Ditto.
khmel 2016/12/06 03:23:57 Done.
+ base::RunLoop().RunUntilIdle();
+ // Request should persist.
+ ASSERT_TRUE(
+ profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested));
+
+ // Emulate next sign-in. Data should be removed first and ARC started after.
hidehiko 2016/12/02 08:54:55 To emulate re-sign-in, shouldn't we re-instantiate
khmel 2016/12/06 03:23:57 Hmm, probably I did not get you. Second and next O
hidehiko 2016/12/06 05:05:30 Oh, sorry for my poor explanation. I was wondering
khmel 2016/12/06 18:16:12 I did similar what you suggested in some other tes
hidehiko 2016/12/06 18:32:09 My understanding is, the check in the callback is
+ arc_session_manager()->OnPrimaryUserProfilePrepared(profile());
+ EXPECT_TRUE(
+ profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested));
+ EXPECT_EQ(ArcSessionManager::State::STOPPED, arc_session_manager()->state());
+ base::RunLoop().RunUntilIdle();
+ EXPECT_FALSE(
+ profile()->GetPrefs()->GetBoolean(prefs::kArcDataRemoveRequested));
+ EXPECT_EQ(ArcSessionManager::State::SHOWING_TERMS_OF_SERVICE,
+ arc_session_manager()->state());
+ arc_session_manager()->StartArc();
+ EXPECT_EQ(ArcSessionManager::State::ACTIVE, arc_session_manager()->state());
+ ArcSessionManager::Get()->Shutdown();
hidehiko 2016/12/02 08:54:55 Ditto.
khmel 2016/12/06 03:23:57 Done.
+}
+
} // namespace arc

Powered by Google App Engine
This is Rietveld 408576698