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

Issue 6312121: Add initial device policy infrastructure. (Closed)

Created:
9 years, 10 months ago by Mattias Nissler (ping if slow)
Modified:
9 years, 7 months ago
CC:
chromium-reviews, Paweł Hajdan Jr., nkostylev+cc_chromium.org, davemoore+watch_chromium.org, brettw-cc_chromium.org, Denis Lagno
Visibility:
Public.

Description

Add initial device policy infrastructure. This refactors the cloud policy-related code to support device policy that gets associated with the whole browser session. Device policy information will show up in g_browser_process->local_state(). Also, start supporting recommended policy from the cloud. BUG=chromium-os:11259, chromium-os:11257, chromium-os:11256 TEST=Enable device polcy by passing --device-policy-cache-dir, claim a device and verify that policy gets downloaded.

Patch Set 1 #

Patch Set 2 : Updated version with fixed/disabled tests. #

Patch Set 3 : cleanup/compile fixes. #

Total comments: 64

Patch Set 4 : fix race condition and tests. #

Unified diffs Side-by-side diffs Delta from patch set Stats (+2441 lines, -1812 lines) Patch
M chrome/browser/browser_main.cc View 5 chunks +8 lines, -3 lines 0 comments Download
M chrome/browser/browser_process.h View 2 chunks +2 lines, -3 lines 0 comments Download
M chrome/browser/browser_process_impl.h View 3 chunks +4 lines, -6 lines 0 comments Download
M chrome/browser/browser_process_impl.cc View 6 chunks +13 lines, -16 lines 0 comments Download
A chrome/browser/policy/browser_policy_context.h View 1 2 3 1 chunk +64 lines, -0 lines 0 comments Download
A chrome/browser/policy/browser_policy_context.cc View 1 2 3 1 chunk +161 lines, -0 lines 0 comments Download
A + chrome/browser/policy/cloud_policy_cache.h View 1 2 3 4 chunks +36 lines, -20 lines 0 comments Download
A + chrome/browser/policy/cloud_policy_cache.cc View 1 2 3 10 chunks +93 lines, -35 lines 0 comments Download
A + chrome/browser/policy/cloud_policy_cache_unittest.cc View 1 2 3 3 chunks +6 lines, -2 lines 0 comments Download
A chrome/browser/policy/cloud_policy_client.h View 1 chunk +143 lines, -0 lines 0 comments Download
A chrome/browser/policy/cloud_policy_client.cc View 1 2 3 1 chunk +282 lines, -0 lines 0 comments Download
A + chrome/browser/policy/cloud_policy_client_unittest.cc View 1 2 chunks +6 lines, -3 lines 0 comments Download
A chrome/browser/policy/cloud_policy_context.h View 1 2 3 1 chunk +71 lines, -0 lines 0 comments Download
A chrome/browser/policy/cloud_policy_context.cc View 1 2 3 1 chunk +118 lines, -0 lines 0 comments Download
A chrome/browser/policy/cloud_policy_controller.h View 1 chunk +82 lines, -0 lines 0 comments Download
M chrome/browser/policy/configuration_policy_pref_store.h View 2 3 1 chunk +10 lines, -5 lines 0 comments Download
M chrome/browser/policy/configuration_policy_pref_store.cc View 1 2 3 5 chunks +42 lines, -22 lines 0 comments Download
M chrome/browser/policy/configuration_policy_pref_store_unittest.cc View 1 2 3 1 chunk +1 line, -1 line 0 comments Download
D chrome/browser/policy/configuration_policy_provider_keeper.h View 1 chunk +0 lines, -46 lines 0 comments Download
D chrome/browser/policy/configuration_policy_provider_keeper.cc View 1 chunk +0 lines, -100 lines 0 comments Download
D chrome/browser/policy/device_management_policy_provider.h View 1 chunk +0 lines, -171 lines 0 comments Download
D chrome/browser/policy/device_management_policy_provider.cc View 1 chunk +0 lines, -384 lines 0 comments Download
A chrome/browser/policy/device_policy_controller.h View 1 chunk +60 lines, -0 lines 0 comments Download
A chrome/browser/policy/device_policy_controller.cc View 1 2 3 1 chunk +112 lines, -0 lines 0 comments Download
M chrome/browser/policy/device_token_fetcher.h View 2 chunks +68 lines, -137 lines 0 comments Download
M chrome/browser/policy/device_token_fetcher.cc View 1 chunk +117 lines, -279 lines 0 comments Download
M chrome/browser/policy/device_token_fetcher_unittest.cc View 1 2 3 3 chunks +5 lines, -2 lines 0 comments Download
M chrome/browser/policy/profile_policy_context.h View 1 2 3 3 chunks +12 lines, -26 lines 0 comments Download
M chrome/browser/policy/profile_policy_context.cc View 1 2 3 2 chunks +54 lines, -48 lines 0 comments Download
A chrome/browser/policy/user_policy_controller.h View 1 chunk +78 lines, -0 lines 0 comments Download
A chrome/browser/policy/user_policy_controller.cc View 1 2 1 chunk +230 lines, -0 lines 0 comments Download
M chrome/browser/prefs/browser_prefs.cc View 1 2 3 3 chunks +3 lines, -1 line 0 comments Download
M chrome/browser/prefs/pref_member.h View 1 2 3 2 chunks +6 lines, -1 line 0 comments Download
M chrome/browser/prefs/pref_service.h View 1 2 3 1 chunk +3 lines, -2 lines 0 comments Download
M chrome/browser/prefs/pref_service.cc View 1 2 3 4 chunks +34 lines, -29 lines 0 comments Download
M chrome/browser/prefs/pref_service_mock_builder.h View 1 2 3 2 chunks +10 lines, -9 lines 0 comments Download
M chrome/browser/prefs/pref_service_mock_builder.cc View 1 2 3 3 chunks +28 lines, -15 lines 0 comments Download
M chrome/browser/prefs/pref_value_store.h View 1 2 3 4 chunks +16 lines, -11 lines 0 comments Download
M chrome/browser/prefs/pref_value_store.cc View 1 2 3 3 chunks +21 lines, -18 lines 0 comments Download
M chrome/browser/prefs/pref_value_store_unittest.cc View 1 2 3 3 chunks +396 lines, -287 lines 0 comments Download
M chrome/chrome_browser.gypi View 1 5 chunks +15 lines, -6 lines 0 comments Download
M chrome/chrome_tests.gypi View 1 2 chunks +2 lines, -4 lines 0 comments Download
M chrome/common/chrome_switches.h View 1 2 3 3 chunks +3 lines, -2 lines 0 comments Download
M chrome/common/chrome_switches.cc View 1 2 3 2 chunks +5 lines, -1 line 0 comments Download
M chrome/common/pref_names.h View 1 2 3 1 chunk +3 lines, -1 line 0 comments Download
M chrome/common/pref_names.cc View 1 2 3 1 chunk +8 lines, -4 lines 0 comments Download
M chrome/test/testing_browser_process.h View 1 4 chunks +8 lines, -15 lines 0 comments Download
D chrome/test/testing_device_token_fetcher.h View 1 1 chunk +0 lines, -46 lines 0 comments Download
D chrome/test/testing_device_token_fetcher.cc View 1 1 chunk +0 lines, -45 lines 0 comments Download
M chrome/test/testing_pref_service.h View 1 2 3 2 chunks +0 lines, -2 lines 0 comments Download
M chrome/test/testing_pref_service.cc View 1 2 3 2 chunks +2 lines, -4 lines 0 comments Download

Messages

Total messages: 4 (0 generated)
Mattias Nissler (ping if slow)
Note: This is pending updates to the various unit tests, so the test binaries don't ...
9 years, 10 months ago (2011-02-03 15:18:04 UTC) #1
danno
here's some feedback to keep you busy :) http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/browser_policy_context.h File chrome/browser/policy/browser_policy_context.h (right): http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/browser_policy_context.h#newcode24 chrome/browser/policy/browser_policy_context.h:24: class ...
9 years, 10 months ago (2011-02-04 16:01:33 UTC) #2
Jakob Kummerow
One round of feedback from me... We'll need to discuss the naming of the various ...
9 years, 10 months ago (2011-02-07 16:00:09 UTC) #3
Jakob Kummerow
9 years, 10 months ago (2011-02-14 13:50:34 UTC) #4
Next patch set is at http://codereview.chromium.org/6520008. It's rebased onto
my CloudPolicyCache-changing CL. Please have a look.

Other changes you'll find there:

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/browser_proce...
File chrome/browser/browser_process_impl.cc (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/browser_proce...
chrome/browser/browser_process_impl.cc:104: created_sidebar_manager_(false),
On 2011/02/07 16:00:09, jkummerow wrote:
> + created_browser_policy_context_(false),

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/browse...
File chrome/browser/policy/browser_policy_context.h (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/browse...
chrome/browser/policy/browser_policy_context.h:24: class BrowserPolicyContext {
On 2011/02/04 16:01:33, danno wrote:
> How about s/Context/Custodian/ :-)

Done -- as discussed offline, s/Context/Connector/.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/browse...
chrome/browser/policy/browser_policy_context.h:29: BrowserPolicyContext(
On 2011/02/04 16:01:33, danno wrote:
> protected?

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
File chrome/browser/policy/cloud_policy_cache.cc (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_cache.cc:191: return
managed_policy_provider_.get();
On 2011/02/04 16:01:33, danno wrote:
> Make this class nonthreadsafe?

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
File chrome/browser/policy/cloud_policy_cache.h (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_cache.h:29: class CloudPolicyCache {
On 2011/02/04 16:01:33, danno wrote:
> CloudPolicyOracle? :-)

Nope.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
File chrome/browser/policy/cloud_policy_client.cc (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_client.cc:23: // non-managed domain names.
Returns false if |username| is empty or its
On 2011/02/04 16:01:33, danno wrote:
> s/its/it's/

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
File chrome/browser/policy/cloud_policy_client.h (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_client.h:32: class CloudPolicyClient
On 2011/02/04 16:01:33, danno wrote:
> CloudPolicyBroker? CloudPolicyController?

Done. CloudPolicyController.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_client.h:33: :  public
DeviceManagementBackend::DevicePolicyResponseDelegate,
On 2011/02/07 16:00:09, jkummerow wrote:
> nit: one space after ':'

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_client.h:92: // the case in
InitializeAfterIOThreadExists.
On 2011/02/07 16:00:09, jkummerow wrote:
> nit: update comment: I don't see InitializeAfterIOThreadExists() anywhere.

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
File chrome/browser/policy/cloud_policy_context.h (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_context.h:27: // policy. It glues together
the backend, the policy client and manages the live
On 2011/02/07 16:00:09, jkummerow wrote:
> nit: s/live/life/

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_context.h:29: class CloudPolicyContext :
public NotificationObserver {
On 2011/02/04 16:01:33, danno wrote:
> CloudPolicyCustodian

Done -- CloudPolicySubsystem.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_context.h:48: 3 * 60 * 60 * 1000; // 3 hours.
On 2011/02/07 16:00:09, jkummerow wrote:
> nit: two spaces before comment

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
File chrome/browser/policy/cloud_policy_controller.h (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_controller.h:16: // Manages a device
management token, i.e. an identifier that represents a
On 2011/02/04 16:01:33, danno wrote:
> It does more than that... better comment?

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_controller.h:18: class CloudPolicyController
{
On 2011/02/04 16:01:33, danno wrote:
> CloudPolicyIdentityStrategy?

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_controller.h:26: virtual void
OnTokenChanged() = 0;
On 2011/02/04 16:01:33, danno wrote:
> s/OnTokenChanged/OnDeviceTokenChanged/

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_controller.h:57: // Notifies the provider
that a new token has been fetched. It is up to the
On 2011/02/04 16:01:33, danno wrote:
> I don't think you mean provider, you mean controller, right?

Done. (s/provider/identity strategy/, to be precise.)

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_controller.h:58: // provider to decide that
token is going to be used, in which case it should
On 2011/02/04 16:01:33, danno wrote:
> provider -> controller

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_controller.h:59: // send a OnTokenChanged()
notification an return the new token in
On 2011/02/04 16:01:33, danno wrote:
> s/an/and

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_controller.h:59: // send a OnTokenChanged()
notification an return the new token in
On 2011/02/04 16:01:33, danno wrote:
> Couldn't you also have OnTokenChanged return a boolean that determines whether
> NotifyTokenChanged is called?

I don't currently see a use case for that...

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_controller.h:61: virtual void
OnTokenAvailable(const std::string& token) = 0;
On 2011/02/04 16:01:33, danno wrote:
> s/OnTokenAvailable/OnDeviceTokenAvailable/ to disambiguate from auth token.

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/cloud_...
chrome/browser/policy/cloud_policy_controller.h:65: void NotifyTokenChanged() {
On 2011/02/04 16:01:33, danno wrote:
> s/NotifyTokenChanged/NotifyDeviceTokenChanged/

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/config...
File chrome/browser/policy/configuration_policy_pref_store.cc (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/config...
chrome/browser/policy/configuration_policy_pref_store.cc:734:
context->GetManagedPlatformProvider());
On 2011/02/04 16:01:33, danno wrote:
> indentation

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/config...
chrome/browser/policy/configuration_policy_pref_store.cc:756:
context->GetRecommendedPlatformProvider());
On 2011/02/04 16:01:33, danno wrote:
> indentation

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/device...
File chrome/browser/policy/device_policy_controller.cc (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/device...
chrome/browser/policy/device_policy_controller.cc:53: // Only fetch policy when
the owner is logged in.
On 2011/02/07 16:00:09, jkummerow wrote:
> s/policy/token/ ? Or am I missing something here?

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/device...
File chrome/browser/policy/device_token_fetcher.cc (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/device...
chrome/browser/policy/device_token_fetcher.cc:58: // Construct a new backend,
which will discard any previous requests.
On 2011/02/04 16:01:33, danno wrote:
> You should validate that the state machine is in the right place. Maybe an
> external and internal fetch token. Passing device_id_ to yourself in the retry
> case is a bit confusing since it immediately gets set again.

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/device...
chrome/browser/policy/device_token_fetcher.cc:115: void
DeviceTokenFetcher::SetState(FetcherState state) {
On 2011/02/04 16:01:33, danno wrote:
> Please include state diagram in header documentation the states transitions.

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/device...
chrome/browser/policy/device_token_fetcher.cc:135: delayed_work_at =
cache_->last_policy_refresh_time() +
On 2011/02/07 16:00:09, jkummerow wrote:
> I think this should be s/cache_->last_policy_refresh_time()/base::Time::Now()/

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/device...
chrome/browser/policy/device_token_fetcher.cc:153: void
DeviceTokenFetcher::DoDelayedWork() {
On 2011/02/04 16:01:33, danno wrote:
> Please include state diagram in header documentation the states transitions.

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/device...
File chrome/browser/policy/device_token_fetcher.h (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/device...
chrome/browser/policy/device_token_fetcher.h:92: void DoDelayedWork();
On 2011/02/07 16:00:09, jkummerow wrote:
> On 2011/02/04 16:01:33, danno wrote:
> > What kind of work. Why? What's the motivation?
> 
> Seeing what this method does, I suggest we name it "RetryFetching()",
> "ExecuteRetryTask()" or something to that effect.

Done.

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/user_p...
File chrome/browser/policy/user_policy_controller.cc (right):

http://codereview.chromium.org/6312121/diff/4001/chrome/browser/policy/user_p...
chrome/browser/policy/user_policy_controller.cc:41: const
base::WeakPtr<UserPolicyController> provider_;
On 2011/02/04 16:01:33, danno wrote:
> controller

Done.

Powered by Google App Engine
This is Rietveld 408576698