15d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
25d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
35d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// found in the LICENSE file.
45d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
55d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#ifndef CHROME_BROWSER_POLICY_CHROME_BROWSER_POLICY_CONNECTOR_H_
65d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#define CHROME_BROWSER_POLICY_CHROME_BROWSER_POLICY_CONNECTOR_H_
75d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
85d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/basictypes.h"
95d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "base/memory/ref_counted.h"
105d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#include "components/policy/core/browser/browser_policy_connector.h"
115d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
125d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class PrefService;
135d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
145d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace net {
155d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class URLRequestContextGetter;
165d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}
175d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
185d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)namespace policy {
195d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
205d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ConfigurationPolicyProvider;
215d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
225d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// Extends BrowserPolicyConnector with the setup shared among the desktop
235d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)// implementations and Android.
245d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)class ChromeBrowserPolicyConnector : public BrowserPolicyConnector {
255d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) public:
265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // Service initialization delay time in millisecond on startup. (So that
275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  // displaying Chrome's GUI does not get delayed.)
285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu  static const int64 kServiceInitializationStartupDelay = 5000;
295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu
305d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Builds an uninitialized ChromeBrowserPolicyConnector, suitable for testing.
315d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  // Init() should be called to create and start the policy machinery.
325d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  ChromeBrowserPolicyConnector();
335d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
345d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual ~ChromeBrowserPolicyConnector();
355d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
365d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  virtual void Init(
375d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      PrefService* local_state,
385d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)      scoped_refptr<net::URLRequestContextGetter> request_context) OVERRIDE;
395d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
405d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles) private:
415d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  ConfigurationPolicyProvider* CreatePlatformProvider();
425d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
43010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // Appends the --enable-web-based-signin flag if the
44010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // enable-web-based-signin policy is enabled.
45010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // TODO(guohui): Needs to move this to a more proper place and also to handle
46010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  // dynamic refresh.
47010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles) void AppendExtraFlagPerPolicy();
48010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
495d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ChromeBrowserPolicyConnector);
505d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)};
515d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
525d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)}  // namespace policy
535d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)
545d1f7b1de12d16ceb2c938c56701a3e8bfa558f7Torne (Richard Coles)#endif  // CHROME_BROWSER_POLICY_CHROME_BROWSER_POLICY_CONNECTOR_H_
55