1eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch// found in the LICENSE file.
4eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
5eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#ifndef REMOTING_PROTOCOL_PAIRING_REGISTRY_DELEGATE_LINUX_H_
6eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#define REMOTING_PROTOCOL_PAIRING_REGISTRY_DELEGATE_LINUX_H_
7eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
8eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "remoting/protocol/pairing_registry.h"
9eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
10eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#include "base/files/file_path.h"
11eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
12eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace base {
13eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass ListValue;
14eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace base
15eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
16eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochnamespace remoting {
17eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
18eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdochclass PairingRegistryDelegateLinux
19eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch    : public protocol::PairingRegistry::Delegate {
20eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch public:
21a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  PairingRegistryDelegateLinux();
22eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  virtual ~PairingRegistryDelegateLinux();
23eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
24eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // PairingRegistry::Delegate interface
25a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual scoped_ptr<base::ListValue> LoadAll() OVERRIDE;
26a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual bool DeleteAll() OVERRIDE;
27a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual protocol::PairingRegistry::Pairing Load(
28a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)      const std::string& client_id) OVERRIDE;
29a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual bool Save(const protocol::PairingRegistry::Pairing& pairing) OVERRIDE;
30a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  virtual bool Delete(const std::string& client_id) OVERRIDE;
31eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
32eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch private:
33eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  FRIEND_TEST_ALL_PREFIXES(PairingRegistryDelegateLinuxTest, SaveAndLoad);
34a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  FRIEND_TEST_ALL_PREFIXES(PairingRegistryDelegateLinuxTest, Stateless);
35eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
36a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // Return the path to the directory to use for loading and saving paired
37a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // clients.
38a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  base::FilePath GetRegistryPath();
39eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
40a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  // For testing purposes, set the path returned by |GetRegistryPath()|.
41a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  void SetRegistryPathForTesting(const base::FilePath& registry_path);
42eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
43a36e5920737c6adbddd3e43b760e5de8431db6e0Torne (Richard Coles)  base::FilePath registry_path_for_testing_;
44eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
45eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  DISALLOW_COPY_AND_ASSIGN(PairingRegistryDelegateLinux);
46eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch};
47eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
48eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch}  // namespace remoting
49eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
50eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch#endif  // REMOTING_PROTOCOL_PAIRING_REGISTRY_DELEGATE_LINUX_H_
51