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 {
std::string InitClientId() override { return client_id_; }
std::string InitEnrollmentToken() override { return std::string(); }
std::string InitDMToken() override { return std::string(); }
bool InitEnrollmentErrorOption() override { return true; }
void SaveDMToken(const std::string& token) override {}
private:
......
......@@ -83,6 +83,13 @@ void BrowserDMTokenStorage::OnDMTokenStored(bool 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() {
// TODO(crbug.com/883869): Add a UMA metrics to track the deletion progress.
content::BrowserThread::PostAfterStartupTask(
......@@ -113,6 +120,8 @@ void BrowserDMTokenStorage::InitIfNeeded() {
dm_token_ = InitDMToken();
DVLOG(1) << "DM Token = " << dm_token_;
should_display_error_message_on_failure_ = InitEnrollmentErrorOption();
}
void BrowserDMTokenStorage::DeletePolicyDirectory() {}
......
......@@ -49,6 +49,10 @@ class BrowserDMTokenStorage {
// invoked.
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
// instance of the storage.
static void SetForTesting(BrowserDMTokenStorage* storage) {
......@@ -82,6 +86,9 @@ class BrowserDMTokenStorage {
// Gets the DM token and stores it in |dm_token_|. This implementation is
// platform dependant.
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.
virtual void SaveDMToken(const std::string& token) = 0;
......@@ -96,6 +103,7 @@ class BrowserDMTokenStorage {
std::string client_id_;
std::string enrollment_token_;
std::string dm_token_;
bool should_display_error_message_on_failure_;
SEQUENCE_CHECKER(sequence_checker_);
......
......@@ -134,6 +134,11 @@ std::string BrowserDMTokenStorageLinux::InitDMToken() {
return token;
}
bool BrowserDMTokenStorageLinux::InitEnrollmentErrorOption() {
// TODO(crbug/904983): Load the policy value for this option.
return true;
}
void BrowserDMTokenStorageLinux::SaveDMToken(const std::string& token) {
std::string client_id = RetrieveClientId();
base::PostTaskWithTraitsAndReplyWithResult(
......
......@@ -31,6 +31,7 @@ class BrowserDMTokenStorageLinux : public BrowserDMTokenStorage {
std::string InitClientId() override;
std::string InitEnrollmentToken() override;
std::string InitDMToken() override;
bool InitEnrollmentErrorOption() override;
void SaveDMToken(const std::string& token) override;
void DeletePolicyDirectory() override;
......
......@@ -31,6 +31,7 @@ class BrowserDMTokenStorageMac : public BrowserDMTokenStorage {
std::string InitClientId() override;
std::string InitEnrollmentToken() override;
std::string InitDMToken() override;
bool InitEnrollmentErrorOption() override;
void SaveDMToken(const std::string& token) override;
void DeletePolicyDirectory() override;
......
......@@ -181,6 +181,11 @@ std::string BrowserDMTokenStorageMac::InitDMToken() {
return token;
}
bool BrowserDMTokenStorageMac::InitEnrollmentErrorOption() {
// TODO(crbug/904983): Load the policy value for this option.
return true;
}
void BrowserDMTokenStorageMac::SaveDMToken(const std::string& token) {
std::string client_id = RetrieveClientId();
base::PostTaskWithTraitsAndReplyWithResult(
......
......@@ -34,12 +34,14 @@ class MockBrowserDMTokenStorage : public BrowserDMTokenStorage {
set_test_client_id(kClientId1);
set_test_enrollment_token(kEnrollmentToken1);
set_test_dm_token(kDMToken1);
set_test_error_option(false);
}
// BrowserDMTokenStorage override
std::string InitClientId() override { return test_client_id_; }
std::string InitEnrollmentToken() override { return test_enrollment_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(); }
......@@ -52,11 +54,15 @@ class MockBrowserDMTokenStorage : public BrowserDMTokenStorage {
void set_test_dm_token(std::string test_dm_token) {
test_dm_token_ = test_dm_token;
}
void set_test_error_option(bool error_option) {
test_error_option_ = error_option;
}
private:
std::string test_client_id_;
std::string test_enrollment_token_;
std::string test_dm_token_;
bool test_error_option_;
};
class BrowserDMTokenStorageTest : public testing::Test {
......@@ -93,4 +99,14 @@ TEST_F(BrowserDMTokenStorageTest, 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
......@@ -190,6 +190,11 @@ std::string BrowserDMTokenStorageWin::InitDMToken() {
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) {
base::PostTaskAndReplyWithResult(
com_sta_task_runner_.get(), FROM_HERE,
......
......@@ -31,6 +31,7 @@ class BrowserDMTokenStorageWin : public BrowserDMTokenStorage {
std::string InitClientId() override;
std::string InitEnrollmentToken() override;
std::string InitDMToken() override;
bool InitEnrollmentErrorOption() override;
void SaveDMToken(const std::string& token) override;
scoped_refptr<base::SingleThreadTaskRunner> com_sta_task_runner_;
......
......@@ -116,6 +116,7 @@ class FakeBrowserDMTokenStorage : public BrowserDMTokenStorage {
std::move(callback).Run(storage_enabled_);
}
std::string RetrieveDMToken() override { return dm_token_; }
bool ShouldDisplayErrorMessageOnFailure() override { return true; }
void SetEnrollmentToken(const std::string& enrollment_token) {
enrollment_token_ = enrollment_token;
......@@ -135,6 +136,11 @@ class FakeBrowserDMTokenStorage : public BrowserDMTokenStorage {
NOTREACHED();
return std::string();
}
bool InitEnrollmentErrorOption() override {
NOTREACHED();
return true;
}
void SaveDMToken(const std::string& dm_token) override { NOTREACHED(); }
void EnableStorage(bool storage_enabled) {
......
......@@ -38,6 +38,7 @@ class FakeDMTokenStorage : public BrowserDMTokenStorage {
std::string RetrieveDMToken() override { return dm_token_; }
std::string RetrieveEnrollmentToken() override { return enrollment_token_; }
std::string RetrieveClientId() override { return kClientId; }
bool ShouldDisplayErrorMessageOnFailure() override { return true; }
std::string InitClientId() override {
NOTREACHED();
......@@ -51,6 +52,10 @@ class FakeDMTokenStorage : public BrowserDMTokenStorage {
NOTREACHED();
return std::string();
}
bool InitEnrollmentErrorOption() override {
NOTREACHED();
return true;
}
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