diff options
author | pneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-22 21:15:58 +0000 |
---|---|---|
committer | pneubeck@chromium.org <pneubeck@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2013-07-22 21:15:58 +0000 |
commit | 37b6e97ee202fd412dea53d2716ea5a46b92f940 (patch) | |
tree | ed6ad4fbf527ff3de96006fe557f4cf6a348c776 /chromeos | |
parent | cfb6396ab5f0c8e26fb99e189423ff6793aa5475 (diff) | |
download | chromium_src-37b6e97ee202fd412dea53d2716ea5a46b92f940.zip chromium_src-37b6e97ee202fd412dea53d2716ea5a46b92f940.tar.gz chromium_src-37b6e97ee202fd412dea53d2716ea5a46b92f940.tar.bz2 |
Add function ManagedNetworkConfigurationHandler::FindPolicyByGUID.
This is required to switch network policy application from deprecated NetworkLibrary to ManagedNetworkConfigurationHandler.
BUG=261152
TBR=stevenjb@chromium.org
Review URL: https://chromiumcodereview.appspot.com/19722014
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@212970 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chromeos')
-rw-r--r-- | chromeos/network/managed_network_configuration_handler.cc | 30 | ||||
-rw-r--r-- | chromeos/network/managed_network_configuration_handler.h | 8 |
2 files changed, 38 insertions, 0 deletions
diff --git a/chromeos/network/managed_network_configuration_handler.cc b/chromeos/network/managed_network_configuration_handler.cc index d0ade7d..ace7060 100644 --- a/chromeos/network/managed_network_configuration_handler.cc +++ b/chromeos/network/managed_network_configuration_handler.cc @@ -694,6 +694,36 @@ void ManagedNetworkConfigurationHandler::OnProfileAdded( applicator->Run(); } +const base::DictionaryValue* +ManagedNetworkConfigurationHandler::FindPolicyByGUID( + const std::string userhash, + const std::string& guid, + onc::ONCSource* onc_source) const { + *onc_source = onc::ONC_SOURCE_NONE; + + if (!userhash.empty()) { + const GuidToPolicyMap* user_policies = GetPoliciesForUser(userhash); + if (user_policies) { + GuidToPolicyMap::const_iterator found = user_policies->find(guid); + if (found != user_policies->end()) { + *onc_source = onc::ONC_SOURCE_USER_POLICY; + return found->second; + } + } + } + + const GuidToPolicyMap* device_policies = GetPoliciesForUser(std::string()); + if (device_policies) { + GuidToPolicyMap::const_iterator found = device_policies->find(guid); + if (found != device_policies->end()) { + *onc_source = onc::ONC_SOURCE_DEVICE_POLICY; + return found->second; + } + } + + return NULL; +} + void ManagedNetworkConfigurationHandler::OnProfileRemoved( const NetworkProfile& profile) { // Nothing to do in this case. diff --git a/chromeos/network/managed_network_configuration_handler.h b/chromeos/network/managed_network_configuration_handler.h index fb8fc73..0ac1e6e 100644 --- a/chromeos/network/managed_network_configuration_handler.h +++ b/chromeos/network/managed_network_configuration_handler.h @@ -124,6 +124,14 @@ class CHROMEOS_EXPORT ManagedNetworkConfigurationHandler const std::string& userhash, const base::ListValue& network_configs_onc); + // Returns the user policy for user |userhash| or device policy, which has + // |guid|. If |userhash| is empty, only looks for a device policy. If such + // doesn't exist, returns NULL. Sets |onc_source| accordingly. + const base::DictionaryValue* FindPolicyByGUID( + const std::string userhash, + const std::string& guid, + onc::ONCSource* onc_source) const; + // NetworkProfileObserver overrides virtual void OnProfileAdded(const NetworkProfile& profile) OVERRIDE; virtual void OnProfileRemoved(const NetworkProfile& profile) OVERRIDE; |