summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--chrome/browser/policy/device_token_fetcher.cc9
-rw-r--r--chrome/browser/policy/device_token_fetcher_unittest.cc16
-rw-r--r--chrome/browser/policy/mock_device_management_backend.cc15
-rw-r--r--chrome/browser/policy/mock_device_management_backend.h7
4 files changed, 46 insertions, 1 deletions
diff --git a/chrome/browser/policy/device_token_fetcher.cc b/chrome/browser/policy/device_token_fetcher.cc
index e7f2acc..982d86f 100644
--- a/chrome/browser/policy/device_token_fetcher.cc
+++ b/chrome/browser/policy/device_token_fetcher.cc
@@ -78,6 +78,13 @@ void DeviceTokenFetcher::HandleRegisterResponse(
void DeviceTokenFetcher::OnError(DeviceManagementBackend::ErrorCode code) {
DCHECK(BrowserThread::CurrentlyOn(BrowserThread::UI));
+ // For privacy reasons, delete all identifying data when this device is not
+ // managed.
+ if (code == DeviceManagementBackend::kErrorServiceManagementNotSupported) {
+ device_token_ = std::string();
+ device_id_ = std::string();
+ file_util::Delete(token_path_, false);
+ }
SetState(kStateFailure);
}
@@ -207,4 +214,4 @@ std::string DeviceTokenFetcher::GenerateNewDeviceID() {
return guid::GenerateGUID();
}
-}
+} // namespace policy
diff --git a/chrome/browser/policy/device_token_fetcher_unittest.cc b/chrome/browser/policy/device_token_fetcher_unittest.cc
index b6f50e5..ea1e41d 100644
--- a/chrome/browser/policy/device_token_fetcher_unittest.cc
+++ b/chrome/browser/policy/device_token_fetcher_unittest.cc
@@ -67,6 +67,10 @@ class DeviceTokenFetcherTest : public testing::Test {
fetcher->GetDeviceTokenPath(path);
}
+ const std::string& device_id(const DeviceTokenFetcher* fetcher) {
+ return fetcher->device_id_;
+ }
+
MessageLoop loop_;
scoped_ptr<MockDeviceManagementBackend> backend_;
ScopedTempDir temp_user_data_dir_;
@@ -166,4 +170,16 @@ TEST_F(DeviceTokenFetcherTest, FailedServerRequest) {
EXPECT_EQ("", token);
}
+TEST_F(DeviceTokenFetcherTest, UnmanagedDevice) {
+ backend_->UnmanagedDevice();
+ EXPECT_CALL(*backend_, ProcessRegisterRequest(_, _, _, _)).Times(1);
+ SimulateSuccessfulLoginAndRunPending();
+ ASSERT_FALSE(fetcher_->IsTokenPending());
+ ASSERT_EQ("", fetcher_->GetDeviceToken());
+ ASSERT_EQ("", device_id(fetcher_));
+ FilePath token_path;
+ GetDeviceTokenPath(fetcher_, &token_path);
+ ASSERT_FALSE(file_util::PathExists(token_path));
+}
+
} // namespace policy
diff --git a/chrome/browser/policy/mock_device_management_backend.cc b/chrome/browser/policy/mock_device_management_backend.cc
index 2811c2b..613022f 100644
--- a/chrome/browser/policy/mock_device_management_backend.cc
+++ b/chrome/browser/policy/mock_device_management_backend.cc
@@ -59,6 +59,13 @@ void MockDeviceManagementBackend::AllShouldFail() {
&MockDeviceManagementBackend::SimulateFailedPolicyRequest));
}
+void MockDeviceManagementBackend::UnmanagedDevice() {
+ ON_CALL(*this, ProcessRegisterRequest(_, _, _, _)).
+ WillByDefault(Invoke(
+ this,
+ &MockDeviceManagementBackend::SimulateUnmanagedRegisterRequest));
+}
+
void MockDeviceManagementBackend::AddBooleanPolicy(const char* policy_name,
bool value) {
em::GenericSetting* policy_value = policy_setting_->mutable_policy_value();
@@ -103,4 +110,12 @@ void MockDeviceManagementBackend::SimulateFailedPolicyRequest(
delegate->OnError(kErrorRequestFailed);
}
+void MockDeviceManagementBackend::SimulateUnmanagedRegisterRequest(
+ const std::string& auth_token,
+ const std::string& device_id,
+ const em::DeviceRegisterRequest& request,
+ DeviceRegisterResponseDelegate* delegate) {
+ delegate->OnError(kErrorServiceManagementNotSupported);
+}
+
} // namespace
diff --git a/chrome/browser/policy/mock_device_management_backend.h b/chrome/browser/policy/mock_device_management_backend.h
index e48e214..f0612f4 100644
--- a/chrome/browser/policy/mock_device_management_backend.h
+++ b/chrome/browser/policy/mock_device_management_backend.h
@@ -46,6 +46,7 @@ class MockDeviceManagementBackend
void AllShouldSucceed();
void AllShouldFail();
+ void UnmanagedDevice();
void SimulateSuccessfulRegisterRequest(
const std::string& auth_token,
@@ -69,6 +70,12 @@ class MockDeviceManagementBackend
const em::DevicePolicyRequest& request,
DevicePolicyResponseDelegate* delegate);
+ void SimulateUnmanagedRegisterRequest(
+ const std::string& auth_token,
+ const std::string& device_id,
+ const em::DeviceRegisterRequest& request,
+ DeviceRegisterResponseDelegate* delegate);
+
void AddBooleanPolicy(const char* policy_name, bool value);
private: