1f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
2f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// found in the LICENSE file.
4f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
5f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#ifndef CHROME_BROWSER_CHROMEOS_POLICY_CLOUD_EXTERNAL_DATA_MANAGER_BASE_TEST_UTIL_H_
6f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#define CHROME_BROWSER_CHROMEOS_POLICY_CLOUD_EXTERNAL_DATA_MANAGER_BASE_TEST_UTIL_H_
7f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
8f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include <string>
9f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/callback_forward.h"
11f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
12f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
13f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace base {
14f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class DictionaryValue;
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}
16f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
17f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace policy {
18f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
19f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class CloudPolicyCore;
20f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
21f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)namespace test {
22f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
23f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Passes |data| to |destination| and invokes |done_callback| to indicate that
24f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// the |data| has been retrieved.
25f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void ExternalDataFetchCallback(scoped_ptr<std::string>* destination,
26f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                               const base::Closure& done_callback,
27f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                               scoped_ptr<std::string> data);
28f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
29f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// Constructs a value that points a policy referencing external data at |url|
30f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// and sets the expected hash of the external data to that of |data|.
31f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)scoped_ptr<base::DictionaryValue> ConstructExternalDataReference(
32f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    const std::string& url,
33f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)    const std::string& data);
34f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
35f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// TODO(bartfab): Makes an arbitrary |policy| in |core| reference external data
36f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// as specified in |metadata|. This is only done because there are no policies
37f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// that reference external data yet. Once the first such policy is added, it
38f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// will be sufficient to set its value to |metadata| and this method should be
39f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)// removed.
40f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)void SetExternalDataReference(CloudPolicyCore* core,
41f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                              const std::string& policy,
42f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)                              scoped_ptr<base::DictionaryValue> metadata);
43f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
44f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace test
45f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)}  // namespace policy
46f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)
47f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#endif  // CHROME_BROWSER_CHROMEOS_POLICY_CLOUD_EXTERNAL_DATA_MANAGER_BASE_TEST_UTIL_H_
48