| Index: remoting/protocol/pairing_registry.h
|
| diff --git a/remoting/protocol/pairing_registry.h b/remoting/protocol/pairing_registry.h
|
| index 354452438a046f7d7b7d5a29415ceb370aa1a961..0938d4e4ee7fbe5b18ea3c457c725b54363b70b5 100644
|
| --- a/remoting/protocol/pairing_registry.h
|
| +++ b/remoting/protocol/pairing_registry.h
|
| @@ -17,9 +17,6 @@
|
| namespace remoting {
|
| namespace protocol {
|
|
|
| -// TODO(jamiewalch): This class is little more than a wrapper around the
|
| -// Pairing and Delegate classes. Refactor it away.
|
| -
|
| // PairingRegistry holds information about paired clients to support
|
| // PIN-less authentication. For each paired client, the registry holds
|
| // the following information:
|
| @@ -62,62 +59,63 @@ class PairingRegistry : public base::RefCountedThreadSafe<PairingRegistry>,
|
| typedef std::map<std::string, Pairing> PairedClients;
|
|
|
| // Delegate callbacks.
|
| - typedef base::Callback<void(Pairing client_information)> GetPairingCallback;
|
| - typedef base::Callback<void(bool success)> AddPairingCallback;
|
| + typedef base::Callback<void(const std::string& pairings_json)> LoadCallback;
|
| + typedef base::Callback<void(bool success)> SaveCallback;
|
| + typedef base::Callback<void(Pairing pariring)> GetPairingCallback;
|
|
|
| // Interface representing the persistent storage back-end.
|
| class Delegate {
|
| public:
|
| virtual ~Delegate() {}
|
|
|
| - // Add pairing information to persistent storage. If a non-NULL callback
|
| - // is provided, invoke it on completion to indicate success or failure.
|
| - // Must not block.
|
| - //
|
| - // TODO(jamiewalch): Plumb the callback into the RequestPairing flow so
|
| - // that the client isn't sent the pairing information until it has been
|
| - // saved.
|
| - virtual void AddPairing(const Pairing& new_paired_client,
|
| - const AddPairingCallback& callback) = 0;
|
| -
|
| - // Retrieve the Pairing for the specified client id. If none is found,
|
| - // invoke the callback with a default pairing. Must not block.
|
| - virtual void GetPairing(const std::string& client_id,
|
| - const GetPairingCallback& callback) = 0;
|
| + // Save JSON-encoded pairing information to persistent storage. If
|
| + // a non-NULL callback is provided, invoke it on completion to
|
| + // indicate success or failure. Must not block.
|
| + virtual void Save(const std::string& pairings_json,
|
| + const SaveCallback& callback) = 0;
|
| +
|
| + // Retrieve the JSON-encoded pairing information from persistent
|
| + // storage. Must not block.
|
| + virtual void Load(const LoadCallback& callback) = 0;
|
| };
|
|
|
| explicit PairingRegistry(scoped_ptr<Delegate> delegate);
|
|
|
| - // Create a pairing for a new client and save it to disk.
|
| + // Creates a pairing for a new client and saves it to disk.
|
| + //
|
| + // TODO(jamiewalch): Plumb the Save callback into the RequestPairing flow
|
| + // so that the client isn't sent the pairing information until it has been
|
| + // saved.
|
| Pairing CreatePairing(const std::string& client_name);
|
|
|
| - // Get the pairing for the specified client id. See the corresponding
|
| - // Delegate method for details.
|
| + // Gets the pairing for the specified client id. See the corresponding
|
| + // Delegate method for details. If none is found, the callback is invoked
|
| + // with an invalid Pairing.
|
| void GetPairing(const std::string& client_id,
|
| const GetPairingCallback& callback);
|
|
|
| private:
|
| + FRIEND_TEST_ALL_PREFIXES(PairingRegistryTest, AddPairing);
|
| + friend class NegotiatingAuthenticatorTest;
|
| friend class base::RefCountedThreadSafe<PairingRegistry>;
|
|
|
| virtual ~PairingRegistry();
|
|
|
| + void AddPairing(const Pairing& pairing);;
|
| + void MergePairingAndSave(const Pairing& pairing,
|
| + const std::string& pairings_json);
|
| + void DoGetPairing(const std::string& client_id,
|
| + const GetPairingCallback& callback,
|
| + const std::string& pairings_json);
|
| +
|
| + static PairedClients DecodeJson(const std::string& pairings_json);
|
| + static std::string EncodeJson(const PairedClients& clients);
|
| +
|
| scoped_ptr<Delegate> delegate_;
|
|
|
| DISALLOW_COPY_AND_ASSIGN(PairingRegistry);
|
| };
|
|
|
| -// Temporary delegate that just logs NOTIMPLEMENTED for Load/Save.
|
| -// TODO(jamiewalch): Delete once Delegates are implemented for all platforms.
|
| -class NotImplementedPairingRegistryDelegate : public PairingRegistry::Delegate {
|
| - public:
|
| - virtual void AddPairing(
|
| - const PairingRegistry::Pairing& paired_clients,
|
| - const PairingRegistry::AddPairingCallback& callback) OVERRIDE;
|
| - virtual void GetPairing(
|
| - const std::string& client_id,
|
| - const PairingRegistry::GetPairingCallback& callback) OVERRIDE;
|
| -};
|
| -
|
| } // namespace protocol
|
| } // namespace remoting
|
|
|
|
|