| Index: chrome/browser/chromeos/policy/cloud_external_data_manager_base.cc
 | 
| diff --git a/chrome/browser/chromeos/policy/cloud_external_data_manager_base.cc b/chrome/browser/chromeos/policy/cloud_external_data_manager_base.cc
 | 
| index 9007067f5314bc44617659141dc7934d01bac6e1..2b0cac252d7db81a9f6ab19887b7c3f1582a0abc 100644
 | 
| --- a/chrome/browser/chromeos/policy/cloud_external_data_manager_base.cc
 | 
| +++ b/chrome/browser/chromeos/policy/cloud_external_data_manager_base.cc
 | 
| @@ -10,6 +10,7 @@
 | 
|  
 | 
|  #include "base/bind.h"
 | 
|  #include "base/bind_helpers.h"
 | 
| +#include "base/callback.h"
 | 
|  #include "base/location.h"
 | 
|  #include "base/logging.h"
 | 
|  #include "base/message_loop/message_loop_proxy.h"
 | 
| @@ -23,7 +24,6 @@
 | 
|  #include "chrome/browser/policy/external_data_fetcher.h"
 | 
|  #include "chrome/browser/policy/policy_map.h"
 | 
|  #include "net/url_request/url_request_context_getter.h"
 | 
| -#include "policy/policy_constants.h"
 | 
|  
 | 
|  namespace policy {
 | 
|  
 | 
| @@ -42,11 +42,11 @@ int max_external_data_size_for_testing = 0;
 | 
|  // verification, caching and retrieval.
 | 
|  class CloudExternalDataManagerBase::Backend {
 | 
|   public:
 | 
| -  // The |policy_definitions| are used to determine the maximum size that the
 | 
| +  // |get_policy_details| is used to determine the maximum size that the
 | 
|    // data referenced by each policy can have. This class can be instantiated on
 | 
|    // any thread but from then on, may be accessed via the |task_runner_| only.
 | 
|    // All FetchCallbacks will be invoked via |callback_task_runner|.
 | 
| -  Backend(const PolicyDefinitionList* policy_definitions,
 | 
| +  Backend(const GetChromePolicyDetailsCallback& get_policy_details,
 | 
|            scoped_refptr<base::SequencedTaskRunner> task_runner,
 | 
|            scoped_refptr<base::SequencedTaskRunner> callback_task_runner);
 | 
|  
 | 
| @@ -101,8 +101,7 @@ class CloudExternalDataManagerBase::Backend {
 | 
|    // Map from policy names to the lists of callbacks defined above.
 | 
|    typedef std::map<std::string, FetchCallbackList> FetchCallbackMap;
 | 
|  
 | 
| -  // Looks up the maximum size that the data referenced by |policy| can have in
 | 
| -  // |policy_definitions_|.
 | 
| +  // Looks up the maximum size that the data referenced by |policy| can have.
 | 
|    size_t GetMaxExternalDataSize(const std::string& policy) const;
 | 
|  
 | 
|    // Invokes |callback| via the |callback_task_runner_|, passing |data| as a
 | 
| @@ -116,7 +115,7 @@ class CloudExternalDataManagerBase::Backend {
 | 
|  
 | 
|    // Used to determine the maximum size that the data referenced by each policy
 | 
|    // can have.
 | 
| -  const PolicyDefinitionList* policy_definitions_;
 | 
| +  GetChromePolicyDetailsCallback get_policy_details_;
 | 
|  
 | 
|    scoped_refptr<base::SequencedTaskRunner> task_runner_;
 | 
|    scoped_refptr<base::SequencedTaskRunner> callback_task_runner_;
 | 
| @@ -147,10 +146,10 @@ class CloudExternalDataManagerBase::Backend {
 | 
|  };
 | 
|  
 | 
|  CloudExternalDataManagerBase::Backend::Backend(
 | 
| -    const PolicyDefinitionList* policy_definitions,
 | 
| +    const GetChromePolicyDetailsCallback& get_policy_details,
 | 
|      scoped_refptr<base::SequencedTaskRunner> task_runner,
 | 
|      scoped_refptr<base::SequencedTaskRunner> callback_task_runner)
 | 
| -    : policy_definitions_(policy_definitions),
 | 
| +    : get_policy_details_(get_policy_details),
 | 
|        task_runner_(task_runner),
 | 
|        callback_task_runner_(callback_task_runner),
 | 
|        metadata_set_(false) {
 | 
| @@ -301,14 +300,12 @@ size_t CloudExternalDataManagerBase::Backend::GetMaxExternalDataSize(
 | 
|      return max_external_data_size_for_testing;
 | 
|  
 | 
|    // Look up the maximum size that the data referenced by |policy| can have in
 | 
| -  // policy_definitions_, which is constructed from the information in
 | 
| +  // get_policy_details, which is constructed from the information in
 | 
|    // policy_templates.json, allowing the maximum data size to be specified as
 | 
|    // part of the policy definition.
 | 
| -  for (const PolicyDefinitionList::Entry* entry = policy_definitions_->begin;
 | 
| -       entry != policy_definitions_->end; ++entry) {
 | 
| -    if (entry->name == policy)
 | 
| -      return entry->max_external_data_size;
 | 
| -  }
 | 
| +  const PolicyDetails* details = get_policy_details_.Run(policy);
 | 
| +  if (details)
 | 
| +    return details->max_external_data_size;
 | 
|    NOTREACHED();
 | 
|    return 0;
 | 
|  }
 | 
| @@ -339,12 +336,12 @@ void CloudExternalDataManagerBase::Backend::StartDownload(
 | 
|  }
 | 
|  
 | 
|  CloudExternalDataManagerBase::CloudExternalDataManagerBase(
 | 
| -    const PolicyDefinitionList* policy_definitions,
 | 
| +    const GetChromePolicyDetailsCallback& get_policy_details,
 | 
|      scoped_refptr<base::SequencedTaskRunner> backend_task_runner,
 | 
|      scoped_refptr<base::SequencedTaskRunner> io_task_runner)
 | 
|      : backend_task_runner_(backend_task_runner),
 | 
|        io_task_runner_(io_task_runner),
 | 
| -      backend_(new Backend(policy_definitions,
 | 
| +      backend_(new Backend(get_policy_details,
 | 
|                             backend_task_runner_,
 | 
|                             base::MessageLoopProxy::current())) {
 | 
|  }
 | 
| 
 |