1// Copyright 2014 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef COMPONENTS_COPRESENCE_PUBLIC_COPRESENCE_DELEGATE_H_
6#define COMPONENTS_COPRESENCE_PUBLIC_COPRESENCE_DELEGATE_H_
7
8#include <string>
9#include <vector>
10
11#include "base/callback_forward.h"
12
13namespace net {
14class URLRequestContextGetter;
15}
16
17namespace copresence {
18
19class Message;
20class WhispernetClient;
21
22enum CopresenceStatus { SUCCESS, FAIL };
23
24// Callback type to send a status.
25typedef base::Callback<void(CopresenceStatus)> StatusCallback;
26
27// A delegate interface for users of Copresence.
28class CopresenceDelegate {
29 public:
30  // This method will be called when we have subscribed messages that need to
31  // be sent to their respective apps.
32  virtual void HandleMessages(
33      const std::string& app_id,
34      const std::string& subscription_id,
35      const std::vector<Message>& message) = 0;
36
37  virtual net::URLRequestContextGetter* GetRequestContext() const = 0;
38
39  virtual const std::string GetPlatformVersionString() const = 0;
40
41  virtual const std::string GetAPIKey() const = 0;
42
43  virtual WhispernetClient* GetWhispernetClient() = 0;
44};
45
46}  // namespace copresence
47
48#endif  // COMPONENTS_COPRESENCE_PUBLIC_COPRESENCE_DELEGATE_H_
49