diff options
Diffstat (limited to 'chrome')
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: |