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

Unified Diff: chrome/browser/policy/device_management_policy_provider.h

Issue 6312121: Add initial device policy infrastructure. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix race condition and tests. Created 9 years, 11 months 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/policy/device_management_policy_provider.h
diff --git a/chrome/browser/policy/device_management_policy_provider.h b/chrome/browser/policy/device_management_policy_provider.h
deleted file mode 100644
index 592df9b9c709795b35cb78596ef0ecd087d2a7d7..0000000000000000000000000000000000000000
--- a/chrome/browser/policy/device_management_policy_provider.h
+++ /dev/null
@@ -1,171 +0,0 @@
-// Copyright (c) 2011 The Chromium Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#ifndef CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_POLICY_PROVIDER_H_
-#define CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_POLICY_PROVIDER_H_
-#pragma once
-
-#include <string>
-
-#include "base/file_path.h"
-#include "base/observer_list.h"
-#include "base/scoped_ptr.h"
-#include "base/time.h"
-#include "chrome/browser/policy/configuration_policy_provider.h"
-#include "chrome/browser/policy/device_management_backend.h"
-#include "chrome/browser/policy/device_token_fetcher.h"
-
-class Profile;
-class TokenService;
-
-namespace policy {
-
-class DeviceManagementBackend;
-class DeviceManagementPolicyCache;
-
-// Provides policy fetched from the device management server. With the exception
-// of the Provide method, which can be called on the FILE thread, all public
-// methods must be called on the UI thread.
-class DeviceManagementPolicyProvider
- : public ConfigurationPolicyProvider,
- public DeviceManagementBackend::DevicePolicyResponseDelegate,
- public DeviceTokenFetcher::Observer {
- public:
- DeviceManagementPolicyProvider(const PolicyDefinitionList* policy_list,
- DeviceManagementBackend* backend,
- Profile* profile);
-
- virtual ~DeviceManagementPolicyProvider();
-
- // ConfigurationPolicyProvider implementation:
- virtual bool Provide(ConfigurationPolicyStoreInterface* store);
- virtual bool IsInitializationComplete() const;
-
- // DevicePolicyResponseDelegate implementation:
- virtual void HandlePolicyResponse(
- const em::DevicePolicyResponse& response);
- virtual void OnError(DeviceManagementBackend::ErrorCode code);
-
- // DeviceTokenFetcher::Observer implementation:
- virtual void OnTokenSuccess();
- virtual void OnTokenError();
- virtual void OnNotManaged();
-
- // Sets the refresh rate at which to re-fetch policy information.
- void SetRefreshRate(int64 refresh_rate_milliseconds);
-
- private:
- // Indicates the current state the provider is in.
- enum ProviderState {
- // The provider is initializing, policy information not yet available.
- STATE_INITIALIZING,
- // This device is not managed through policy.
- STATE_UNMANAGED,
- // The token is valid, but policy is yet to be fetched.
- STATE_TOKEN_VALID,
- // Policy information is available and valid.
- STATE_POLICY_VALID,
- // The token was found to be invalid and needs to be obtained again.
- STATE_TOKEN_RESET,
- // There has been an error fetching the token, retry later.
- STATE_TOKEN_ERROR,
- // The service returned an error when requesting policy, ask again later.
- STATE_POLICY_ERROR,
- };
-
- class RefreshTask;
-
- friend class DeviceManagementPolicyProviderTest;
-
- // More configurable constructor for use by test cases.
- DeviceManagementPolicyProvider(const PolicyDefinitionList* policy_list,
- DeviceManagementBackend* backend,
- Profile* profile,
- int64 policy_refresh_rate_ms,
- int policy_refresh_deviation_factor_percent,
- int64 policy_refresh_deviation_max_ms,
- int64 policy_refresh_error_delay_ms,
- int64 token_fetch_error_delay_ms,
- int64 unmanaged_device_refresh_rate_ms);
-
- // Called by constructors to perform shared initialization. Initialization
- // requiring the IOThread must not be performed directly in this method,
- // rather must be deferred until the IOThread is fully initialized. This is
- // the case in InitializeAfterIOThreadExists.
- void Initialize(DeviceManagementBackend* backend,
- Profile* profile,
- int64 policy_refresh_rate_ms,
- int policy_refresh_deviation_factor_percent,
- int64 policy_refresh_deviation_max_ms,
- int64 policy_refresh_error_delay_ms,
- int64 token_fetch_error_delay_ms,
- int64 unmanaged_device_refresh_rate_ms);
-
- // ConfigurationPolicyProvider overrides:
- virtual void AddObserver(ConfigurationPolicyProvider::Observer* observer);
- virtual void RemoveObserver(ConfigurationPolicyProvider::Observer* observer);
-
- // Sends a request to the device manager backend to fetch policy if one isn't
- // already outstanding.
- void SendPolicyRequest();
-
- // Triggers policy refresh, re-requesting device token and policy information
- // as necessary.
- void RefreshTaskExecute();
-
- // Cancels the refresh task.
- void CancelRefreshTask();
-
- // Notify observers about a policy update.
- void NotifyCloudPolicyUpdate();
-
- // The path of the device token file.
- FilePath GetTokenPath();
-
- // Used only by tests.
- void SetDeviceTokenFetcher(DeviceTokenFetcher* token_fetcher);
-
- // Switches to a new state and triggers any appropriate actions.
- void SetState(ProviderState new_state);
-
- // Check whether the current state is one in which the token is available.
- bool TokenAvailable() const;
-
- // Computes the refresh delay to use.
- int64 GetRefreshDelay();
-
- // Provides the URL at which requests are sent to from the device management
- // backend.
- static std::string GetDeviceManagementURL();
-
- // Returns the path to the sub-directory in the user data directory
- // in which device management persistent state is stored.
- static FilePath GetOrCreateDeviceManagementDir(
- const FilePath& user_data_dir);
-
- scoped_ptr<DeviceManagementBackend> backend_;
- Profile* profile_; // weak
- scoped_ptr<DeviceManagementPolicyCache> cache_;
- scoped_refptr<DeviceTokenFetcher> token_fetcher_;
- DeviceTokenFetcher::ObserverRegistrar registrar_;
- ObserverList<ConfigurationPolicyProvider::Observer, true> observer_list_;
- FilePath storage_dir_;
- ProviderState state_;
- bool initial_fetch_done_;
- RefreshTask* refresh_task_;
- int64 policy_refresh_rate_ms_;
- int policy_refresh_deviation_factor_percent_;
- int64 policy_refresh_deviation_max_ms_;
- int64 policy_refresh_error_delay_ms_;
- int64 effective_policy_refresh_error_delay_ms_;
- int64 token_fetch_error_delay_ms_;
- int64 effective_token_fetch_error_delay_ms_;
- int64 unmanaged_device_refresh_rate_ms_;
-
- DISALLOW_COPY_AND_ASSIGN(DeviceManagementPolicyProvider);
-};
-
-} // namespace policy
-
-#endif // CHROME_BROWSER_POLICY_DEVICE_MANAGEMENT_POLICY_PROVIDER_H_

Powered by Google App Engine
This is Rietveld 408576698