Commit 51910fbb authored by Owen Min's avatar Owen Min Committed by Commit Bot

Add an error option in BrowserDMTokenStorage

The error option determines whether we show the error dialog when the
token enrollment is failed.

Bug: 904983
Change-Id: If43e4a3fdc71501ceb1feae16da0f87b88e84828
Reviewed-on: https://chromium-review.googlesource.com/c/1334408
Commit-Queue: Owen Min <zmin@chromium.org>
Reviewed-by: default avatarGeorges Khalil <georgesak@chromium.org>
Reviewed-by: default avatarJulian Pastarmov <pastarmovj@chromium.org>
Cr-Commit-Position: refs/heads/master@{#608116}
parent 41dfe8f1
...@@ -67,6 +67,7 @@ class FakeBrowserDMTokenStorage : public policy::BrowserDMTokenStorage { ...@@ -67,6 +67,7 @@ class FakeBrowserDMTokenStorage : public policy::BrowserDMTokenStorage {
std::string InitClientId() override { return client_id_; } std::string InitClientId() override { return client_id_; }
std::string InitEnrollmentToken() override { return std::string(); } std::string InitEnrollmentToken() override { return std::string(); }
std::string InitDMToken() override { return std::string(); } std::string InitDMToken() override { return std::string(); }
bool InitEnrollmentErrorOption() override { return true; }
void SaveDMToken(const std::string& token) override {} void SaveDMToken(const std::string& token) override {}
private: private:
......
...@@ -83,6 +83,13 @@ void BrowserDMTokenStorage::OnDMTokenStored(bool success) { ...@@ -83,6 +83,13 @@ void BrowserDMTokenStorage::OnDMTokenStored(bool success) {
std::move(store_callback_).Run(success); std::move(store_callback_).Run(success);
} }
bool BrowserDMTokenStorage::ShouldDisplayErrorMessageOnFailure() {
DCHECK_CALLED_ON_VALID_SEQUENCE(sequence_checker_);
InitIfNeeded();
return should_display_error_message_on_failure_;
}
void BrowserDMTokenStorage::ScheduleUnusedPolicyDirectoryDeletion() { void BrowserDMTokenStorage::ScheduleUnusedPolicyDirectoryDeletion() {
// TODO(crbug.com/883869): Add a UMA metrics to track the deletion progress. // TODO(crbug.com/883869): Add a UMA metrics to track the deletion progress.
content::BrowserThread::PostAfterStartupTask( content::BrowserThread::PostAfterStartupTask(
...@@ -113,6 +120,8 @@ void BrowserDMTokenStorage::InitIfNeeded() { ...@@ -113,6 +120,8 @@ void BrowserDMTokenStorage::InitIfNeeded() {
dm_token_ = InitDMToken(); dm_token_ = InitDMToken();
DVLOG(1) << "DM Token = " << dm_token_; DVLOG(1) << "DM Token = " << dm_token_;
should_display_error_message_on_failure_ = InitEnrollmentErrorOption();
} }
void BrowserDMTokenStorage::DeletePolicyDirectory() {} void BrowserDMTokenStorage::DeletePolicyDirectory() {}
......
...@@ -49,6 +49,10 @@ class BrowserDMTokenStorage { ...@@ -49,6 +49,10 @@ class BrowserDMTokenStorage {
// invoked. // invoked.
void OnDMTokenStored(bool success); void OnDMTokenStored(bool success);
// Return true if we display error message dialog when enrollment process
// fails.
virtual bool ShouldDisplayErrorMessageOnFailure();
// Set the mock BrowserDMTokenStorage for testing. The caller owns the // Set the mock BrowserDMTokenStorage for testing. The caller owns the
// instance of the storage. // instance of the storage.
static void SetForTesting(BrowserDMTokenStorage* storage) { static void SetForTesting(BrowserDMTokenStorage* storage) {
...@@ -82,6 +86,9 @@ class BrowserDMTokenStorage { ...@@ -82,6 +86,9 @@ class BrowserDMTokenStorage {
// Gets the DM token and stores it in |dm_token_|. This implementation is // Gets the DM token and stores it in |dm_token_|. This implementation is
// platform dependant. // platform dependant.
virtual std::string InitDMToken() = 0; virtual std::string InitDMToken() = 0;
// Gets the boolean value that determines if error message will be displayed
// when enrollment fails.
virtual bool InitEnrollmentErrorOption() = 0;
// Saves the DM token. This implementation is platform dependant. // Saves the DM token. This implementation is platform dependant.
virtual void SaveDMToken(const std::string& token) = 0; virtual void SaveDMToken(const std::string& token) = 0;
...@@ -96,6 +103,7 @@ class BrowserDMTokenStorage { ...@@ -96,6 +103,7 @@ class BrowserDMTokenStorage {
std::string client_id_; std::string client_id_;
std::string enrollment_token_; std::string enrollment_token_;
std::string dm_token_; std::string dm_token_;
bool should_display_error_message_on_failure_;
SEQUENCE_CHECKER(sequence_checker_); SEQUENCE_CHECKER(sequence_checker_);
......
...@@ -134,6 +134,11 @@ std::string BrowserDMTokenStorageLinux::InitDMToken() { ...@@ -134,6 +134,11 @@ std::string BrowserDMTokenStorageLinux::InitDMToken() {
return token; return token;
} }
bool BrowserDMTokenStorageLinux::InitEnrollmentErrorOption() {
// TODO(crbug/904983): Load the policy value for this option.
return true;
}
void BrowserDMTokenStorageLinux::SaveDMToken(const std::string& token) { void BrowserDMTokenStorageLinux::SaveDMToken(const std::string& token) {
std::string client_id = RetrieveClientId(); std::string client_id = RetrieveClientId();
base::PostTaskWithTraitsAndReplyWithResult( base::PostTaskWithTraitsAndReplyWithResult(
......
...@@ -31,6 +31,7 @@ class BrowserDMTokenStorageLinux : public BrowserDMTokenStorage { ...@@ -31,6 +31,7 @@ class BrowserDMTokenStorageLinux : public BrowserDMTokenStorage {
std::string InitClientId() override; std::string InitClientId() override;
std::string InitEnrollmentToken() override; std::string InitEnrollmentToken() override;
std::string InitDMToken() override; std::string InitDMToken() override;
bool InitEnrollmentErrorOption() override;
void SaveDMToken(const std::string& token) override; void SaveDMToken(const std::string& token) override;
void DeletePolicyDirectory() override; void DeletePolicyDirectory() override;
......
...@@ -31,6 +31,7 @@ class BrowserDMTokenStorageMac : public BrowserDMTokenStorage { ...@@ -31,6 +31,7 @@ class BrowserDMTokenStorageMac : public BrowserDMTokenStorage {
std::string InitClientId() override; std::string InitClientId() override;
std::string InitEnrollmentToken() override; std::string InitEnrollmentToken() override;
std::string InitDMToken() override; std::string InitDMToken() override;
bool InitEnrollmentErrorOption() override;
void SaveDMToken(const std::string& token) override; void SaveDMToken(const std::string& token) override;
void DeletePolicyDirectory() override; void DeletePolicyDirectory() override;
......
...@@ -181,6 +181,11 @@ std::string BrowserDMTokenStorageMac::InitDMToken() { ...@@ -181,6 +181,11 @@ std::string BrowserDMTokenStorageMac::InitDMToken() {
return token; return token;
} }
bool BrowserDMTokenStorageMac::InitEnrollmentErrorOption() {
// TODO(crbug/904983): Load the policy value for this option.
return true;
}
void BrowserDMTokenStorageMac::SaveDMToken(const std::string& token) { void BrowserDMTokenStorageMac::SaveDMToken(const std::string& token) {
std::string client_id = RetrieveClientId(); std::string client_id = RetrieveClientId();
base::PostTaskWithTraitsAndReplyWithResult( base::PostTaskWithTraitsAndReplyWithResult(
......
...@@ -34,12 +34,14 @@ class MockBrowserDMTokenStorage : public BrowserDMTokenStorage { ...@@ -34,12 +34,14 @@ class MockBrowserDMTokenStorage : public BrowserDMTokenStorage {
set_test_client_id(kClientId1); set_test_client_id(kClientId1);
set_test_enrollment_token(kEnrollmentToken1); set_test_enrollment_token(kEnrollmentToken1);
set_test_dm_token(kDMToken1); set_test_dm_token(kDMToken1);
set_test_error_option(false);
} }
// BrowserDMTokenStorage override // BrowserDMTokenStorage override
std::string InitClientId() override { return test_client_id_; } std::string InitClientId() override { return test_client_id_; }
std::string InitEnrollmentToken() override { return test_enrollment_token_; } std::string InitEnrollmentToken() override { return test_enrollment_token_; }
std::string InitDMToken() override { return test_dm_token_; } std::string InitDMToken() override { return test_dm_token_; }
bool InitEnrollmentErrorOption() override { return test_error_option_; }
void SaveDMToken(const std::string& dm_token) override { NOTREACHED(); } void SaveDMToken(const std::string& dm_token) override { NOTREACHED(); }
...@@ -52,11 +54,15 @@ class MockBrowserDMTokenStorage : public BrowserDMTokenStorage { ...@@ -52,11 +54,15 @@ class MockBrowserDMTokenStorage : public BrowserDMTokenStorage {
void set_test_dm_token(std::string test_dm_token) { void set_test_dm_token(std::string test_dm_token) {
test_dm_token_ = test_dm_token; test_dm_token_ = test_dm_token;
} }
void set_test_error_option(bool error_option) {
test_error_option_ = error_option;
}
private: private:
std::string test_client_id_; std::string test_client_id_;
std::string test_enrollment_token_; std::string test_enrollment_token_;
std::string test_dm_token_; std::string test_dm_token_;
bool test_error_option_;
}; };
class BrowserDMTokenStorageTest : public testing::Test { class BrowserDMTokenStorageTest : public testing::Test {
...@@ -93,4 +99,14 @@ TEST_F(BrowserDMTokenStorageTest, RetrieveDMToken) { ...@@ -93,4 +99,14 @@ TEST_F(BrowserDMTokenStorageTest, RetrieveDMToken) {
EXPECT_EQ(kDMToken1, storage.RetrieveDMToken()); EXPECT_EQ(kDMToken1, storage.RetrieveDMToken());
} }
TEST_F(BrowserDMTokenStorageTest, ShouldDisplayErrorMessageOnFailure) {
MockBrowserDMTokenStorage storage;
EXPECT_FALSE(storage.ShouldDisplayErrorMessageOnFailure());
// The error option should be cached in memory and not read from the system
// again.
storage.set_test_error_option(true);
EXPECT_FALSE(storage.ShouldDisplayErrorMessageOnFailure());
}
} // namespace policy } // namespace policy
...@@ -190,6 +190,11 @@ std::string BrowserDMTokenStorageWin::InitDMToken() { ...@@ -190,6 +190,11 @@ std::string BrowserDMTokenStorageWin::InitDMToken() {
return dm_token; return dm_token;
} }
bool BrowserDMTokenStorageWin::InitEnrollmentErrorOption() {
// TODO(crbug/904983): Load the policy value for this option.
return true;
}
void BrowserDMTokenStorageWin::SaveDMToken(const std::string& token) { void BrowserDMTokenStorageWin::SaveDMToken(const std::string& token) {
base::PostTaskAndReplyWithResult( base::PostTaskAndReplyWithResult(
com_sta_task_runner_.get(), FROM_HERE, com_sta_task_runner_.get(), FROM_HERE,
......
...@@ -31,6 +31,7 @@ class BrowserDMTokenStorageWin : public BrowserDMTokenStorage { ...@@ -31,6 +31,7 @@ class BrowserDMTokenStorageWin : public BrowserDMTokenStorage {
std::string InitClientId() override; std::string InitClientId() override;
std::string InitEnrollmentToken() override; std::string InitEnrollmentToken() override;
std::string InitDMToken() override; std::string InitDMToken() override;
bool InitEnrollmentErrorOption() override;
void SaveDMToken(const std::string& token) override; void SaveDMToken(const std::string& token) override;
scoped_refptr<base::SingleThreadTaskRunner> com_sta_task_runner_; scoped_refptr<base::SingleThreadTaskRunner> com_sta_task_runner_;
......
...@@ -116,6 +116,7 @@ class FakeBrowserDMTokenStorage : public BrowserDMTokenStorage { ...@@ -116,6 +116,7 @@ class FakeBrowserDMTokenStorage : public BrowserDMTokenStorage {
std::move(callback).Run(storage_enabled_); std::move(callback).Run(storage_enabled_);
} }
std::string RetrieveDMToken() override { return dm_token_; } std::string RetrieveDMToken() override { return dm_token_; }
bool ShouldDisplayErrorMessageOnFailure() override { return true; }
void SetEnrollmentToken(const std::string& enrollment_token) { void SetEnrollmentToken(const std::string& enrollment_token) {
enrollment_token_ = enrollment_token; enrollment_token_ = enrollment_token;
...@@ -135,6 +136,11 @@ class FakeBrowserDMTokenStorage : public BrowserDMTokenStorage { ...@@ -135,6 +136,11 @@ class FakeBrowserDMTokenStorage : public BrowserDMTokenStorage {
NOTREACHED(); NOTREACHED();
return std::string(); return std::string();
} }
bool InitEnrollmentErrorOption() override {
NOTREACHED();
return true;
}
void SaveDMToken(const std::string& dm_token) override { NOTREACHED(); } void SaveDMToken(const std::string& dm_token) override { NOTREACHED(); }
void EnableStorage(bool storage_enabled) { void EnableStorage(bool storage_enabled) {
......
...@@ -38,6 +38,7 @@ class FakeDMTokenStorage : public BrowserDMTokenStorage { ...@@ -38,6 +38,7 @@ class FakeDMTokenStorage : public BrowserDMTokenStorage {
std::string RetrieveDMToken() override { return dm_token_; } std::string RetrieveDMToken() override { return dm_token_; }
std::string RetrieveEnrollmentToken() override { return enrollment_token_; } std::string RetrieveEnrollmentToken() override { return enrollment_token_; }
std::string RetrieveClientId() override { return kClientId; } std::string RetrieveClientId() override { return kClientId; }
bool ShouldDisplayErrorMessageOnFailure() override { return true; }
std::string InitClientId() override { std::string InitClientId() override {
NOTREACHED(); NOTREACHED();
...@@ -51,6 +52,10 @@ class FakeDMTokenStorage : public BrowserDMTokenStorage { ...@@ -51,6 +52,10 @@ class FakeDMTokenStorage : public BrowserDMTokenStorage {
NOTREACHED(); NOTREACHED();
return std::string(); return std::string();
} }
bool InitEnrollmentErrorOption() override {
NOTREACHED();
return true;
}
void SaveDMToken(const std::string& dm_token) override { NOTREACHED(); } void SaveDMToken(const std::string& dm_token) override { NOTREACHED(); }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment